Go to the documentation of this file.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 #ifndef EVENTLOOP_H
00028 #define EVENTLOOP_H
00029
00030 #include <vector>
00031 #include <list>
00032 #include <queue>
00033
00034 #include "GpCoreToolsDLLExport.h"
00035 #include "Timer.h"
00036
00037 namespace GpCoreTools {
00038
00039 class Event;
00040 class Stream;
00041 class EventStream;
00042
00043 class GPCORETOOLS_EXPORT EventLoop
00044 {
00045 public:
00046 EventLoop();
00047 ~EventLoop();
00048
00049 void addEvent(Event * event) {_events.push(event);}
00050 void addStream(Stream * s) {_streams.push_back(s);}
00051 Timer::QueueItem * addTimer(Timer * t);
00052 void terminate();
00053 bool isTerminated() const {return _terminate;}
00054 void exec();
00055
00056 static EventLoop * instance();
00057 static EventLoop * mainInstance() {return _mainLoop;}
00058 private:
00059 void addTimer(Timer::QueueItem * tq);
00060
00061 std::vector<Stream *> _streams;
00062 std::list<Timer::QueueItem *> _timers;
00063 std::queue<Event *> _events;
00064 EventStream * _eventStream;
00065 bool _terminate;
00066 static EventLoop * _mainLoop;
00067 };
00068
00069 }
00070
00071 #endif // EVENTLOOP_H