#ifndef _SOCKET_BLOCKHOOKER_HPP_ #define _SOCKET_BLOCKHOOKER_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_CODEGEN_HPP_ #include #endif #ifndef _COMMON_CALLBACK_HPP_ #include #endif #ifndef _SOCKET_PROCADDRESS_HPP_ #include #endif class BlockHooker { public: BlockHooker(void); virtual ~BlockHooker(); BOOL hookBlock(void); BOOL unhookBlock(void); BOOL cancelBlocking(void); void setHandler(PureCallback *lpCallback); private: BlockHooker(const BlockHooker &someBlockHooker); BlockHooker &operator=(const BlockHooker &someBlockHooker); BOOL operator==(const BlockHooker &someBlockHooker)const; BOOL cancelBlockingCall(void); BOOL isBlocking(void); BOOL hookProc(void); BOOL yield(void); CodeGen mCodeGenerator; BOOL mIsHooked; CallbackPointer mCallback; }; inline void BlockHooker::setHandler(PureCallback *lpCallback) { mCallback=CallbackPointer(lpCallback); } #endif