#ifndef RVC_MOD_CENTERSETTING_CONN_H_ #define RVC_MOD_CENTERSETTING_CONN_H_ #pragma once #include "SpSecureClient.h" #include "SpIni.h" #include "IHttpFunc.h" #include "EventCode.h" #include #include #include "JsonConvertHelper.hpp" #include "microservices/api_terminal_center_config.h" #pragma pack(1) // 变更查询 {PollCfg} // 新终端版本上送 {PollCfg2} //[StructName("PollReq")] struct PollCfgReq { //TerminalNo 终端号 char TerminalNo[16]; //MachineType 设备型号 char MachineType[32]; // 设备部署场所代码 char Sites[16]; // 当前配置指纹 char LastHash[34]; }; //[StructName("PollRet")] struct PollCfgRet { // 配置文件名称 char FileName[32]; // 当前配置指纹 char FileHash[34]; // 集中配置内容 char FileContent[0]; }; struct PollSMR { //TerminalNo 终端号 char TerminalNo[16]; //MachineType 设备型号 char MachineType[32]; // 设备部署场所代码 char Sites[16]; // 当前配置指纹 char LastHash[80]; }; //[StructName("PollRet")] struct PollSMA { // 配置文件名称 char FileName[32]; // 当前配置指纹 char FileHash[80]; // 集中配置内容 char FileContent[0]; }; #pragma pack() struct CenterSettingReq : CHTTPReq { CenterSettingReq(){m_timeOut = 5;} string m_terminal_no; string m_last_update_time; virtual string ToJson(){ char reqcontent[512]; sprintf(reqcontent, "{\"terminal_no\":\"%s\",\"last_update_time\":\"%s\"}", m_terminal_no.c_str(), m_last_update_time.c_str()); return reqcontent; } }; struct ModuleConfigItemJson : public MicroServices::API::Terminal::ModuleConfigItem { JSONCONVERT2OBJECT_MEMEBER_REGISTER(branchNo, remark, sites, updateTime, moudle, name, value) }; struct CenterSettingConfigJson { std::string mapSiteName; std::string lastUpdateTime; std::vector config; JSONCONVERT2OBJECT_MEMEBER_REGISTER(lastUpdateTime, config) }; struct CenterSettingFileJson { std::string branchNo; CenterSettingConfigJson biz; CenterSettingConfigJson dmz; JSONCONVERT2OBJECT_MEMEBER_REGISTER(branchNo, biz, dmz) JSONCONVERT2OBJECT_MEMEBER_RENAME_REGISTER("branchNo", "BIZ", "DMZ") }; struct CenterSettingResponse : CHTTPRet { CenterSettingResponse(){} CenterSettingFileJson centerSyncInfo; bool bSuccess; std::string errInfo; virtual bool Parse(string strData); }; struct CenterSettingsMicroServiceHelper { CenterSettingsMicroServiceHelper(CEntityBase* pEntity); bool IsConfigureValid() { return (!m_strCenterSettingUrl.IsNullOrEmpty()); } void RefreshCenterSettingConfig() { InitCenterSettingsInfoFromConfig(); } ErrorCodeEnum GetCenterSetting(CSimpleStringA& strErrMsg); void SetServicesUrl(const CSimpleStringA& value) { m_strCenterSettingUrl = value; } private: void InitCenterSettingsInfoFromConfig(); void SyncConfigAndRenameCenterFile(const CenterSettingConfigJson& configOfOneBranch); private: CEntityBase* m_pEntity; BOOL m_bGrayLaunch; CSimpleStringA m_strGrayLaunchUrl; CSimpleStringA m_strCallRouteBranchNo; CSimpleStringA m_strCenterSettingUrl; CSimpleStringA m_strLastTime; CSimpleStringA m_strTerminalList; CSimpleStringA m_strMode; CSystemStaticInfo mTerminalInfo; }; class CCenterSettingConn : public SpSecureClient { public: CCenterSettingConn(CEntityBase *pEntity); ErrorCodeEnum BeginPollConfig(const CSystemStaticInfo& info); static bool ClearillegalCenterSettingsFile(CSimpleStringA strCfgDirPath); private: virtual ~CCenterSettingConn(void); virtual void OnDisconnect(); virtual void OnPkgAnswer(const CSmartPointer &pRecvPkg); ErrorCodeEnum OnEndPollConfig(const CSmartPointer &pRecvPkg); bool IsServiceAvailable(const char *pszServiceAddr); bool ParseIPAddress(const char *str, CSimpleStringA &ip, int &port); }; #endif //RVC_MOD_CENTERSETTING_CONN_H_