--- /dev/null
+// CasServer.h: CCasServer \83N\83\89\83X\82Ì\83C\83\93\83^\81[\83t\83F\83C\83X\r
+//\r
+//////////////////////////////////////////////////////////////////////\r
+\r
+#pragma once\r
+\r
+\r
+#include <map>\r
+#include "CasClient.h"\r
+#include "TsUtilClass.h"\r
+#include "SmartSock.h"\r
+\r
+\r
+using std::map;\r
+\r
+\r
+class CCasServer : protected CCasClient::ICasClientHandler\r
+{\r
+public:\r
+ class ICasServerHandler\r
+ {\r
+ public:\r
+ virtual void OnCasServerEvent(CCasServer *pCasServer, const WORD wEventID) = 0;\r
+ };\r
+\r
+ enum\r
+ {\r
+ CSEI_CONNECTED, // \83N\83\89\83C\83A\83\93\83g\90Ú\91±\r
+ CSEI_DISCONNECTED, // \83N\83\89\83C\83A\83\93\83g\90Ø\92f\r
+ };\r
+\r
+ CCasServer(void);\r
+ CCasServer(ICasServerHandler *pEventHandler);\r
+ ~CCasServer(void);\r
+\r
+ const BOOL OpenServer(const WORD wServerPort);\r
+ void CloseServer(void);\r
+ \r
+ const DWORD GetClientNum(void) const;\r
+\r
+protected:\r
+ virtual void OnCasClientEvent(CCasClient *pClient, const DWORD dwEventID, PVOID pParam);\r
+\r
+ void ServerThread(void);\r
+ static void* ServerThreadRaw(LPVOID pParam);\r
+\r
+ ICasServerHandler *m_pEventHandler;\r
+\r
+ CSmartSock m_pSocket;\r
+ pthread_t m_hServerThread;
+\r
+ typedef map<CCasClient *, CCasClient *> ClientList;\r
+ ClientList m_ClientList;\r
+ \r
+ CCriticalLock m_Lock;\r
+};\r