+ if (myImmediateListeners.find(theMessage->eventID().eventText()) != myImmediateListeners.end()) {
+ myImmediateListeners[theMessage->eventID().eventText()]->processEvent(theMessage);
+ }
+ // if it is grouped message, just accumulate it
+ if (isGroup) {
+ boost::shared_ptr<Events_MessageGroup> aGroup =
+ boost::dynamic_pointer_cast<Events_MessageGroup>(theMessage);
+ if (aGroup) {
+ std::map<char*, boost::shared_ptr<Events_Message> >::iterator aMyGroup = myGroups.find(
+ aGroup->eventID().eventText());
+ if (aMyGroup == myGroups.end()) { // create a new group of messages for accumulation
+ myGroups[aGroup->eventID().eventText()] = aGroup->newEmpty();
+ aMyGroup = myGroups.find(aGroup->eventID().eventText());
+ }
+ boost::shared_ptr<Events_MessageGroup> aStored =
+ boost::dynamic_pointer_cast<Events_MessageGroup>(aMyGroup->second);
+ aStored->Join(aGroup);
+ return;
+ }
+ }
+
+ // TODO: make it in thread and with usage of semaphores