Эх сурвалжийг харах

Z991239-4439 #comment upgradeMgr修改头文件

Signed-Off-By: commit-hook
刘文涛80174520 2 жил өмнө
parent
commit
b4303ab134

+ 8 - 0
Module/mod_UpgradeMgr/UpgradeManager_def_g.h

@@ -28,6 +28,14 @@ namespace UpgradeManager {
 #define UpgradeMgrService_MethodSignature_RegistManualPack -1924952337
 #define UpgradeMgrService_MethodSignature_GetManualPacks -905215373
 
+#define UpgradeMgrService_LogCode_GetUpgradeState "QLR040250600"
+#define UpgradeMgrService_LogCode_RegistLocalPack "QLR040250601"
+#define UpgradeMgrService_LogCode_CancelUpdate "QLR040250602"
+#define UpgradeMgrService_LogCode_RollbackUpdate "QLR040250603"
+#define UpgradeMgrService_LogCode_SwitchUpgrade "QLR040250604"
+#define UpgradeMgrService_LogCode_RegistManualPack "QLR040250605"
+#define UpgradeMgrService_LogCode_GetManualPacks "QLR040250606"
+
 struct UpgradeMgrService_GetUpgradeState_Req
 {
 

+ 21 - 0
Module/mod_UpgradeMgr/UpgradeTaskFSM.h

@@ -13,6 +13,23 @@
 #define QUERY_NO_TASK_WARN_LIMIT 10
 using namespace std;
 
+#define WARN_TASK_COPY_FILE_ZERO 0x50620022 //升级copy文件夹文件个数为0
+#define ERR_TASK_QUERY_PRE_NEW_TASK_FAIL 0x50620023 //查询新任务报错
+#define ERR_TASK_QUERY_CONTINUE_NEW_TASK_FAIL 0x50620024 //查询继续新任务报错
+#define ERR_TASK_QUERY_CONTINUE_NEW_TASK_ERR 0x50620025 //查询继续新任务异常
+
+#define WARN_BLACK_FILE_SUM 0x50600023 //黑名单文件数量
+
+#define UpgradeMgr_VERSION_DOWNLOAD_ID "QLR0402506Z10101"
+#define UpgradeMgr_VERSION_INSTALL_ID "QLR0402506Z10201"
+#define UpgradeMgr_VERSION_SWTICH_ID "QLR0402506Z10301"
+#define UpgradeMgr_VERSION_START_ID "QLR0402506Z10401"
+#define UpgradeMgr_OUTSIDE_SYSTEM_DOWNLOAD_ID "QLR0402506Z10102"
+#define UpgradeMgr_OUTSIDE_SYSTEM_INSTALL_ID "QLR0402506Z10202"
+#define UpgradeMgr_OUTSIDE_SYSTEM_SWTICH_ID "QLR0402506Z10302"
+#define UpgradeMgr_OUTSIDE_SYSTEM_START_ID "QLR0402506Z10405"
+#define UpgradeMgr_PerTask_HTTP_ERR "QLR0402506Z10501"
+
 namespace HttpStruct
 {
 	//发送文件hash列表接口
@@ -306,6 +323,8 @@ public:
 		m_PrintHttpLog =false;
 		m_startFlag = false;
 		m_iBlackFileCount=0;
+		m_bSwitchFlag = false;
+		m_bRollbackTask = false;
 	}
 	~CUpgradeTaskFSM(){}
 	//具体实现方法
@@ -493,5 +512,7 @@ public:
 
 	CSimpleStringA m_strPreTaskId; //预检查taskId
 	int m_bNeedHash;//是否需要hash对比查询任务
+	bool m_bSwitchFlag;//是否启动后切换流程直接进入标志
+	bool m_bRollbackTask;//是否已经处于回退流程。
 };
 #endif //RVC_MOD_UPGRADETASK_FSM_H_

+ 14 - 153
Module/mod_UpgradeMgr/mod_UpgradeMgr.h

@@ -4,19 +4,17 @@
 #include "SpBase.h"
 #include "SimpleString.h"
 #include "UpgradeManager_server_g.h"
-#include "Download_msg_g.h"
-#include "UpgradeRun_msg_g.h"
-#include "UpgradeMgrFSM.h"
+
 
 #include "SpTest.h"
 #include "modVer.h"
 #include "UpgradeTaskFSM.h"
 
 using namespace UpgradeManager;
-
+#define  UPGRADE_MGR_NOT_IMPLEMENT  0xF0000000    // 新升级模式未实现
 
 // 升级管理 UpgradeManager	0x506
-class CUpgradeMgrEntity : public CEntityBase, public ISysVarListener, public IBroadcastListener
+class CUpgradeMgrEntity : public CEntityBase, public ISysVarListener
 {
 public:
 	CUpgradeMgrEntity(){
@@ -45,121 +43,24 @@ public:
 	virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext);
 	virtual CServerSessionBase *OnNewSession(const char* /*pszRemoteEntityName*/, const char * /*pszParam*/);
 	virtual void OnSysVarEvent(const char *pszKey, const char *pszValue,const char *pszOldValue,const char *pszEntityName);
-	void OnDownloadEvent(const char *pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, Download::DownloadResult &evt);
-	void OnUpgradeCheckEvent(const char *pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, UpgradeRun::UpgradeCheckEvent &evt);
-	void OnUpgradeDoneEvent(const char *pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, UpgradeRun::UpgradeDoneEvent &evt);
 	static char GetInstallStateVal(const InstallStateEnum enumVal);
 	
 	ErrorCodeEnum RegistLocalPack(const CSimpleStringA &strPackFile);
 	DWORD RegistManualPack(const CSimpleStringA &strPackFile);
 	DWORD GetManualPacks(CSimpleStringA &strManualPacks);
-	ErrorCodeEnum DownloadPack(const CSimpleStringA &strPackFile);
-	ErrorCodeEnum CancelDownloadPack(const CSimpleStringA &strPackFile);
-	ErrorCodeEnum PushUpdateTask(const CSimpleStringA &strPackName, const int nPackType);
-	//ErrorCodeEnum PushUpdateTask(const CSimpleStringA &strPackName);
 	ErrorCodeEnum CancelUpdate(const CSimpleStringA &strPackName);
 	ErrorCodeEnum RollbackUpdate(const CSimpleStringA &strVersion);
 	ErrorCodeEnum SwitchUpgrade(const CSimpleStringA &strPack);
 	ErrorCodeEnum GetUpgradeState(bool &bInstalling, CSimpleStringA &strPackFile, CSimpleStringA &strExecID,
 		char &nInstallState, bool &bSysInstall, bool &bLightPack, CSimpleStringA &strNewVersion);
-	ErrorCodeEnum SyncTime();
-	ErrorCodeEnum UpdatePackFailInfo(CSimpleStringA strVersion);
-	ErrorCodeEnum MD5File(CSimpleStringA strToSignFilePath, CSimpleStringA &strMD5);
-	ErrorCodeEnum MD5Data(CSimpleStringA strData, CSimpleStringA &strMD5);
-	ErrorCodeEnum MD5Folder(CSimpleStringA strFolderPath, bool isDepDir=false);
-	ErrorCodeEnum GetMD5List(CSimpleStringA &strMD5List);
-
-	//新国密SM3函数,isSub表示是否截取新国密中间一段密文
-	ErrorCodeEnum SM3FileToStr(CSimpleStringA strFilePath, CSimpleStringA &strSM3,bool isSub);
-	ErrorCodeEnum SM3DataToStr(CSimpleStringA strData, CSimpleStringA &strSM3,bool isSub);
-	ErrorCodeEnum SM3_Str(CSimpleStringA &strSM3,BYTE * SM3Byte,bool isSub);
-
-
-	//创建install.ini文件
-	ErrorCodeEnum createInstallFile();
-
 	//检测active文件是否被锁
 	ErrorCodeEnum testActive();
 
-	ErrorCodeEnum StopMediaPlay();
 	//modify by lwt 新状态机加入方法
 	ErrorCodeEnum NewStopMediaPlay();
 	static void HttpsLogCallBack(const char* logtxt);
 
-#ifdef RVC_OS_WIN
-	SP_BEGIN_MSG_DISPATCH_MAP(CUpgradeMgrEntity)
-		SP_BEGIN_ENTITY_MSG("Download")
-		SP_MSG_HANDLE_NS(Download, DownloadResult, OnDownloadEvent)
-		SP_END_ENTITY_MSG()
-		SP_BEGIN_ENTITY_MSG("UpgradeRun")
-		SP_MSG_HANDLE_NS(UpgradeRun, UpgradeCheckEvent, OnUpgradeCheckEvent)
-		SP_MSG_HANDLE_NS(UpgradeRun, UpgradeDoneEvent, OnUpgradeDoneEvent)
-		SP_END_ENTITY_MSG()
-	SP_END_MSG_DISPATCH_MAP()
-#else
-	virtual void OnBroadcastEvent(CUUID SubID, const char* pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, CAutoBuffer Buffer) 
-	{ 
-		if (!pszEntityName) 
-		{ 
-			LOG_TRACE("pszEntityName cannot empty!"); 
-		}
-		else if (_stricmp("Download", pszEntityName) == 0)
-		{
-			switch (dwMessageId) {
-			case eMsg_DownloadResult:
-				if (eMsgSig_DownloadResult == dwMessageSignature) {
-					Download::DownloadResult t;
-					ErrorCodeEnum Error = SpBuffer2Object(Buffer, t);
-					if (Error == Error_Succeed)
-						OnDownloadEvent(pszEntityName, dwMessageId, dwMessageSignature, t);
-				}
-				else {
-					LOG_TRACE("DownloadResult signature mismatched!");
-				}
-				break;
-			default:
-				LOG_TRACE("msg id %d ignored!", dwMessageId);
-				break;
-			}
-		}
-		else if (_stricmp("UpgradeRun", pszEntityName) == 0)
-		{
-			switch (dwMessageId) {
-			case eMsg_UpgradeCheckEvent:
-				if (eMsgSig_UpgradeCheckEvent == dwMessageSignature) {
-					UpgradeRun::UpgradeCheckEvent t;
-					ErrorCodeEnum Error = SpBuffer2Object(Buffer, t);
-					if (Error == Error_Succeed)
-						OnUpgradeCheckEvent(pszEntityName, dwMessageId, dwMessageSignature, t);
-				}
-				else {
-					LOG_TRACE("UpgradeCheckEvent signature mismatched!" );
-				}
-				break;
-			case eMsg_UpgradeDoneEvent:
-				if (eMsgSig_UpgradeDoneEvent == dwMessageSignature) {
-					UpgradeRun::UpgradeDoneEvent t;
-					ErrorCodeEnum Error = SpBuffer2Object(Buffer, t);
-					if (Error == Error_Succeed)
-						OnUpgradeDoneEvent(pszEntityName, dwMessageId, dwMessageSignature, t);
-				}
-				else {
-					LOG_TRACE("UpgradeDoneEvent signature mismatched!");
-				}
-				break;
-			default:
-				LOG_TRACE("msg id %d ignored!", dwMessageId);
-				break;
-			}
-		}
-		else 
-		{ 
-			LOG_TRACE("ignore pszEntityName"); 
-		} 
-	}
-#endif
 public:
-	CUpgradeMgrFSM m_fsm;
 	map<CSimpleStringA, CSimpleStringA> m_FileHashMap;		// 版本文件hash值集合
 	CSimpleStringA m_strMD5List;
 	CSimpleStringA m_strSM3Hash;//SM3 32位hash
@@ -193,53 +94,34 @@ public:
 	virtual void Handle_RegistManualPack(SpReqAnsContext<UpgradeMgrService_RegistManualPack_Req, UpgradeMgrService_RegistManualPack_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
+		DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Handle_IsDownloading")("RegistManualPack received!");
 		DWORD dwRet = 0;
-		CSimpleStringA strErrmsg;
-
-		dwRet = m_pEntity->RegistManualPack(ctx->Req.strPackFile);		
-
-		if (ERROR_SUCCESS != dwRet)
-		{
-			switch (dwRet)
-			{
-			case NOT_MANUALPACK_ERR:
-				strErrmsg = "升级包类型不是手动安装,请确认!";
-				break;
-			
-			case IS_UPDATEING_ERR:
-				strErrmsg = "正在升级,请稍后!";
-				break;
-
-			default:
-				strErrmsg = "未知的手动升级错误,请联系维护人员!";
-				break;
-			}
-		}
-		else
-		{
-			Dbg("推送手动升级任务:[%s]成功", ctx->Req.strPackFile);
-		}
+		CSimpleStringA strErrmsg="RegistManualPack new UpgradeMgr is not deal with";
+		
+		dwRet = m_pEntity->RegistManualPack(ctx->Req.strPackFile);
 
 		ctx->Ans.Errcode = dwRet;
 		ctx->Ans.ErrMsg = strErrmsg;
 		ctx->Answer(Error_Succeed);
-		//ctx->Answer(Error_Succeed, dwRet);
 	}
 
 	virtual void Handle_CancelUpdate(SpReqAnsContext<UpgradeMgrService_CancelUpdate_Req, UpgradeMgrService_CancelUpdate_Ans>::Pointer ctx)
 	{
+		DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Handle_CancelUpdate")("CancelUpdate received!");
 		ErrorCodeEnum rc = m_pEntity->CancelUpdate(ctx->Req.strPackFile);
 		ctx->Answer(rc);
 	}
 
 	virtual void Handle_RollbackUpdate(SpReqAnsContext<UpgradeMgrService_RollbackUpdate_Req, UpgradeMgrService_RollbackUpdate_Ans>::Pointer ctx)
 	{
+		DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Handle_RollbackUpdate")("RollbackUpdate received!");
 		auto rc = m_pEntity->RollbackUpdate(ctx->Req.strVersion);
 		ctx->Answer(rc);
 	}
 
 	virtual void Handle_GetUpgradeState(SpReqAnsContext<UpgradeMgrService_GetUpgradeState_Req, UpgradeMgrService_GetUpgradeState_Ans>::Pointer ctx)
 	{
+		DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Handle_GetUpgradeState")("GetUpgradeState received!");
 		auto rc = m_pEntity->GetUpgradeState(ctx->Ans.bInstalling, ctx->Ans.strPackFile, ctx->Ans.strExecID,
 			ctx->Ans.cInstallState, ctx->Ans.bSysInstall, ctx->Ans.bLightPack, ctx->Ans.strNewVersion);
 		ctx->Answer(rc);
@@ -247,6 +129,7 @@ public:
 
 	virtual void Handle_SwitchUpgrade(SpReqAnsContext<UpgradeMgrService_SwitchUpgrade_Req, UpgradeMgrService_SwitchUpgrade_Ans>::Pointer ctx)
 	{
+		DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Handle_SwitchUpgrade")("SwitchUpgrade received!");
 		auto rc = m_pEntity->SwitchUpgrade(ctx->Req.strPackFile);
 		ctx->Answer(rc);
 	}
@@ -254,36 +137,14 @@ public:
 	virtual void Handle_GetManualPacks(SpReqAnsContext<UpgradeMgrService_GetManualPacks_Req, UpgradeMgrService_GetManualPacks_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
+		DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Handle_GetManualPacks")("GetManualPacks received!");
 		DWORD dwRet = 0;
-		CSimpleStringA strErrmsg;	
-		CSimpleStringA strPackList;
+		CSimpleStringA strErrmsg= "GetManualPacks new UpgradeMgr is not deal with";
+		CSimpleStringA strPackList="";
 		dwRet = m_pEntity->GetManualPacks(strPackList);
 
-		if (ERROR_SUCCESS == dwRet)
-		{
-			ctx->Ans.strPackFileList = strPackList;
-			Dbg("获取手动升级包列表成功:[%s]", strPackList);
-		}
-		else
-		{
-			Dbg("不存在手动安装的升级包");
-			ctx->Ans.strPackFileList = "";
-
-			switch (dwRet)
-			{
-			case NO_EXIST_MANUAL_PACK_ERR:
-				strErrmsg = "不存在手动升级任务,请确认!";
-				break;
-
-			default:
-				strErrmsg = "未知的获取手动升级任务错误,请联系维护人员!";
-				break;
-			}
-		}		
-
 		ctx->Ans.Errcode = dwRet;
 		ctx->Ans.ErrMsg = strErrmsg;
-		//ctx->Answer(Error_Succeed, dwRet);
 		ctx->Answer(Error_Succeed);
 	}