main.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #include "stdlib.h"
  2. #include "stdio.h"
  3. #include "KStdAfx.h"
  4. #include "S3PDBConnector.h"
  5. #include "S3PDBSocketPool.h"
  6. #include "S3PDBSocketServer.h"
  7. #include "S3PRelockAccount.h"
  8. #include "TestRunner.h"
  9. #include "S3PTestRoleInfoDAO.h"
  10. #include "S3PTestCardInfoDAO.h"
  11. #include "S3PTestAccountInfoDAO.h"
  12. #include "S3PTestCard.h"
  13. #include "S3PTableInfoCatch.h"
  14. #include "S3PTestTaskList.h"
  15. #include "S3PTestRole.h"
  16. static DWORD WINAPI AddAccount( LPVOID lParam )
  17. {
  18. DWORD dwRet = 0;
  19. int iParam = ( int )lParam;
  20. //if ( 0 < iParam )
  21. {
  22. for ( int i = iParam; i <= 20000; i += 10 )
  23. {
  24. char szAccount[LOGIN_ACCOUNT_MAX_LEN+1];
  25. szAccount[LOGIN_ACCOUNT_MAX_LEN] = 0;
  26. char szPassword[LOGIN_PASSWORD_MAX_LEN+1];
  27. szPassword[LOGIN_PASSWORD_MAX_LEN] = 0;
  28. char szRealName[LOGIN_REALNAME_MAX_LEN+1];
  29. szRealName[LOGIN_REALNAME_MAX_LEN] = 0;
  30. sprintf( szAccount, "%d", i );
  31. sprintf( szPassword, "123456" );
  32. sprintf( szRealName, "Yang" );
  33. int iResult = S3PAccount::AddAccount( szAccount, szPassword, szRealName );
  34. }
  35. }
  36. return dwRet;
  37. }
  38. int main()
  39. {
  40. int iRet = 0;
  41. TCHAR szExePath[MAX_PATH+1];
  42. TCHAR szINIPath[MAX_PATH+1];
  43. KPIGetExePath( szExePath, MAX_PATH );
  44. _tcscpy( szINIPath, szExePath );
  45. _tcscat( szINIPath, "DataBase.ini" );
  46. S3PTableInfoCatch::Instance();
  47. S3PDBConnectionPool::Init( szINIPath );
  48. S3PDBConnectionPool::Instance();
  49. S3PDBConnector::Instance();
  50. /*
  51. // 单元测试代码
  52. //------>BEGIN
  53. cout << endl << "=========测试开始========" << endl;
  54. TestRunner  runner;
  55.     runner.addTest("RoleInfo",S3PTestRoleInfoDAO::suite());
  56. runner.addTest("CardInfo",S3PTestCardInfoDAO::suite());
  57. runner.addTest( "AccountInfo", S3PTestAccountInfoDAO::suite() );
  58. runner.addTest( "Card",S3PTestCard::suite() );
  59. runner.addTest("Role",S3PTestRole::suite());
  60.     runner.run("RoleInfo");
  61. runner.run("CardInfo");
  62. runner.run("AccountInfo");
  63. runner.run("Card");
  64. runner.run("Role");
  65. cout << endl << "===========测试结束=========" << endl;
  66. //<------END
  67. */
  68. // 工作代码
  69. // 下面将会有三个线程运行,正确运行的情况下,
  70. // 应该只要一个线程退出其它线程都应退出(对此
  71. // 处理还未完善)
  72. //------>BEGIN
  73. BOOL bFlag = FALSE;
  74. S3PDBSocketPool sPool;
  75. char szSetupFilePath[MAX_PATH+1];
  76. _tcscpy( szSetupFilePath, szExePath );
  77. _tcscat( szSetupFilePath, "setup.ini" );
  78. short siPort = def_DEFAULT_PORT;
  79. char szPort[32];
  80. KPIGetPrivateProfileString( "Local", "port", "", szPort, 32, szSetupFilePath );
  81. siPort = atoi( szPort );
  82. S3PDBSocketServer sServer( siPort, &sPool );
  83. HANDLE hSServer = NULL;
  84. S3PRelockAccount* pRelocker = S3PRelockAccount::Instance();
  85. if ( NULL == pRelocker )
  86. {
  87. cout << endl << "Program exited due to some errors" << endl;
  88. return iRet;
  89. }
  90. pRelocker->Start();
  91. //DWORD dwThreadID;
  92. //for ( int i = 0; i < 1; i++ )
  93. //{
  94. // CreateThread( 0, 0, AddAccount, ( LPVOID )i, 0, &dwThreadID );
  95. //}
  96. cout << endl << "Enter "q" to quit:";
  97. while ( TRUE )
  98. {
  99. if ( !bFlag )
  100. {
  101. hSServer = sServer.Start();
  102. if ( NULL != hSServer )
  103. {
  104. bFlag = TRUE;
  105. }
  106. }
  107. char c;
  108. cin >> c;
  109. if ( ( 'q' == c ) || ( 'Q' == c ) )
  110. {
  111. cout << "Exiting...";
  112. sServer.Stop();
  113. S3PRelockAccount::Instance()->Stop();
  114. cout << endl << "Shutdown completed." << endl;
  115. break;
  116. }
  117. }
  118. //<------END
  119. S3PDBConnectionPool::ReleaseInstance();
  120. S3PDBConnector::ReleaseInstance();
  121. S3PTableInfoCatch::Release();
  122. return iRet;
  123. }