#ifndef INC_SEXT_SOCKETHANDLER_H #define INC_SEXT_SOCKETHANDLER_H #include #include #include #include "Socket.h" struct SocketWrapper { SocketWrapper(void* socket, SM_SocketType socketType) : socket(socket), socketType(socketType) {} ~SocketWrapper(); void* socket; SM_SocketType socketType; }; class SocketHandler { public: SocketHandler(); ~SocketHandler(); void Shutdown(); SocketWrapper* GetSocketWrapper(const void* socket); template Socket* CreateSocket(SM_SocketType st); void DestroySocket(SocketWrapper* sw); void StartProcessing(); void StopProcessing(); //friend class Socket; boost::asio::io_service* ioService; private: std::deque socketList; boost::mutex socketListMutex; boost::asio::io_service::work* ioServiceWork; boost::thread* ioServiceProcessingThread; bool ioServiceProcessingThreadInitialized; void RunIoService(); }; extern SocketHandler socketHandler; #endif