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
00029 #ifndef _MPCL_EVENT_EVENT_HANDLER__
00030 #define _MPCL_EVENT_EVENT_HANDLER__
00031
00032 #include <queue>
00033
00034
00036 namespace mpcl
00037 {
00038
00040 namespace event
00041 {
00042
00048 template <typename TEvent>
00049 class TEventHandler
00050 {
00051
00052 protected:
00053
00055 typedef std::priority_queue<TEvent> TPriorityQueue;
00056
00058 TPriorityQueue tPriorityQueue;
00059
00060
00061 public:
00062
00063
00064
00065
00066
00068 virtual ~TEventHandler (void) {}
00069
00074 virtual TEvent pop (void)
00075 {
00076 TEvent tEvent = tPriorityQueue.top();
00077
00078 tPriorityQueue.pop();
00079 return tEvent;
00080 }
00081
00086 virtual void push (const TEvent& rktSOURCE_EVENT)
00087 {
00088 tPriorityQueue.push (rktSOURCE_EVENT);
00089 }
00090
00091
00092 public:
00093
00094
00095
00096
00097
00102 virtual bool isEmpty (void) const
00103 {
00104 return tPriorityQueue.empty();
00105 }
00106
00107 };
00108
00109 }
00110
00111 }
00112
00113
00114 #endif // not _MPCL_EVENT_EVENT_HANDLER__