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

模拟服务器

开发平台:

C/C++

  1. // TongServer.cpp: implementation of the CTongServer class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "TongServer.h"
  6. #include "TongConnect.h"
  7. #include "S3Relay.h"
  8. //////////////////////////////////////////////////////////////////////
  9. // Construction/Destruction
  10. //////////////////////////////////////////////////////////////////////
  11. CTongServer::CTongServer()
  12. {
  13. }
  14. CTongServer::~CTongServer()
  15. {
  16. }
  17. CNetConnect* CTongServer::CreateConnect(CNetServer* pNetServer, unsigned long id)
  18. {
  19. return new CTongConnect((CTongServer*)pNetServer, id);
  20. }
  21. void CTongServer::DestroyConnect(CNetConnect* pConn)
  22. {
  23. delete pConn;
  24. }
  25. void CTongServer::OnBuildup()
  26. {
  27. AUTOLOCKWRITE(m_lockIpMap);
  28. rTRACE("tong server startup");
  29. }
  30. void CTongServer::OnClearup()
  31. {
  32. AUTOLOCKWRITE(m_lockIpMap);
  33. m_mapIp2Connect.clear();
  34. rTRACE("tong server shutdown");
  35. }
  36. void CTongServer::OnClientConnectCreate(CNetConnect* pConn)
  37. {
  38. AUTOLOCKWRITE(m_lockIpMap);
  39. m_mapIp2Connect[pConn->GetIP()] = (CTongConnect*)pConn;
  40. }
  41. void CTongServer::OnClientConnectClose(CNetConnect* pConn)
  42. {
  43. AUTOLOCKWRITE(m_lockIpMap);
  44. m_mapIp2Connect.erase(pConn->GetIP());
  45. }
  46. CNetConnectDup CTongServer::FindTongConnectByIP(DWORD IP)
  47. {
  48. AUTOLOCKREAD(m_lockIpMap);
  49. IP2CONNECTMAP::iterator it = m_mapIp2Connect.find(IP);
  50. if (it == m_mapIp2Connect.end())
  51. return CNetConnectDup();
  52. CTongConnect* pTongConn = (*it).second;
  53. if (!pTongConn)
  54. return CNetConnectDup();
  55. return CNetConnectDup(*pTongConn);
  56. }
  57. BOOL CTongServer::TraceInfo()
  58. {
  59. AUTOLOCKREAD(m_lockIpMap);
  60. std::_tstring info("message: [TongServer] ");
  61. char buffer[_MAX_PATH];
  62. sprintf(buffer, "<total: %d> : ", m_mapIp2Connect.size());
  63. info.append(buffer);
  64. size_t idx = 0;
  65. for (IP2CONNECTMAP::iterator it = m_mapIp2Connect.begin(); it != m_mapIp2Connect.end(); it++)
  66. {
  67. if (it != m_mapIp2Connect.begin())
  68. info.append(", ");
  69. sprintf(buffer, "%08X", (*it).first);
  70. info.append(buffer);
  71. }
  72. rTRACE(info.c_str());
  73. return TRUE;
  74. }