00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00026 #ifndef OW32_IoTimeoutManager_h
00027 #define OW32_IoTimeoutManager_h
00028
00029 #include <OW32/windows.h>
00030 #include <OW32/OW32Libs.h>
00031
00032 namespace OW32
00033 {
00034
00038 class CIoTimeoutCallback
00039 {
00040 public:
00046 virtual void onTimeout(LPVOID key) = 0;
00047 };
00048
00052 class CIoTimeoutDrainCallback
00053 {
00054 public:
00061 virtual bool drainTimeout(CIoTimeoutCallback *pCallback, LPVOID key) = 0;
00062
00063 };
00064
00065 #ifdef _MSC_VER
00066 #pragma warning(disable: 4251)
00067 #endif
00068
00072 class OW32_LIB_EXPORT CIoTimeoutManager
00073 {
00074 public:
00078 CIoTimeoutManager() {}
00079
00083 virtual ~CIoTimeoutManager() {}
00084
00100 virtual bool addTimeout(CIoTimeoutCallback *pCallback, LPVOID key, __int64 after, bool *fUpdated = NULL) = 0;
00101
00112 virtual bool updateTimeout(CIoTimeoutCallback *pCallback, LPVOID key, __int64 after, bool *fUpdated = NULL) = 0;
00113
00121 virtual bool removeTimeout(LPVOID key) = 0;
00122
00133 virtual void drainTimeouts(CIoTimeoutDrainCallback *pCallback) = 0;
00134
00140 virtual bool shutdown() = 0;
00141
00142 private:
00144 CIoTimeoutManager(const CIoTimeoutManager &other);
00145 CIoTimeoutManager &operator=(const CIoTimeoutManager &other);
00146 };
00147
00148 #ifdef _MSC_VER
00149 #pragma warning(default: 4251)
00150 #endif
00151
00152 }
00153
00154 #endif // OW32_IoTimeoutManager_h