00001 #ifndef MESSAGELIST_H 00002 #define MESSAGELIST_H 00003 #include <list> 00004 #include "Message.h" 00005 #include "Synchronization.h" 00006 namespace rwil { 00007 typedef void (*rwil_MessageList_AddCallback_t)(const list<Message>&); 00008 00010 class MessageList 00011 { 00012 public: 00014 00017 void Add(const Message& msg); 00019 00022 void Add(list<Message>& messages); 00024 00027 void SetAddCallback(rwil_MessageList_AddCallback_t callback); 00029 00034 list<Message *> Query(time_t start, time_t end); 00036 00041 list<Message *> Query(std::string paramname, std::string value); 00043 00047 void Destroy(list<Message*> messages); 00049 00054 void Lock(); 00056 00061 void Release(); 00063 00067 bool Wait(int milli); 00069 00072 void Wait(); 00073 MessageList() : m_addcallback(NULL) {} 00074 private: 00076 list<Message> m_messages; 00078 Mutex m_op; 00079 Mutex m_lock; 00081 Semaphore m_count; 00083 rwil_MessageList_AddCallback_t m_addcallback; 00084 }; 00085 } 00086 #endif 00087