00001 #ifdef WIN32 00002 #pragma warning(disable : 4786 ) 00003 #endif 00004 00005 #include "CSMessageListener.h" 00006 #include "CSMessage.h" 00007 00008 CSInternalMessages CSMessageListener::mCSInternalMessages; 00009 const char *CSMessageListener::CLASS = "CSMessageListener"; 00010 00011 CSMessageListener::CSMessageListener() 00012 { 00013 static char *functionName="CSMessageListener"; 00014 LOG_ENTER 00015 LOG_EXIT 00016 } 00017 00018 CSMessageListener::~CSMessageListener() 00019 { 00020 static char *functionName="CSMessageListener"; 00021 LOG_ENTER 00022 LOG_EXIT 00023 } 00024 00025 void CSMessageListener::addMessageToQueue(CSMessageListener *listener, CSMessage *message) 00026 { 00027 static char *functionName="addMessageToQueue"; 00028 if (listener == 0) 00029 { 00030 return; 00031 } 00032 00033 CSInternalMessage *iMessage = new CSInternalMessage(); 00034 iMessage->listener = listener; 00035 iMessage->message = message; 00036 mCSInternalMessages.push_back(iMessage); 00037 } 00038 00039 void CSMessageListener::dispatchQueuedMessages() 00040 { 00041 static char *functionName="dispatchQueuedMessages"; 00042 CSInternalMessages::iterator iter; 00043 for (iter = mCSInternalMessages.begin(); iter != mCSInternalMessages.end(); iter++) 00044 { 00045 CSInternalMessage *iMessage = *iter; 00046 iMessage->listener->reactOnMessage(iMessage->message); 00047 delete(iMessage); 00048 } 00049 mCSInternalMessages.clear(); 00050 } 00051 00052 void CSMessageListener::dispatchMessage(CSMessage *message) 00053 { 00054 static char *functionName="dispatchMessage"; 00055 if (!message->isDispatchAtOnce()) 00056 { 00057 addMessageToQueue(this, message); 00058 return; 00059 } 00060 reactOnMessage(message); 00061 }