AsyncIOPoller.h++
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 #ifndef __ccxx_AsyncIOPoller_hxx
00024 #define __ccxx_AsyncIOPoller_hxx
00025
00026 #include <commonc++/AsyncIOTask.h++>
00027
00028 #ifdef CCXX_OS_POSIX
00029 #include <aio.h>
00030 #endif
00031
00032 namespace ccxx {
00033
00039 class COMMONCPP_API AsyncIOPoller
00040 {
00041 public:
00042
00044 AsyncIOPoller();
00045
00047 ~AsyncIOPoller();
00048
00054 void addTask(AsyncIOTask *task);
00055
00060 void removeTask(AsyncIOTask *task);
00061
00063 void removeAllTasks();
00064
00066 uint_t getTaskCount() const throw();
00067
00078 bool poll(int timeout = 0) throw();
00079
00080 private:
00081
00082 class AsyncIOTaskList;
00083 AsyncIOTaskList *_tasks;
00084 #ifdef CCXX_OS_WINDOWS
00085 HANDLE *_cblist;
00086 #else
00087 struct aiocb **_cblist;
00088 #endif
00089 uint_t _cbcount;
00090 bool _dirty;
00091 };
00092
00093 };
00094
00095 #endif // __ccxx_AsyncIOTask_hxx
00096
00097
00098
00099
00100