#ifndef SERVICE_UNITS_HEAD_FILE #define SERVICE_UNITS_HEAD_FILE #pragma once #include "Stdafx.h" #include "InitParameter.h" #include "AttemperEngineSink.h" #include "DataBaseEngineSink.h" #include "RedisHead.h" ////////////////////////////////////////////////////////////////////////////////// //网络标示 #define NETWORK_CORRESPOND 1 //登录连接 //消息定义 #define WM_UICONTROL_REQUEST (WM_USER+100) //控制请求 ////////////////////////////////////////////////////////////////////////////////// //枚举定义 //服务状态 enum enServiceStatus { ServiceStatus_Stop, //停止状态 ServiceStatus_Config, //配置状态 ServiceStatus_Service, //服务状态 }; ////////////////////////////////////////////////////////////////////////////////// //状态接口 interface IServiceUnitsSink { //接口定义 public: //服务状态 virtual VOID OnServiceUnitsStatus(enServiceStatus ServiceStatus) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// //服务单元 class CServiceUnits : public CWnd { //友元定义 friend class CAttemperEngineSink; friend class CDataBaseEngineSink; friend class CLogonServerDlg; //状态变量 protected: enServiceStatus m_ServiceStatus; //运行状态 //配置组件 public: CInitParameter m_InitParameter; //配置参数 //组件变量 private: CWHDataQueue m_DataQueue; //数据队列 CCriticalSection m_CriticalSection; //同步对象 //服务组件 public: CAttemperEngineSink m_AttemperEngineSink; //调度钩子 CDataBaseEngineSink m_DataBaseEngineSink[4]; //数据钩子 //内核组件 protected: CTimerEngineHelper m_TimerEngine; //时间引擎 CAttemperEngineHelper m_AttemperEngine; //调度引擎 CDataBaseEngineHelper m_DataBaseEngine; //数据引擎 CTCPNetworkEngineHelper m_TCPNetworkEngine; //网络引擎 CTCPSocketServiceHelper m_TCPSocketService; //协调服务 std::shared_ptr m_RedisClient;//redis //接口变量 protected: IServiceUnitsSink * m_pIServiceUnitsSink; //状态接口 //静态变量 public: static CServiceUnits * g_pServiceUnits; //对象指针 //函数定义 public: //构造函数 CServiceUnits(); //析构函数 virtual ~CServiceUnits(); //信息函数 public: //获取状态 enServiceStatus GetServiceStatus() { return m_ServiceStatus; } //服务控制 public: //启动服务 bool StartService(); //停止服务 bool ConcludeService(); //设置接口 bool SetServiceUnitsSink(IServiceUnitsSink * pIServiceUnitsSink); //投递请求 bool PostControlRequest(WORD wIdentifier, VOID * pData, WORD wDataSize); //辅助函数 protected: //配置组件 bool InitializeService(); //启动内核 bool StartKernelService(); //启动网络 bool StartNetworkService(); //内部函数 private: //设置状态 bool SetServiceStatus(enServiceStatus ServiceStatus); //发送控制 bool SendControlPacket(WORD wControlID, VOID * pData, WORD wDataSize); //消息映射 protected: //控制消息 LRESULT OnUIControlRequest(WPARAM wParam, LPARAM lParam); DECLARE_MESSAGE_MAP() }; ////////////////////////////////////////////////////////////////////////////////// #endif