code_app/sdk/webservice/main.cpp

91 lines
2.0 KiB
C++

#include "base/HGDef.h"
#include "base/HGInc.h"
#include "base/HGThread.h"
#include "base/HGUtility.h"
#include "base/HGIni.h"
#include "base/HGMsgPump.h"
#include "ManagerV1.h"
#include "ManagerV2.h"
#include "HttpServer.h"
#include "SockIoServer.h"
#include "WSServer.h"
#include "MsgPumpCallback.h"
#include "curl/curl.h"
static void ThreadFunc(HGThread thread, HGPointer param)
{
(void)thread;
HGMsgPump msgPump = (HGMsgPump)param;
HGChar cfgPath[256];
HGBase_GetConfigPath(cfgPath, 256);
HGChar cfgName[256];
sprintf(cfgName, "%s%s", cfgPath, "config.ini");
HGInt verNum = 2;
HGBase_GetProfileInt(cfgName, "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);
if (httpServer.Open(18999))
{
if (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);
sprintf(cfgName, "%s%s", cfgPath, "config2.ini");
HGInt port = 38999;
HGBase_GetProfileInt(cfgName, "connect", "port", 38999, &port);
if (wsServer.Open(port))
{
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
curl_global_init(CURL_GLOBAL_ALL);
HGMsgPump msgPump = NULL;
HGBase_CreateMsgPump(&msgPump);
HGThread thread = NULL;
HGBase_OpenThread(ThreadFunc, msgPump, &thread);
HGBase_CloseThread(thread);
thread = NULL;
HGBase_DestroyMsgPump(msgPump);
msgPump = NULL;
curl_global_cleanup();
#if defined(HG_CMP_MSC)
WSACleanup();
#endif
return 0;
}