#include "base/HGDef.h" #include "base/HGInc.h" #include "base/HGThread.h" #include "base/HGUtility.h" #include "base/HGMsgPump.h" #include "ManagerV1.h" #include "ManagerV2.h" #include "HttpServer.h" #include "SockIoServer.h" #include "WSServer.h" #include "MsgPumpCallback.h" static void ThreadFunc(HGThread thread, HGPointer param) { (void)thread; HGMsgPump msgPump = (HGMsgPump)param; HGChar cfgPath[256]; HGBase_GetConfigPath(cfgPath, 256); strcat(cfgPath, "config.ini"); HGInt verNum = 2; HGBase_GetProfileInt(cfgPath, "version", "verNum", 2, &verNum); if (1 == verNum) // 使用V1版本接口 { ver_1::ManagerV1 manager(msgPump); ver_1::HttpServer httpServer(msgPump, &manager); ver_1::SockIoServer sockIoServer(msgPump, &manager); httpServer.Open(18999); sockIoServer.Open(28999); HGBase_RunMsgPump(msgPump, ver_1::HGMsgPumpCallback, NULL); sockIoServer.Close(); httpServer.Close(); } else // 使用V2版本接口 { ver_2::ManagerV2 manager(msgPump); ver_2::WSServer wsServer(msgPump, &manager); wsServer.Open(38999); HGBase_RunMsgPump(msgPump, ver_2::HGMsgPumpCallback, NULL); wsServer.Close(); } } #if defined(HG_CMP_MSC) int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE iPrevInstance, LPWSTR lpCmdLine, int nCmdShow) #else int main() #endif { #if defined(HG_CMP_MSC) WSADATA ws = { 0 }; int ret = WSAStartup(MAKEWORD(2, 2), &ws); assert(0 == ret); #endif HGMsgPump msgPump = NULL; HGBase_CreateMsgPump(&msgPump); HGThread thread = NULL; HGBase_OpenThread(ThreadFunc, msgPump, &thread); HGBase_CloseThread(thread); thread = NULL; HGBase_DestroyMsgPump(msgPump); msgPump = NULL; #if defined(HG_CMP_MSC) WSACleanup(); #endif return 0; }