Browse Source

Z991239-5462 #comment fea: add param simpleret to xml, in the cast of forcing to use new log component and decreasing the length of request and event

chenliangyu 1 year ago
parent
commit
41244ce5d3

+ 1 - 0
Module/mod_chromium/CMethodInterface.h

@@ -7,6 +7,7 @@ namespace Chromium {
 
 	class CMedthodInterface {
 	public:
+		bool m_forceNewReturn;
 		std::string mMethodName;
 		std::string mMethodType;
 		CTransStruct mRequestInterpreter;

+ 12 - 0
Module/mod_chromium/CStructureInterpreter.cpp

@@ -71,6 +71,11 @@ namespace Chromium {
 			method.mMethodName = element->Attribute("name");
 			method.mMethodType = element->Value();
 
+			if (element->Attribute("simpleret") == NULL)
+				method.m_forceNewReturn = false;
+			else
+				method.m_forceNewReturn = element->BoolAttribute("simpleret");
+
 			if (0 == method.mMethodType.compare("twoway")) {
 				// twoway function
 				this->loadParams(method.mRequestInterpreter, element->FirstChildElement("req"));
@@ -90,6 +95,9 @@ namespace Chromium {
 				int i = convertStringToInt(element->Attribute("method_id"));
 				functionInterface.insert(std::pair<int, CMedthodInterface>(i, method));
 			}
+			
+			
+
 
 			//		functionInterface.emplace_back(method);
 			element = element->NextSiblingElement();
@@ -123,6 +131,10 @@ namespace Chromium {
 			CMedthodInterface mi;
 			mi.mMethodName = msgElement->Attribute("name");
 			mi.mMethodType = msgElement->Value();
+			if (msgElement->Attribute("simpleret") == NULL)
+				mi.m_forceNewReturn = false;
+			else
+				mi.m_forceNewReturn = msgElement->BoolAttribute("simpleret");
 			this->loadParams(mi.mResponseInterpreter, msgElement);
 
 			messageInterface.emplace_back(mi);

+ 24 - 25
Module/mod_chromium/CWSCodec.cpp

@@ -83,8 +83,7 @@ namespace Chromium {
 		
 	}
 
-	void CWSCodec::DeserializeBase(CMessage& msg, CTransStruct& ts, int& rpos, cJSON* ret) {
-
+	void CWSCodec::DeserializeBase(CMessage& msg, CTransStruct& ts, int& rpos, cJSON* ret, bool writeToOldParam) {
 		std::list<CMethodParam>::iterator i = ts.mParamList.begin();
 		auto deleteCjson = [](cJSON* dst) {
 			if (NULL != dst)
@@ -134,44 +133,44 @@ namespace Chromium {
 				{
 					int d = 0;
 					ReadT(msg.getPayload(), d, &rpos);
-					if (!t_isRepeat)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
 					cJSON_AddNumberToObject(extendJs.get(), i->mName.c_str(), d);
 				}
 				else if (i->mType == "uint")
 				{
 					unsigned int d = 0;
 					ReadT(msg.getPayload(), d, &rpos);
-					if (!t_isRepeat)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
 					cJSON_AddNumberToObject(extendJs.get(), i->mName.c_str(), d);
 				}
 				else if (i->mType == "short") {
 					short d = 0;
 					ReadT(msg.getPayload(), d, &rpos);
-					if (!t_isRepeat)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
 					cJSON_AddNumberToObject(extendJs.get(), i->mName.c_str(), d);
 				}
 				else if (i->mType == "ushort") {
 					unsigned short d = 0;
 					ReadT(msg.getPayload(), d, &rpos);
-					if (!t_isRepeat)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
 					cJSON_AddNumberToObject(extendJs.get(), i->mName.c_str(), d);
 				}
 				else if (i->mType == "char") {
 					char d = 0;
 					ReadT(msg.getPayload(), d, &rpos);
-					if (!t_isRepeat)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
 					cJSON_AddNumberToObject(extendJs.get(), i->mName.c_str(), d);
 				}
 				else if (i->mType == "uchar") {
 					unsigned char d = 0;
 					ReadT(msg.getPayload(), d, &rpos);
-					if (!t_isRepeat)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
 					cJSON_AddNumberToObject(extendJs.get(), i->mName.c_str(), d);
 				}
 				else if (i->mType == "int64") {
 					__int64 d = 0;
 					ReadT(msg.getPayload(), d, &rpos);
-					if (!t_isRepeat)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
 					cJSON_AddNumberToObject(extendJs.get(), i->mName.c_str(), d);
 				}
 				else if (i->mType == "uint64") {
@@ -182,35 +181,35 @@ namespace Chromium {
 #endif
 
 					ReadT(msg.getPayload(), d, &rpos);
-					if (!t_isRepeat)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
 					cJSON_AddNumberToObject(extendJs.get(), i->mName.c_str(), d);
 				}
 				else if (i->mType == "bool")
 				{
 					bool d = false;
 					ReadT(msg.getPayload(), d, &rpos);
-					if (!t_isRepeat)	cJSON_AddBoolToObject(ret, i->mName.c_str(), d);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddBoolToObject(ret, i->mName.c_str(), d);
 					cJSON_AddNumberToObject(extendJs.get(), i->mName.c_str(), d);
 				}
 				else if (i->mType == "double")
 				{
 					double d = false;
 					ReadT(msg.getPayload(), d, &rpos);
-					if (!t_isRepeat)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddNumberToObject(ret, i->mName.c_str(), d);
 					cJSON_AddNumberToObject(extendJs.get(), i->mName.c_str(), d);
 				}
 				else if (i->mType == "string")
 				{
 					CSimpleStringA d = "";
 					ReadT(msg.getPayload(), d, &rpos);
-					if (!t_isRepeat)	cJSON_AddStringToObject(ret, i->mName.c_str(), d);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddStringToObject(ret, i->mName.c_str(), d);
 					cJSON_AddStringToObject(extendJs.get(), i->mName.c_str(), d);
 				}
 				else if (i->mType == "wstring")
 				{
 					CSimpleStringW d = "";
 					ReadT(msg.getPayload(), d, &rpos);
-					if (!t_isRepeat)	cJSON_AddStringToObject(ret, i->mName.c_str(), CSimpleStringW2A(d));
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddStringToObject(ret, i->mName.c_str(), CSimpleStringW2A(d));
 					cJSON_AddStringToObject(extendJs.get(), i->mName.c_str(), CSimpleStringW2A(d));
 				}
 				else if (i->mType == "blob")
@@ -226,7 +225,7 @@ namespace Chromium {
 						int base64Len = modp_b64_encode_len(len);
 						base64Data = (char*)malloc(sizeof(char) * base64Len);
 						modp_b64_encode(base64Data, (const char*)binData, len);
-						if (!t_isRepeat)	cJSON_AddStringToObject(ret, i->mName.c_str(), base64Data);
+						if (!t_isRepeat && writeToOldParam)	cJSON_AddStringToObject(ret, i->mName.c_str(), base64Data);
 						cJSON_AddStringToObject(extendJs.get(), i->mName.c_str(), base64Data);
 						if (binData != NULL) {
 							free(binData);
@@ -238,7 +237,7 @@ namespace Chromium {
 						}
 					}
 					else {
-						if (!t_isRepeat)	cJSON_AddStringToObject(ret, i->mName.c_str(), "");
+						if (!t_isRepeat && writeToOldParam)	cJSON_AddStringToObject(ret, i->mName.c_str(), "");
 						cJSON_AddStringToObject(extendJs.get(), i->mName.c_str(), "");
 					}
 				}
@@ -255,7 +254,7 @@ namespace Chromium {
 						cJSON_AddItemToArray(tmpArray2, cJSON_CreateNumber(d));
 					}
 
-					if (!t_isRepeat)	cJSON_AddItemToObject(ret, i->mName.c_str(), tmpArray);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddItemToObject(ret, i->mName.c_str(), tmpArray);
 					cJSON_AddItemToObject(extendJs.get(), i->mName.c_str(), tmpArray2);
 				}
 				else if (i->mType == "array_bool")
@@ -271,7 +270,7 @@ namespace Chromium {
 						cJSON_AddItemToArray(tmpArray2, cJSON_CreateBool(d));
 					}
 
-					if (!t_isRepeat)	cJSON_AddItemToObject(ret, i->mName.c_str(), tmpArray);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddItemToObject(ret, i->mName.c_str(), tmpArray);
 					cJSON_AddItemToObject(extendJs.get(), i->mName.c_str(), tmpArray2);
 				}
 				else if (i->mType == "array_uint")
@@ -287,7 +286,7 @@ namespace Chromium {
 						cJSON_AddItemToArray(tmpArray2, cJSON_CreateNumber(d));
 					}
 
-					if (!t_isRepeat)	cJSON_AddItemToObject(ret, i->mName.c_str(), tmpArray);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddItemToObject(ret, i->mName.c_str(), tmpArray);
 					cJSON_AddItemToObject(extendJs.get(), i->mName.c_str(), tmpArray2);
 				}
 				else if (i->mType == "array_uint64")
@@ -307,7 +306,7 @@ namespace Chromium {
 						cJSON_AddItemToArray(tmpArray2, cJSON_CreateNumber(d));
 					}
 
-					if (!t_isRepeat)	cJSON_AddItemToObject(ret, i->mName.c_str(), tmpArray);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddItemToObject(ret, i->mName.c_str(), tmpArray);
 					cJSON_AddItemToObject(extendJs.get(), i->mName.c_str(), tmpArray2);
 				}
 				else if (i->mType == "array_string")
@@ -322,7 +321,7 @@ namespace Chromium {
 						cJSON_AddItemToArray(tmpArray, cJSON_CreateString(d));
 						cJSON_AddItemToArray(tmpArray2, cJSON_CreateString(d));
 					}
-					if (!t_isRepeat)	cJSON_AddItemToObject(ret, i->mName.c_str(), tmpArray);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddItemToObject(ret, i->mName.c_str(), tmpArray);
 					cJSON_AddItemToObject(extendJs.get(), i->mName.c_str(), tmpArray2);
 				}
 				else if (i->mType == "array_wstring")
@@ -338,7 +337,7 @@ namespace Chromium {
 						cJSON_AddItemToArray(tmpArray2, cJSON_CreateString(CSimpleStringW2A(d)));
 					}
 
-					if (!t_isRepeat)	cJSON_AddItemToObject(ret, i->mName.c_str(), tmpArray);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddItemToObject(ret, i->mName.c_str(), tmpArray);
 					cJSON_AddItemToObject(extendJs.get(), i->mName.c_str(), tmpArray2);
 				}
 				else if (i->mType == "array_blob")
@@ -363,7 +362,7 @@ namespace Chromium {
 							cJSON_AddItemToArray(tmpArray2, cJSON_CreateString(base64Data));
 						}
 					}
-					if (!t_isRepeat)	cJSON_AddItemToObject(ret, i->mName.c_str(), tmpArray);
+					if (!t_isRepeat && writeToOldParam)	cJSON_AddItemToObject(ret, i->mName.c_str(), tmpArray);
 					cJSON_AddItemToObject(extendJs.get(), i->mName.c_str(), tmpArray2);
 				}
 				else
@@ -391,7 +390,7 @@ namespace Chromium {
 
 		try
 		{
-			DeserializeBase(msg, ts, rpos, ret);
+			DeserializeBase(msg, ts, rpos, ret, !mi->m_forceNewReturn);
 		}
 		catch (...)
 		{
@@ -429,7 +428,7 @@ namespace Chromium {
 		CTransStruct ts = mi->mResponseInterpreter;
 		try
 		{
-			DeserializeBase(msg, ts, rpos, ret);
+			DeserializeBase(msg, ts, rpos, ret, !mi->m_forceNewReturn);
 		}
 		catch (...)
 		{

+ 1 - 1
Module/mod_chromium/CWSCodec.h

@@ -43,7 +43,7 @@ namespace Chromium {
 	private:
 		void DeserializeRequestAck(CMessage& msg, std::map<int, entity_def_struct>::iterator& it, int& rpos, cJSON* ret);
 		void DeserializeEvent(CMessage& msg, std::vector<CMedthodInterface>* list, int& rpos, cJSON* ret);
-		void DeserializeBase(CMessage& msg, CTransStruct& ts, int& rpos, cJSON* ret);	//解析json->buffer
+		void DeserializeBase(CMessage& msg, CTransStruct& ts, int& rpos, cJSON* ret, bool writeToOldParam);	//解析json->buffer
 
 		char* getJsonStr(cJSON* pJson);
 

+ 29 - 12
Module/mod_guiconsole/GuiConsole.xml

@@ -4,7 +4,7 @@
 	<!-- 定义一个名为 GUIConsoleService 的类 -->
 	<class name="GUIConsoleService" overlap="true" exclusive="false">
 		<!-- 定义一个名为 OpenLogSender 的双向通信,用于打开日志发送功能 -->
-		<twoway name="OpenLogSender" overlap="true">
+		<twoway name="OpenLogSender" overlap="true" simpleret="true">
 			<req>
 				<!-- 期望展示的类型,有效输入包含Ignore、Event、Warn、Error-->
 				<param name="LogType" type="string"/>
@@ -21,7 +21,7 @@
 			</res>
 		</twoway>
 		<!-- 定义一个名为 CloseLogSender 的双向通信,用于关闭日志发送功能 -->
-		<twoway name="CloseLogSender" overlap="true">
+		<twoway name="CloseLogSender" overlap="true" simpleret="true">
 			<req>
 				<!-- 预留参数1,类型为整数 -->
 				<param name="reserved1" type="int"/>
@@ -38,7 +38,7 @@
 			</res>
 		</twoway>
 		<!-- 定义一个名为 OpenEntityMonitor 的双向通信,用于打开实体监控功能 -->
-		<twoway name="OpenEntityMonitor" overlap="true">
+		<twoway name="OpenEntityMonitor" overlap="true" simpleret="true">
 			<req>
 				<!-- 预留参数1,类型为整数 -->
 				<param name="reserved1" type="int"/>
@@ -55,7 +55,7 @@
 			</res>
 		</twoway>
 		<!-- 定义一个名为 CloseEntityMonitor 的双向通信,用于关闭实体监控功能 -->
-		<twoway name="CloseEntityMonitor" overlap="true">
+		<twoway name="CloseEntityMonitor" overlap="true" simpleret="true">
 			<req>
 				<!-- 预留参数1,类型为整数 -->
 				<param name="reserved1" type="int"/>
@@ -72,7 +72,7 @@
 			</res>
 		</twoway>
 		<!-- 定义一个名为 OpenPerformanceSender 的双向通信,用于打开性能发送功能 -->
-		<twoway name="OpenPerformanceSender" overlap="true">
+		<twoway name="OpenPerformanceSender" overlap="true" simpleret="true">
 			<req>
 				<!-- 发送频率-秒,类型为整数 -->
 				<param name="sendFrequence" type="int"/>
@@ -89,7 +89,7 @@
 			</res>
 		</twoway>
 		<!-- 定义一个名为 ClosePerformanceSender 的双向通信,用于关闭性能发送功能 -->
-		<twoway name="ClosePerformanceSender" overlap="true">
+		<twoway name="ClosePerformanceSender" overlap="true" simpleret="true">
 			<req>
 				<!-- 预留参数1,类型为整数 -->
 				<param name="reserved1" type="int"/>
@@ -106,7 +106,7 @@
 			</res>
 		</twoway>
 		<!-- 定义一个名为 VTMSystemControl 的双向通信,用于控制 VTM 系统的重启功能 -->
-		<twoway name="VTMSystemControl" overlap="true">
+		<twoway name="VTMSystemControl" overlap="true" simpleret="true">
 			<req>
 				<!-- 重启功能,类型为字符串, 有效的输入参数包含RestartApp,RestartOS,ShutdownOS,ExitApp -->
 				<param name="rebootFunction" type="string"/>
@@ -123,7 +123,7 @@
 			</res>
 		</twoway>
 		<!-- 定义一个名为 VTM_controlEntity 的双向通信,用于控制 VTM 实体 -->
-		<twoway name="VTM_controlEntity" overlap="true">
+		<twoway name="VTM_controlEntity" overlap="true" simpleret="true">
 			<req>
 				<!-- 实体名称,类型为字符串 -->
 				<param name="entityName" type="string"/>
@@ -144,7 +144,7 @@
 			</res>
 		</twoway>
 		<!-- 定义一个名为 GetAllEntityList 的双向通信,用于获取所有实体列表 -->
-		<twoway name="GetAllEntityList" overlap="true">
+		<twoway name="GetAllEntityList" overlap="true" simpleret="true">
 			<req>
 				<!-- 预留参数1,类型为整数 -->
 				<param name="reserved1" type="int"/>
@@ -179,9 +179,26 @@
 				<param name="lastStartTime" type="array_string"/>
 			</res>
 		</twoway>
+		<!-- 定义一个名为 GetBasicInformation 的双向通信,用于获取基础信息,包含已启动实体个数、全部实体个数、整体系统启动时间、终端号、版本号、配置更新状态 -->
+		<twoway name="GetBasicInformation" overlap="true" simpleret="true">
+			<req>
+				<!-- 预留参数1,类型为整数 -->
+				<param name="reserved1" type="int"/>
+				<!-- 预留参数2,类型为整数 -->
+				<param name="reserved2" type="int"/>
+				<!-- 预留参数3,类型为字符串 -->
+				<param name="reserved3" type="string"/>
+			</req>
+			<res>
+				<!-- 操作结果,类型为布尔值 -->
+				<param name="result" type="bool"/>
+				<!-- 附加消息,类型为字符串 -->
+				<param name="additionalMsg" type="string"/>
+			</res>
+		</twoway>
 	</class>
 	<!-- 定义一个名为 EntityStatus 的消息,用于发送实体状态信息, 与OpenEntityMonitor,CloseEntityMonitor配合使用 -->
-	<message name="EntityStatus">
+	<message name="EntityStatus" simpleret="true">
 		<!-- 实体名称,类型为字符串 -->
 		<param name="entityName" type="string"/>
 		<!-- 状态,类型为字符串 -->
@@ -194,7 +211,7 @@
 		<param name="lastStartTime" type="string"/>
 	</message>
 	<!-- 定义一个名为 LogInfo 的消息 与OpenLogSender, CloseLogSender配合使用-->
-	<message name="LogInfo">
+	<message name="LogInfo" simpleret="true">
 		<param name="sysError" type="int"/>
 		<param name="userCode" type="int"/>
 		<param name="timeStr" type="string"/>
@@ -204,7 +221,7 @@
 	</message>
 
 	<!-- 定义一个名为 PerformanceList 的消息, 与OpenPerformanceSender, ClosePerformanceSender配合使用-->
-	<message name="PerformanceList">
+	<message name="PerformanceList" simpleret="true">
 		<param name="NameArr" type="array_string"/>
 		<param name="pidArr" type="array_int"/>
 		<param name="cpuArr" type="array_double"/>