| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #ifndef RVC_MOD_CENTERSETTING_H__
- #define RVC_MOD_CENTERSETTING_H__
- #pragma once
- #include <map>
- #include <string>
- #include "CenterSetting_server_g.h"
- using namespace CenterSetting;
- #include "modVer.h"
- #include "CenterSettingConn.h"
- #include "SpTest.h"
- enum ConnectServerType
- {
- DEFAULT = 0,
- BACKUP = 1,
- PARAM = 2
- };
- class CCenterSettingEntity : public CEntityBase, public ITimerListener
- {
- public:
- CCenterSettingEntity() : /*m_dwLastSyncTime(0),*/
- m_pConnection(nullptr), m_nConnectFailCount(0), m_bUseBackupNow(false){}
- virtual ~CCenterSettingEntity() {}
- virtual const char *GetEntityName() const { return "CenterSetting"; }
- const char* GetEntityVersion() const { return MODULE_VERSION_FULL; }
- virtual bool IsService()const{return true;}
- ON_ENTITYT_TEST()
- void OnPreStart(CAutoArray<CSimpleStringA> strArgs, CSmartPointer<ITransactionContext> pTransactionContext);
- virtual void OnStarted();
- virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext);
- virtual void OnTimeout(DWORD dwTimerID);
- virtual CServerSessionBase *OnNewSession(const char* /*pszRemoteEntityName*/, const char * /*pszClass*/);
- ErrorCodeEnum GetSyncInfo(unsigned int &dwSyncTime, CSimpleStringA &strSyncHash, CSimpleStringA &strSyncFile);
- ErrorCodeEnum DownloadCenterSetting(SpReqAnsContext<CenterSettingService_Download_Req, CenterSettingService_Download_Ans>::Pointer sp);
- void OnPrePause(CSmartPointer<ITransactionContext> pTransactionContext);
- private:
- ErrorCodeEnum BeginDownloadCenterSetting(LPCTSTR serverIP = NULL, int port = 0);
- ErrorCodeEnum EndDownloadCenterSetting(ErrorCodeEnum rc);
-
- bool SecureClientConnect(ConnectServerType type, LPCTSTR serverIP = NULL, int port = 0);
- void SecureClientRelease();
- bool ParseIPAddress(const char *str, CSimpleStringA &ip, int &port);
- bool TryExtractSiteFromFileName(const char *pszPath, CSimpleStringA &strFileName, CSimpleStringA &strSite);
-
- bool IsServerConnectedNow() const
- {
- return (m_pConnection != nullptr && m_pConnection->IsConnectionOK());
- }
- private:
- struct ConfigFileInfo
- {
- CSimpleStringA strFileHash;
- CSimpleStringA strFileName;
- DWORD dwSyncTime;
- };
- std::map<std::string, ConfigFileInfo> m_SyncFileInfo;
- CSimpleStringA m_strCurSiteExtName; // 当前场所集中配置扩展名:LAN或DMZ
- CSimpleStringA m_strRvcWebVersion; // 当前RVCWeb版本
- bool m_bUseBackupNow;
- int m_nConnectFailCount;
- CCenterSettingConn *m_pConnection;
-
- SpReqAnsContext<CenterSettingService_Download_Req, CenterSettingService_Download_Ans>::Pointer m_spDownloadCall;
- friend class CCenterSettingConn;
- };
- struct DownloadCenterSettingsTask : public ITaskSp
- {
- DownloadCenterSettingsTask(CCenterSettingEntity* entity) :pEntity(entity) {}
- void Process()
- {
- pEntity->DownloadCenterSetting(NULL);
- }
- CCenterSettingEntity* pEntity;
- };
- class CCenterSettingService : public CenterSettingService_ServerSessionBase
- {
- public:
- CCenterSettingService(CCenterSettingEntity *pEntity) :m_pEntity(pEntity){}
- virtual ~CCenterSettingService(){}
- virtual void Handle_Download(SpReqAnsContext<CenterSettingService_Download_Req, CenterSettingService_Download_Ans>::Pointer ctx)
- {
- Dbg("%s: %s, %d", __FUNCTION__, ctx->Req.strAddr.GetData(), ctx->Req.nPort);
- if (ctx->Req.strAddr.IsNullOrEmpty() || ctx->Req.nPort <= 0) {
- ctx->Answer(Error_Param);
- } else {
- m_pEntity->DownloadCenterSetting(ctx);
- }
- }
- virtual void Handle_GetSyncInfo(SpReqAnsContext<CenterSettingService_GetSyncInfo_Req, CenterSettingService_GetSyncInfo_Ans>::Pointer ctx)
- {
- auto rc = m_pEntity->GetSyncInfo(ctx->Ans.nSyncTime, ctx->Ans.strFileHash, ctx->Ans.strFileName);
- ctx->Answer(rc);
- }
- private:
- CCenterSettingEntity *m_pEntity;
- };
- #endif /*RVC_MOD_CENTERSETTING_H__*/
|