#include "stdafx.h" #include #include #include #include "DBProxyServerEx.h" #include "ServerGlobal.h" //================================================================================================== // @desc 皋葛府 穿荐 府器磐 荤侩 咯何 #define MEMORY_LEAK_REPORT_FILE "memory_leak_DBProxy.txt" // @desc 傍蜡等 皋葛府 穿荐 免仿 颇老疙 #define MEMORY_LEAK_REPORT_FILE_FOR_SHARED "./memory_leak_DBProxy_shared.txt" #include "./SharedMemoryLeakReporter.hxx" //================================================================================================== // Global SolarSimpleConsole g_Console; extern "C" { int WinMainCRTStartup(); } static VOID ErrorHandler_new() { printf( "Can't Alloc Memory\n" ); if( g_pSunLog ) { MessageOut( eCRITICAL_LOG, _T("Can't Alloc Memory\n") ); g_pSunLog->Flush( CSunLog::cOUTPUT_BOTH ); } __debugbreak(); } int SunEntryPoint() { SharedMemoryPool::CreateInstance(); return WinMainCRTStartup(); } static SolarDump solarDUMP("."); int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { __UNUSED((hInstance, hPrevInstance, nCmdShow)); //SolarDump dp( ".", MiniDumpWithFullMemory ); // 能贾芒 檬扁拳 CONSOLE_DESC cdesc; ZeroMemory( &cdesc, sizeof(cdesc) ); cdesc.bUsingConsoleInput = FALSE; cdesc.bUsingRedirect = TRUE; g_Console.Init( &cdesc ); std::set_new_handler( ErrorHandler_new ); // 疙飞 牢荐 颇教 if( !ParseArguments( (LPTSTR)lpCmdLine ) ) { DISPMSG( "无效的参数!\n" ); system( "pause" ); return 0; } const CHAR* cstr_ConfigFile = #if DBPROXY_TYPE_SELECTOR == DBPROXY_TYPE_ACCOUNT "./ADBPServer.ini"; #elif DBPROXY_TYPE_SELECTOR == DBPROXY_TYPE_DEFAULT "./DBPServer.ini"; #elif DBPROXY_TYPE_SELECTOR == DBPROXY_TYPE_UNIT "./DBPUnit.ini"; #endif // g_DBProxyServer.DoInit( (CHAR*)cstr_ConfigFile, DBProxyServerEx::DoAllocServerSession, DBProxyServerEx::DoFreeServerSession, DBProxyServerEx::DoFreeConnectSession, DBProxyServerEx::DoAllocClient_NotUsed, DBProxyServerEx::DoFreeClient_NotUsed, DBProxyServerEx::DoFreeConnect_NotUsed ); g_DBProxyServer.DoProcess(); g_DBProxyServer.DoRelease(); // 能贾芒 辆丰 g_Console.Release(); return 0; } #if (0) #include #include #include "DBProxyServerEx.h" #include #include #include "ServiceApp.h" #include "ServerGlobal.h" SUNConsole g_SUNConsole; ISolarConsole * g_pIConsole = NULL; class DBProxyServiceApp : public ServiceApp { public : DBProxyServiceApp(const char* pServiceName) : ServiceApp(pServiceName) { } virtual VOID Update() { g_DBProxyServer.Run(); g_DBProxyServer.Release(); // 辑滚 辆丰 DISPMSG( "服务器已终止...\n" ); g_SUNConsole.Release(); } virtual VOID OnStop() { g_DBProxyServer.Shutdown(); } }; #ifdef _DEBUG __DECLARE_SERVICE( DBProxyServiceApp, "DBProxyServer_d" ); #else __DECLARE_SERVICE( DBProxyServiceApp, "DBProxyServer" ); #endif extern "C" { int WinMainCRTStartup(); } static int SunAllocHook(int nAllocType, void *pvData, size_t nSize, int nBlockUse, long lRequest, const unsigned char * szFileName, int nLine ) { __UNUSED(nAllocType); __UNUSED(pvData); __UNUSED(nBlockUse); __UNUSED(szFileName); __UNUSED(nLine); if (lRequest >= 31475) // 389862 { //if (nSize == 118) { __asm int 3; } } return TRUE; } int SunEntryPoint() { //_CrtSetAllocHook(SunAllocHook); return WinMainCRTStartup(); } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { StartMemoryLeakCheck(); //BreakPointOnMemoryLeak(148); SolarDump dp; BOOL bConsoleMode = (strstr( lpCmdLine, "service" ) == NULL); /* SolarDatabaseDesc desc_; //desc.DataBaseModuleType = DBCInterfaceType_OLEDB; desc_.DataBaseModuleType = DBCInterfaceType_ODBC; desc_.dwQueryPoolSize = 2000; desc_.wQueryProcessorNum = 1; desc_.pszDatabaseIP = "10.1.48.38"; desc_.pszDatabaseName = "SUNOnline"; desc_.pszUserName = "sa"; desc_.pszUserPassword = "xodidtjqjd"; desc_.fnErrorMessage = NULL; desc_.fnQueryResult = NULL; SolarDatabaseInDBP* db = new SolarDatabaseInDBP; db->Initialize( desc_ ); db->Release(); delete db;*/ #ifdef _USING_SIMPLE_CONSOLE if( !g_SUNConsole.Init( eSIMPLE_CONSOLE ) ) #else if( !g_SUNConsole.Init( eCOMPLEX_CONSOLE ) ) #endif { ASSERT( !"Solar console Initialization failed!" ); return 0; } //辑厚胶 葛靛矫 泅犁 版肺甫 汲沥秦林扁 困秦 Init傈俊 馆靛矫 荤侩.. // ServiceApp::SetApplicationDirectory(); // 疙飞 牢荐 颇教 if( !ParseArguments( (LPTSTR)lpCmdLine ) ) { DISPMSG( "无效参数!\n" ); system( "pause" ); return 0; } // 辑滚 檬扁拳 if( !g_DBProxyServer.Init() ) { DISPMSG( "服务初始化失败!\n" ); system( "pause" ); return 0; } SERVER_ENV* pServerEnv = g_DBProxyServer.GetFileParser()->GetServerEnv(); DISPMSG( "====================================================\n" ); DISPMSG( " SUN Online DB 代理服务初始化完成.\n" ); DISPMSG( "====================================================\n" ); // 辑滚 矫累 if( eCONSOLE_MODE == pServerEnv->byServiceMode ) { g_DBProxyServer.Run(); g_DBProxyServer.Release(); // 辑滚 辆丰 DISPMSG( "服务器已终止...\n" ); g_SUNConsole.Release(); } else if( eSERVICE_MODE == pServerEnv->byServiceMode ) { DISPMSG( "<<<<< 服务模式 >>>>>\n" ); __START_SERVICE( DBProxyServiceApp ); } #ifdef _DEBUG //DeInitAllocCheck();//Memory Leak Check End #endif return 0; } #endif