CNetBase.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #pragma once
  2. #include <Net.h>
  3. #include <BaseDefine.h>
  4. #include <FrameTool_I.h>
  5. #include <DispatchMng_I.h>
  6. #include <Debug_Module_I.h>
  7. #include <YD_DBOperator.h>
  8. #if defined(_MSC_VER) || defined(WIN64) || defined(__WIN64__) || defined(WIN32) || defined(_WIN32)
  9. #ifdef _YD_OCC_NETBASE_SDK
  10. #define _YD_OCC_NETBASE_MODE __declspec(dllexport)
  11. #else
  12. #define _YD_OCC_NETBASE_MODE __declspec(dllimport)
  13. #endif
  14. #else //linux
  15. #ifdef _YD_OCC_NETBASE_SDK
  16. #define _YD_OCC_NETBASE_MODE __attribute__ ((visibility("default")))
  17. #else
  18. #define _YD_OCC_NETBASE_MODE
  19. #endif
  20. #endif
  21. class _YD_OCC_NETBASE_MODE CNetBase: public CNet
  22. {
  23. public:
  24. CNetBase(YD_DBOperator* _db);
  25. virtual ~CNetBase();
  26. virtual void OnCmdProc (int sysid, LPCOMMAND pcmd);
  27. virtual void OnRealProc(int sysid, char* data, int datalen);
  28. virtual void OnMcastProc(char* data, int datalen);
  29. virtual void OnSendRealResult(bool isSuccessed, int byteNum, unsigned long err = 0);
  30. virtual void OnSendCmdResult (bool isSuccessed, int byteNum, unsigned long err = 0);
  31. virtual int Send_Tcp_NetDate (OCCCOMMAND& NetCmd, int nDesSysID, int nSize);
  32. virtual int Send_Group_NetDate(OCCCOMMAND& NetCmd, int nDesSysID, int nSize);
  33. virtual int SendNetDate(OCCCOMMAND& NetCmd, int nSendWay, int nDesSysID, int nSize);
  34. virtual bool DealNetSendMs() { return false; };
  35. virtual bool DealNetGroupSendMs(){ return false; };
  36. virtual bool DealNetRealSendMs() { return false; };
  37. virtual bool InitNet() { return false; };
  38. virtual void Send_TCPData_RightNow(OCCCOMMAND NetCmd){}
  39. virtual void Send_UDPData_RightNow(OCCCOMMAND NetCmd){}
  40. virtual void Start_Training(int nTrainingID, int nCourseID,int nSimTime) {}
  41. virtual void End_Training (int nTrainingID, int nCourseID,int nSimTime) {}
  42. virtual void Record_Training_Sys(int nSysType) {}
  43. virtual void Record_Key_System (int nSysType,int nSysID) {}
  44. virtual bool InitNetWork( CDispatchMng_I* pDispatchMng );
  45. public:
  46. int SendData_TCP (int sysid, LPCOMMAND pcmd);
  47. int SendData_UDP (int sysid, char* data, int datalen);
  48. int SendData_Group(int sysid, char* data, int datalen);
  49. public:
  50. //设置本机系统号
  51. void SetOwnSysID(int nSysID) { m_nOwnSysID = nSysID; }
  52. //设置训练号
  53. void SetTrainID(int nTrainID) { m_nTrainID = nTrainID; }
  54. int GetTrainID() { return m_nTrainID; }
  55. //设置教员系统号
  56. void SetTechID(int nTeachSysID) { m_TechSeverID = nTeachSysID; }
  57. int GetTechID() { return m_TechSeverID; }
  58. //复示主控(模驾)的主控的系统号
  59. virtual void SetRepeat_MainCtrl_SysID(int nSysID) { m_nRepeatMainCtrlSysID = nSysID; }
  60. int GetRepeat_MainCtrl_SysID() { return m_nRepeatMainCtrlSysID; }
  61. //复试主控(模驾)的客户端的系统号
  62. void SetRepeat_MainCtrl_ClientID(int nRepeatClientID) { m_nRepeatMainCtrlClientID = nRepeatClientID; }
  63. int GetRepeat_MainCtrl_ClientID() { return m_nRepeatMainCtrlClientID; }
  64. bool Close();
  65. int ConnectToTech();
  66. void ReadCfg_File();
  67. bool ReadNetRoomData(YD_DBOperator* db);
  68. void AddLogItem( int nPri,const char* pszFmt,...);
  69. bool Monitor_System_Status();
  70. public:
  71. void ThreadFun_SendTCP ();
  72. void ThreadFun_SendUDP ();
  73. void ThreadFun_SendGroup ();
  74. void ThreadFun_SysMonitor();
  75. public:
  76. int m_nOwnSysID; //本系统的系统号
  77. int m_nTrainID; //当前训练号
  78. int m_TechSeverID; //教员系统号
  79. int m_nConnectTeachWay; //连接教员方式
  80. int m_nLastSendSysID_TCP; //最后发送系统-TCP
  81. int m_nLastSendSysID_UDP; //最后发送系统-UDP
  82. int m_nLastSendSysID_Group; //最后发送系统-Group
  83. int m_nRepeatMainCtrlSysID; //复示主控(模驾)系统号
  84. int m_nRepeatMainCtrlClientID; //复示主控(模驾)客户端
  85. bool m_SendMsgThreadOut; //线程退出标志-TCP数据发送
  86. bool m_SendRealThreadOut; //线程退出标志-UDP数据发送
  87. bool m_SendGroupThreadOut; //线程退出标志-组播数据发送
  88. bool m_bSysMonitorThreadOut; //线程退出标志-系统状态监视
  89. bool m_bNetDataMonitorS; //是否监视网络数据
  90. protected:
  91. std::thread m_Thread_SendTCP; //线程变量_TCP数据发送
  92. std::thread m_Thread_SendUDP; //线程变量_UDP数据发送
  93. std::thread m_Thread_SendGroup; //线程变量_组播数据发送
  94. std::thread m_Thread_SysMonitor; //线程变量_系统状态监视
  95. CommandQueue* m_pSendList_TCP; //发送队列-TCP
  96. CommandQueue* m_pSendList_UDP; //发送队列-UDP
  97. CommandQueue* m_pSendList_Group; //发送队列-组播
  98. CommandQueue* m_pRecvList_TCP; //接收队列-TCP
  99. CommandQueue* m_pRecvList_UDP; //接收队列-UDP
  100. CommandQueue* m_pRecvList_Group; //接收队列-组播
  101. CFrameTool_I* m_pFrmTool;
  102. NETTRIANNECTMAP* m_pNetTrainNectMap;
  103. CDispatchMng_I* m_pDispatchMng;
  104. CDebug_Module_I* m_pDebugModule;
  105. recursive_mutex* m_pMutexTrainConect;
  106. YD_DBOperator* m_pdb;
  107. };