Explorar o código

Z991239-5712 #comment feat: 升级实体监听心跳回退指令处理

Signed-Off-By: commit-hook
刘文涛80174520 hai 1 ano
pai
achega
a5259c4513

+ 20 - 0
Module/mod_UpgradeMgr/mod_UpgradeMgr.cpp

@@ -188,6 +188,8 @@ void CUpgradeMgrEntity::OnStarted()
 		}
 	}
 
+	GetFunction()->SubscribeLog(m_uuidHeartBeat, this, Log_Event, Severity_Middle, Error_IgnoreAll, -1, "HeartBeat", false);
+
 	//启动灰度控制判断,看启动什么状态机
 	Task::InitFSMTask* task = new Task::InitFSMTask(this);
 	rc = this->GetFunction()->PostThreadPoolTask(task);
@@ -233,6 +235,22 @@ void CUpgradeMgrEntity::OnSysVarEvent(const char *pszKey, const char *pszValue,c
 	}
 }
 
+void CUpgradeMgrEntity::OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nLogID, const LogTypeEnum eLogType, const SeverityLevelEnum eLevel, const DWORD dwSysError, const DWORD dwUserCode, const DWORD dwEntityInstanceID, const WORD wEntityDevelID, const CAutoArray<DWORD>& Param, const char* pszEntityName, const char* pszModuleName, const char* pszMessage, const linkContext& pLinkInfo)
+{
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("user code:%x,from entity:%s", dwUserCode, pszEntityName);
+	switch (dwUserCode) {
+
+	case LOG_EVT_INC_VERSION_ROLLBACK:
+		{
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("receive heartBeat instruction version to be rollback to %s", pszMessage);
+			CSimpleStringA rollbackStr = pszMessage;
+			this->RollbackUpdate(rollbackStr);
+		}
+		break;
+	default:
+		return;
+	}
+}
 
 char CUpgradeMgrEntity::GetInstallStateVal(const InstallStateEnum enumVal)
 {
@@ -413,6 +431,7 @@ ErrorCodeEnum CUpgradeMgrEntity::testActive()
 
 }
 
+
 ErrorCodeEnum CUpgradeMgrEntity::NewStopMediaPlay()
 {
 #ifdef RVC_OS_WIN
@@ -498,3 +517,4 @@ void CUpgradeMgrEntity::HttpsLogCallBack(const char* logtxt)
 }
 
 
+

+ 7 - 1
Module/mod_UpgradeMgr/mod_UpgradeMgr.h

@@ -18,7 +18,7 @@ using namespace UpgradeManager;
 #define  UPGRADE_MGR_NOT_IMPLEMENT  0xF0000000    // 新升级模式未实现
 
 // 升级管理 UpgradeManager	0x506
-class CUpgradeMgrEntity : public CEntityBase, public ISysVarListener
+class CUpgradeMgrEntity : public CEntityBase, public ISysVarListener, public ILogListener
 {
 public:
 	CUpgradeMgrEntity(){
@@ -67,6 +67,10 @@ public:
 	ErrorCodeEnum NewStopMediaPlay();
 	static void HttpsLogCallBack(const char* logtxt);
 
+	virtual void OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nLogID, const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
+		const DWORD dwSysError, const DWORD dwUserCode, const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
+		const CAutoArray<DWORD>& Param, const char* pszEntityName, const char* pszModuleName, const char* pszMessage, const linkContext& pLinkInfo);
+
 public:
 	map<CSimpleStringA, CSimpleStringA> m_FileHashMap;		// 版本文件hash值集合
 	CSimpleStringA m_strMD5List;
@@ -84,6 +88,8 @@ public:
 	bool m_initSucc;//状态机是否启动成功
 
 	int m_iBlackFileSum;//黑名单文件数量
+private:
+	CUUID m_uuidHeartBeat;
 };
 
 class CUpgradeMgrSession : public UpgradeMgrService_ServerSessionBase