00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef LM_LOOM_MESSAGE_HANDLER_H
00029 #define LM_LOOM_MESSAGE_HANDLER_H
00030
00031 #include <plx/Router/MessageHandler.h>
00032
00033 #include "Agent.h"
00034 #include "../Defs.h"
00035 #include "LoomKernel.h"
00036 #include "NetworkConnection.h"
00037 #include "../Output.h"
00038
00039
00040 namespace lm
00041 {
00042 class Agent;
00043
00044
00048 class LoomMessageHandler : public plx::MessageHandler
00049 {
00050 public:
00051 LoomMessageHandler(NetworkConnection* network, LoomKernel* ac) :
00052 mNetwork(network),
00053 mLoomKernel(ac)
00054 {
00055 }
00056
00057 void handleMessage(plx::MessagePtr plxMsg)
00058 {
00059
00060 UUID targetAgent(plxMsg->getDomain().toString());
00061 std::list<Agent*> agentList = mLoomKernel->getAgents();
00062 for(std::list<Agent*>::iterator itr = agentList.begin(); itr!=agentList.end(); itr++)
00063 {
00064 if((*itr)->getUUID()==targetAgent)
00065 {
00066 std::string group = plxMsg->getDomainGroup().toString();
00067 mLoomKernel->mPostQueueMap.find(*itr)->second->push(group);
00068 }
00069 }
00070 }
00071
00072 private:
00073 NetworkConnection* mNetwork;
00074 LoomKernel* mLoomKernel;
00075 };
00076 }
00077
00078 #endif