|
This class contains a statechart and provides the interfaces to distributed components. More...
#include <ArmarXCore/statechart/StatechartContext.h>
Public Member Functions | |
PropertyDefinitionsPtr | createPropertyDefinitions () override |
ChannelRefPtr | getChannelRef (const std::string &observerName, const std::string &channelName) override |
DatafieldRefPtr | getDatafieldRef (ChannelRefPtr channelRef, const std::string &datafieldName) override |
DatafieldRefPtr | getDatafieldRef (const DataFieldIdentifier &datafieldIdentifier) override |
VariantBasePtr | getDataFromObserver (const DataFieldIdentifierBasePtr &identifier) override |
TimedVariantBaseList | getDataListFromObserver (std::string observerName, const DataFieldIdentifierBaseList &identifierList) override |
virtual void | onConnectStatechart ()=0 |
onConnectStatechart is called before armarx::StatechartContext::startStatechart() and after armarx::StatechartContext::onConnectStatechartContext() More... | |
virtual void | onExitStatechart () |
onExitStatechart can be implemented by subclasses More... | |
virtual void | onInitStatechart ()=0 |
onInitStatechart this method is called when the statechart is started. More... | |
void | setAutoEnterToplevelState (bool autoEnter) |
setAutoStartStatechart controls whether the toplevelstate is automatically entered, when the statechart manager is started, More... | |
void | setReportingTopic (std::string reportingTopic) |
bool | setToplevelState (const armarx::StatePtr &newToplevelState, StringVariantContainerBaseMap startParameters=StringVariantContainerBaseMap()) |
setToplevelState initializes newToplevelState with the current StatechartContext and the current StatechartContext::statechartManager and sets newToplevelState as top-level state on the current StatechartContext::statechartManager. More... | |
void | startStatechart () |
startStatechart actives both, the toplevel startchart stored in the variable statechart and the StatechartManager for handling eventprocessing. More... | |
StatechartContext () | |
~StatechartContext () override | |
Public Member Functions inherited from Component | |
virtual void | componentPropertiesUpdated (const std::set< std::string > &changedProperties) |
Implement this function if you would like to react to changes in the properties. More... | |
void | forceComponentCreatedByComponentCreateFunc () |
forces the flag to be set to true that the object instance was created by the Component::create function More... | |
std::vector< PropertyUserPtr > | getAdditionalPropertyUsers () const |
template<typename PropertyType > | |
Property< PropertyType > | getProperty (const std::string &name) |
template<typename PropertyType > | |
Property< PropertyType > | getProperty (const std::string &name) const |
template<class T > | |
void | getProperty (std::atomic< T > &val, const std::string &name) const |
template<class T > | |
void | getProperty (T &val, const std::string &name) const |
template<class ProxyType > | |
ProxyType | getProxyFromProperty (const std::string &propertyName, bool addToDependencies=false, const std::string &endpoints="", bool throwOnProxyError=true) |
Get a proxy whose name is specified by the given property. More... | |
template<class ProxyType > | |
void | getProxyFromProperty (ProxyType &proxy, const std::string &propertyName, bool addToDependencies=false, const std::string &endpoints="", bool throwOnProxyError=true) |
template<class TopicProxyType > | |
TopicProxyType | getTopicFromProperty (const std::string &propertyName) |
Get a topic proxy whose name is specified by the given property. More... | |
template<class TopicProxyType > | |
void | getTopicFromProperty (TopicProxyType &top, const std::string &propertyName) |
void | initializeProperties (const std::string &configName, Ice::PropertiesPtr const &properties, const std::string &configDomain) |
initializes the properties of this component. More... | |
void | injectPropertyDefinitions (PropertyDefinitionsPtr &props) override |
void | offeringTopicFromProperty (const std::string &propertyName) |
Offer a topic whose name is specified by the given property. More... | |
virtual void | preOnConnectComponent () override |
virtual void | preOnInitComponent () override |
bool | usingProxyFromProperty (const std::string &propertyName, const std::string &endpoints="") |
Use a proxy whose name is specified by the given property. More... | |
void | usingTopicFromProperty (const std::string &propertyName, bool orderedPublishing=false) |
Use a topic whose name is specified by the given property. More... | |
Public Member Functions inherited from ManagedIceObject | |
void | enableProfiler (bool enable) |
setProfiler allows setting ManagedIceObject::profiler to a new instance (if the new instance is actually not a null pointer) More... | |
std::string | generateSubObjectName (const std::string &subObjectName) |
Generates a unique name for a sub object from a general name. More... | |
ArmarXManagerPtr | getArmarXManager () const |
Returns the ArmarX manager used to add and remove components. More... | |
ManagedIceObjectConnectivity | getConnectivity () const |
Retrieve connectivity of the object (topcis as well as proxies) More... | |
virtual std::string | getDefaultName () const =0 |
Retrieve default name of component. More... | |
IceManagerPtr | getIceManager () const |
Returns the IceManager. More... | |
VariantBasePtr | getMetaInfo (const std::string &id) |
StringVariantBaseMap | getMetaInfoMap () const |
std::string | getName () const |
Retrieve name of object. More... | |
Ice::ObjectAdapterPtr | getObjectAdapter () const |
Returns object's Ice adapter. More... | |
ArmarXObjectSchedulerPtr | getObjectScheduler () const |
PeriodicTaskPtr | getPeriodicTask (const std::string &name) |
Profiler::ProfilerPtr | getProfiler () const |
getProfiler returns an instance of armarx::Profiler More... | |
template<class ProxyTarg , class... Args> | |
void | getProxy (const char *name, IceInternal::ProxyHandle< ProxyTarg > &proxy, Args &&...args) |
template<class ProxyType > | |
ProxyType | getProxy (const std::string &name, bool addToDependencies=false, const std::string &endpoints="", bool throwOnProxyError=true) |
Retrieves a proxy object. More... | |
template<class ProxyTarg , class... Args> | |
void | getProxy (const std::string &name, IceInternal::ProxyHandle< ProxyTarg > &proxy, Args &&...args) |
template<class ProxyTarg , class... Args> | |
void | getProxy (IceInternal::ProxyHandle< ProxyTarg > &proxy, const char *name, Args &&...args) |
template<class ProxyTarg , class... Args> | |
void | getProxy (IceInternal::ProxyHandle< ProxyTarg > &proxy, const std::string &name, Args &&...args) |
Assigns a proxy to proxy . More... | |
Ice::ObjectPrx | getProxy (long timeoutMs=0, bool waitForScheduler=true) const |
Returns the proxy of this object (optionally it waits for the proxy) More... | |
template<class Prx > | |
Prx | getProxy (long timeoutMs=0, bool waitForScheduler=true) const |
template<class ProxyType > | |
void | getProxy (ProxyType &proxy, const char *name, bool addToDependencies=false, const std::string &endpoints="", bool throwOnProxyError=true) |
Overload to allow using string literals as name (solve ambiguous overload). More... | |
template<class Prx > | |
void | getProxy (Prx &prx, long timeoutMs=0, bool waitForScheduler=true) const |
int | getState () const |
Retrieve current state of the ManagedIceObject. More... | |
template<class TopicProxyType > | |
TopicProxyType | getTopic (const std::string &name) |
Returns a proxy of the specified topic. More... | |
template<class TopicProxyType > | |
void | getTopic (TopicProxyType &topicProxy, const std::string &name) |
Assigns a proxy of the specified topic to topicProxy . More... | |
std::vector< std::string > | getUnresolvedDependencies () const |
returns the names of all unresolved dependencies More... | |
ManagedIceObject (ManagedIceObject const &other) | |
void | offeringTopic (const std::string &name) |
Registers a topic for retrival after initialization. More... | |
void | preambleGetTopic (std::string const &name) |
void | setMetaInfo (const std::string &id, const VariantBasePtr &value) |
Allows to set meta information that can be queried live via Ice interface on the ArmarXManager. More... | |
void | startPeriodicTask (const std::string &uniqueName, std::function< void(void)> f, int periodMs, bool assureMeanInterval=false, bool forceSystemTime=true) |
bool | stopPeriodicTask (const std::string &name) |
bool | unsubscribeFromTopic (const std::string &name) |
Unsubscribe from a topic. More... | |
bool | usingProxy (const std::string &name, const std::string &endpoints="") |
Registers a proxy for retrieval after initialization and adds it to the dependency list. More... | |
void | usingTopic (const std::string &name, bool orderedPublishing=false) |
Registers a proxy for subscription after initialization. More... | |
void | waitForObjectScheduler () |
Waits until the ObjectScheduler could resolve all dependencies. More... | |
void | waitForProxy (std::string const &name, bool addToDependencies) |
Public Member Functions inherited from Logging | |
SpamFilterDataPtr | deactivateSpam (float deactivationDurationSec=10.0f, const std::string &identifier="", bool deactivate=true) const |
disables the logging for the current line for the given amount of seconds. More... | |
MessageTypeT | getEffectiveLoggingLevel () const |
Logging () | |
void | setLocalMinimumLoggingLevel (MessageTypeT level) |
With setLocalMinimumLoggingLevel the minimum verbosity-level of log-messages can be set. More... | |
void | setTag (const LogTag &tag) |
void | setTag (const std::string &tagName) |
virtual | ~Logging () |
Public Member Functions inherited from PropertyUser | |
std::vector< std::string > | getComponentProxyNames () |
Ice::PropertiesPtr | getIceProperties () const |
Returns the set of Ice properties. More... | |
template<typename PropertyType > | |
Property< PropertyType > | getProperty (const std::string &name) |
Property creation and retrieval. More... | |
template<typename PropertyType > | |
Property< PropertyType > | getProperty (const std::string &name) const |
Hack to allow using getProperty in const -modified methods. More... | |
template<class T > | |
void | getProperty (std::atomic< T > &val, const std::string &name) const |
template<class T > | |
void | getProperty (T &val, const std::string &name) const |
template<class T > | |
std::vector< T > | getPropertyAsCSV (const std::string &name, const std::string &splitBy=",;", bool trimElements=true, bool removeEmptyElements=true) |
template<class ContainerT > | |
void | getPropertyAsCSV (ContainerT &val, const std::string &name, const std::string &splitBy=",;", bool trimElements=true, bool removeEmptyElements=true) |
PropertyDefinitionsPtr | getPropertyDefinitions () |
Returns the component's property definition container. More... | |
std::vector< std::string > | getSubscribedTopicNames () |
std::vector< std::string > | getTopicProxyNames () |
bool | hasProperty (const std::string &name) |
PropertyUser () | |
virtual void | setIceProperties (Ice::PropertiesPtr properties) |
Sets the Ice properties. More... | |
bool | tryAddProperty (const std::string &propertyName, const std::string &value) |
virtual void | updateIceProperties (const std::map< std::string, std::string > &changes) |
void | updateProperties () |
void | updateProxies (IceManagerPtr) |
~PropertyUser () override | |
Public Member Functions inherited from StatechartContextInterface | |
virtual | ~StatechartContextInterface ()=default |
Public Attributes | |
ConditionHandlerInterfacePrx | conditionHandlerPrx |
StatechartEventDistributorPtr | eventDistributor |
The EventListenerInterface instance, that receives events from observers and redirects them to the correct states. More... | |
std::unordered_map< std::string, ObserverInterfacePrx > | observerMap |
StatechartManagerPtr | statechartManager |
SystemObserverInterfacePrx | systemObserverPrx |
Protected Member Functions | |
virtual void | onConnectStatechartContext () |
onConnectStatechartContext can be implemented by subclasses More... | |
virtual void | onInitStatechartContext () |
onInitStatechartonInitStatechartContext can be implemented by subclasses More... | |
Protected Member Functions inherited from Component | |
void | addPropertyUser (const PropertyUserPtr &subPropertyUser) |
Add additional property users here that should show up in the application help text. More... | |
Component () | |
Protected default constructor. Used for virtual inheritance. Use createManagedIceObject() instead. More... | |
std::string | getConfigDomain () |
Retrieve config domain for this component as set in constructor. More... | |
std::string | getConfigIdentifier () |
Retrieve config identifier for this component as set in constructor. More... | |
std::string | getConfigName () |
Retrieve config name for this component as set in constructor. More... | |
virtual void | icePropertiesInitialized () |
Protected Member Functions inherited from ManagedIceObject | |
template<class PluginT , class... ParamsT> | |
PluginT * | addPlugin (const std::string prefix="", ParamsT &&...params) |
template<class PluginT , class... ParamsT> | |
void | addPlugin (PluginT *&targ, const std::string prefix="", ParamsT &&...params) |
template<class PluginT , class... ParamsT> | |
void | addPlugin (std::experimental::observer_ptr< PluginT > &targ, const std::string prefix="", ParamsT &&...params) |
Ice::CommunicatorPtr | getCommunicator () const |
std::unique_ptr< ManagedIceObjectPlugin > & | getPluginPointer (std::type_info const &type, std::string const &prefix) |
ManagedIceObject () | |
Protected default constructor. More... | |
virtual void | postOnConnectComponent () |
virtual void | postOnDisconnectComponent () |
virtual void | postOnExitComponent () |
virtual void | postOnInitComponent () |
virtual void | preOnDisconnectComponent () |
virtual void | preOnExitComponent () |
bool | removeProxyDependency (const std::string &name) |
This function removes the dependency of this object on the in parameter name specified object. More... | |
void | setName (std::string name) |
Override name of well-known object. More... | |
void | terminate () |
Initiates termination of this IceManagedObject. More... | |
~ManagedIceObject () override | |
Protected Member Functions inherited from Logging | |
bool | checkLogLevel (MessageTypeT level) const |
const LogSenderPtr & | getLogSender () const |
Retrieve log sender. More... | |
LogSenderPtr | loghelper (const char *file, int line, const char *function) const |
Protected Attributes | |
bool | autoEnterToplevelState |
std::string | reportingTopic |
Profiler::ProfilerPtr | stateReporter |
Protected Attributes inherited from Logging | |
MessageTypeT | minimumLoggingLevel |
SpamFilterDataPtr | spamFilter |
LogTag | tag |
Additional Inherited Members | |
Public Types inherited from ManagedIceObject | |
using | PeriodicTaskPtr = IceUtil::Handle< SimplePeriodicTask< std::function< void(void)> >> |
Static Public Member Functions inherited from Component | |
template<class T , class TPtr = IceInternal::Handle<T>> | |
static TPtr | create (Ice::PropertiesPtr properties=Ice::createProperties(), const std::string &configName="", const std::string &configDomain="ArmarX") |
Factory method for a component. More... | |
Static Public Member Functions inherited from ManagedIceObject | |
static std::string | generateSubObjectName (const std::string &superObjectName, const std::string &subObjectName) |
Generates a unique name for a sub object from a general name and unique name. More... | |
static std::string | GetObjectStateAsString (int state) |
Static Public Attributes inherited from ManagedIceObject | |
static const ManagedIceObjectPtr | NullPtr |
A nullptr to be used when a const ref to a nullptr is required. More... | |
This class contains a statechart and provides the interfaces to distributed components.
This class inherits from armarx::Component and should be the entry point for applications containing a statechart. This class contains all the proxies to distributed components like the ConditionHandler or the KinematicUnit.
This class should only be created once per application and the top-level state of this StatechartContext should be set via armarx::StatechartContext::setToplevelState().
The StatechartContext is available from the State-implementations with StateBase::getContext<StatechartContextType>().
If a statechart needs other proxies to Ice objects (
Definition at line 89 of file StatechartContext.h.
|
override |
Definition at line 55 of file StatechartContext.cpp.
|
overridevirtual |
Reimplemented from Component.
Reimplemented in PlatformContext, RobotStatechartContext, RobotControl, and FindAndGraspObjectContext.
Definition at line 60 of file StatechartContext.cpp.
|
overridevirtual |
Implements StatechartContextInterface.
Definition at line 142 of file StatechartContext.cpp.
|
overridevirtual |
Implements StatechartContextInterface.
Definition at line 175 of file StatechartContext.cpp.
|
overridevirtual |
Implements StatechartContextInterface.
Definition at line 169 of file StatechartContext.cpp.
|
overridevirtual |
Implements StatechartContextInterface.
Definition at line 132 of file StatechartContext.cpp.
|
overridevirtual |
Implements StatechartContextInterface.
Definition at line 122 of file StatechartContext.cpp.
|
pure virtual |
onConnectStatechart is called before armarx::StatechartContext::startStatechart() and after armarx::StatechartContext::onConnectStatechartContext()
Implemented in RemoteStateOfferer< ContextType >, RemoteStateOfferer< FindAndGraspObjectContext >, RemoteStateOfferer< StatechartContext >, RemoteStateOfferer< PlatformContext >, StatechartPerformanceTest, TimeoutExample, ClientState, StateParameterExample, and InstallConditionExample.
|
inlineprotectedvirtual |
onConnectStatechartContext can be implemented by subclasses
Override this method to retrieve the proxies and topics specified in armarx::StatechartContext::onInitStatechart() via armarx::Component::getProxy() and armarx::Component::getTopic().
This method is called by armarx::StatechartContext::onConnectComponent().
Reimplemented in CoupledInteractionGroupStatechartContext, PlatformContext, BringObjectGroupStatechartContext, RobotStatechartContext, MotionControlGroupStatechartContext, HandGroupStatechartContext, TrackingGroupStatechartContext, FindAndGraspObjectContext, and PickAndPlaceGroupStatechartContext.
Definition at line 119 of file StatechartContext.h.
|
inlinevirtual |
onExitStatechart can be implemented by subclasses
Override this method to perform cleanup tasks when the statechart is left.
Reimplemented in RemoteStateOfferer< ContextType >, RemoteStateOfferer< FindAndGraspObjectContext >, RemoteStateOfferer< StatechartContext >, RemoteStateOfferer< PlatformContext >, and StatechartPerformanceTest.
Definition at line 177 of file StatechartContext.h.
|
pure virtual |
onInitStatechart this method is called when the statechart is started.
Implemented in RemoteStateOfferer< ContextType >, RemoteStateOfferer< FindAndGraspObjectContext >, RemoteStateOfferer< StatechartContext >, RemoteStateOfferer< PlatformContext >, StatechartPerformanceTest, TimeoutExample, ClientState, StateParameterExample, and InstallConditionExample.
|
inlineprotectedvirtual |
onInitStatechartonInitStatechartContext can be implemented by subclasses
Override this method to specify required proxies and topics via armarx::Component::usingProxy(), armarx::Component::usingTopic() and armarx::Component::offeringTopic().
This method is calle by armarx::StatechartContext::onInitComponent().
Reimplemented in CoupledInteractionGroupStatechartContext, BringObjectGroupStatechartContext, RobotStatechartContext, MotionControlGroupStatechartContext, PlatformContext, HandGroupStatechartContext, TrackingGroupStatechartContext, PickAndPlaceGroupStatechartContext, and FindAndGraspObjectContext.
Definition at line 109 of file StatechartContext.h.
void setAutoEnterToplevelState | ( | bool | autoEnter | ) |
setAutoStartStatechart controls whether the toplevelstate is automatically entered, when the statechart manager is started,
autostart |
Definition at line 187 of file StatechartContext.cpp.
void setReportingTopic | ( | std::string | reportingTopic | ) |
Definition at line 192 of file StatechartContext.cpp.
bool setToplevelState | ( | const armarx::StatePtr & | newToplevelState, |
StringVariantContainerBaseMap | startParameters = StringVariantContainerBaseMap() |
||
) |
setToplevelState initializes newToplevelState
with the current StatechartContext and the current StatechartContext::statechartManager and sets newToplevelState
as top-level state on the current StatechartContext::statechartManager.
newToplevelState | |
startParameters |
Definition at line 180 of file StatechartContext.cpp.
void startStatechart | ( | ) |
startStatechart actives both, the toplevel startchart stored in the variable statechart and the StatechartManager for handling eventprocessing.
Definition at line 197 of file StatechartContext.cpp.
|
protected |
Definition at line 190 of file StatechartContext.h.
ConditionHandlerInterfacePrx conditionHandlerPrx |
Definition at line 186 of file StatechartContext.h.
StatechartEventDistributorPtr eventDistributor |
The EventListenerInterface instance, that receives events from observers and redirects them to the correct states.
Definition at line 184 of file StatechartContext.h.
std::unordered_map<std::string, ObserverInterfacePrx> observerMap |
Definition at line 179 of file StatechartContext.h.
|
protected |
Definition at line 192 of file StatechartContext.h.
StatechartManagerPtr statechartManager |
Definition at line 185 of file StatechartContext.h.
|
protected |
Definition at line 191 of file StatechartContext.h.
SystemObserverInterfacePrx systemObserverPrx |
Definition at line 187 of file StatechartContext.h.