36 setTag(
"StatechartEventDistributor");
42 this->statechartManager = statechartManager;
53 entry.
eventProcessor = StateControllerPtr::dynamicCast(eventProcessor);
58 std::unique_lock lock(eventMapMutex);
59 StatechartEventDistributor::EventListenerMap::iterator it =
60 eventMap.find(uniqueEventIdentifier);
64 it->second.useCounter++;
68 eventMap[uniqueEventIdentifier] = entry;
71 return uniqueEventIdentifier;
75StatechartEventDistributor::onInitComponent()
80StatechartEventDistributor::onConnectComponent()
82 myProxy = EventListenerInterfacePrx::checkedCast(
getProxy());
89 std::unique_lock lock(eventMapMutex);
90 EventListenerMap::iterator it =
eventMap.find(event->eventName);
94 ARMARX_ERROR <<
"Could not find Event in EventListenerMap" <<
event->eventName
95 <<
" receiver: " <<
event->eventReceiverName;
96 throw LocalException(
"Could not find Event in EventListenerMap - eventName")
97 <<
event->eventName <<
" receiver: " <<
event->eventReceiverName;
101 entry.
event->properties =
event->properties;
122 std::stringstream
str;
123 str <<
getName() <<
"___" << eventProcessor->stateName <<
"("
124 << eventProcessor->impl->localUniqueId <<
")___Event:" <<
event->eventName
125 <<
"___EventRecv:" <<
event->eventReceiverName <<
"__visitId:" << visitId;
135EventListenerInterfacePrx
An Event is used to communicate between e.g.
void setTag(const LogTag &tag)
std::string getName() const
Retrieve name of object.
Ice::ObjectPrx getProxy(long timeoutMs=0, bool waitForScheduler=true) const
Returns the proxy of this object (optionally it waits for the proxy)
StatechartEventDistributor()
std::string statechartName
std::string registerEvent(const EventPtr &event, StateBasePtr eventProcessor, long visitId)
std::string getUniqueEventIdentifier(const StateBasePtr &eventProcessor, const EventPtr &event, long visitId)
void setStatechartManager(const StatechartManagerPtr &statechartManager)
void reportEvent(const EventBasePtr &event, const Ice::Current &) override
EventListenerMap eventMap
EventListenerInterfacePrx getListener()
#define ARMARX_ERROR
The logging level for unexpected behaviour, that must be fixed.
This file offers overloads of toIce() and fromIce() functions for STL container types.
IceInternal::Handle< Event > EventPtr
Typedef of EventPtr as IceInternal::Handle<Event> for convenience.
IceInternal::Handle< StateBase > StateBasePtr
IceUtil::Handle< StatechartManager > StatechartManagerPtr
std::string globalEventIdentifier
StateControllerPtr eventProcessor