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

Z991239-5739 #comment feat:VtmLoader启动列表增加ExcludedLoadList逻辑

oilyang 1 жил өмнө
parent
commit
e980a7f8a8

+ 28 - 3
Module/mod_vtmloader/VtmLoaderFSM.cpp

@@ -1017,10 +1017,11 @@ int CVtmLoaderFSM::EntityLoad()
 	CSmartPointer<IConfigInfo> spConfigCen,spRunCfg;
 	GetEntityBase()->GetFunction()->OpenConfig(Config_CenterSetting, spConfigCen);
 	GetEntityBase()->GetFunction()->OpenConfig(Config_Run, spRunCfg);
-	CSimpleStringA csCoreBootList(true), csSafeLoadList(true), csOperatingList(true),csKeyCB("CoreBootList."),csKeySL("SafeLoadList."),csKeyOp("OperatingList.");
+	CSimpleStringA csCoreBootList(true), csSafeLoadList(true), csOperatingList(true), csKeyCB("CoreBootList."), csKeySL("SafeLoadList."), csKeyOp("OperatingList."), csExcludedLoadList(true);
 	spConfigCen->ReadConfigValue(GetEntityBase()->GetEntityName(), (csKeyCB + m_sysInfo.strMachineType).GetData(), csCoreBootList);
 	spConfigCen->ReadConfigValue(GetEntityBase()->GetEntityName(), (csKeySL + m_sysInfo.strMachineType).GetData(), csSafeLoadList);
 	spConfigCen->ReadConfigValue(GetEntityBase()->GetEntityName(), (csKeyOp + m_sysInfo.strMachineType).GetData(), csOperatingList);
+	spConfigCen->ReadConfigValue(GetEntityBase()->GetEntityName(), "ExcludedLoadList", csExcludedLoadList);
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("CoreBoot.EntityList.%s:%s", m_sysInfo.strMachineType.GetData(), csCoreBootList.GetData());
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("SafeLoad.EntityList.%s:%s", m_sysInfo.strMachineType.GetData(), csSafeLoadList.GetData());
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Operating.EntityList.%s:%s", m_sysInfo.strMachineType.GetData(), csOperatingList.GetData());
@@ -1081,12 +1082,15 @@ int CVtmLoaderFSM::EntityLoad()
 	LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, "开始加载实体");
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("StartLoadEntity")("开始加载实体");
 
-	//int count, cbNum, slNum, opNum;
-	//count = cbNum = slNum = opNum = 0;
+	m_arrExCludedList.Init(64);
+	m_arrExCludedList = csExcludedLoadList.Split('|');
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ExcludedLoadList:%s, count:%d", csExcludedLoadList.GetData(), m_arrExCludedList.GetCount());
+
 	m_csEntityList = "GuiConsole|Chromium|VtmLoader|";
 	CAutoArray<CSimpleStringA> arrCoreBoot;
 	arrCoreBoot.Init(64);
 	arrCoreBoot = csCoreBootList.Split('|');
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("arrCoreBoot count:%d", arrCoreBoot.GetCount());
 	for (int i = 0; i < arrCoreBoot.GetCount(); ++i)
 	{
 		CAutoArray<CSimpleStringA> arrEntity;
@@ -1097,6 +1101,10 @@ int CVtmLoaderFSM::EntityLoad()
 		if (arrEntity[0].Compare("VtmLoader", true) == 0 || arrEntity[0].Compare("Chromium", true) == 0
 			|| arrEntity[0].Compare("GuiConsole", true) == 0)
 			continue;
+		//Exclude the "ExcludedLoadList" entity
+		if (IfInExcludedLoadList(arrEntity[0]))
+			continue;
+
 		m_vCoreBoot.push_back(arrEntity[0]);
 		m_csEntityList += arrEntity[0] + "|";
 		if (arrEntity[1].Compare("1") == 0)
@@ -1122,6 +1130,9 @@ int CVtmLoaderFSM::EntityLoad()
 		if (arrEntity[0].Compare("VtmLoader", true) == 0 || arrEntity[0].Compare("Chromium", true) == 0
 			|| arrEntity[0].Compare("GuiConsole", true) == 0)
 			continue;
+		//Exclude the "ExcludedLoadList" entity
+		if (IfInExcludedLoadList(arrEntity[0]))
+			continue;
 		//去重,防止前面已经加载了
 		if (find(m_vCoreBoot.begin(), m_vCoreBoot.end(), arrEntity[0].GetData()) != m_vCoreBoot.end())
 			continue;
@@ -1150,6 +1161,9 @@ int CVtmLoaderFSM::EntityLoad()
 		if (arrEntity[0].Compare("VtmLoader", true) == 0 || arrEntity[0].Compare("Chromium", true) == 0
 			|| arrEntity[0].Compare("GuiConsole", true) == 0)
 			continue;
+		//Exclude the "ExcludedLoadList" entity
+		if (IfInExcludedLoadList(arrEntity[0]))
+			continue;
 		//去重,防止前面已经加载了
 		if (find(m_vCoreBoot.begin(), m_vCoreBoot.end(), arrEntity[0].GetData()) != m_vCoreBoot.end()
 			|| find(m_vSafeLoad.begin(), m_vSafeLoad.end(), arrEntity[0].GetData()) != m_vSafeLoad.end())
@@ -3069,4 +3083,15 @@ void CVtmLoaderFSM::CopyDepFilesToNewDepPath()
 	}
 	else
 		m_eDepCopyStage = DepDirInitCopy_CopyFailed;
+}
+bool CVtmLoaderFSM::IfInExcludedLoadList(CSimpleStringA csEntityName)
+{
+	if (csEntityName.IsNullOrEmpty())
+		return true;
+	for (int i = 0; i < m_arrExCludedList.GetCount(); ++i)
+	{
+		if (csEntityName.Compare(m_arrExCludedList[i], true) == 0)
+			return true;
+	}
+	return false;
 }

+ 2 - 0
Module/mod_vtmloader/VtmLoaderFSM.h

@@ -190,6 +190,7 @@ private:
 	map<CSimpleStringA, EntityLoadInfo> m_coreBootOpt;
 	map<CSimpleStringA, EntityLoadInfo> m_safeLoadOpt;
 	map<CSimpleStringA, EntityLoadInfo> m_operatingOpt;
+	CAutoArray<CSimpleStringA> m_arrExCludedList;
 
 	bool m_bMediaControllerOK, m_bSIPPhoneStartFail;
 	DepDirInitCopyStage m_eDepCopyStage;
@@ -199,6 +200,7 @@ private:
 	void CheckEntityRestartIdle(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx);
 	void CheckAudio(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx);
 	void CheckVideo(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx);
+	bool IfInExcludedLoadList(CSimpleStringA csEntityName);
 		
 	
 };