Jelajahi Sumber

Z991239-5890 #comment 优化不同机型加载事件转换策略流程

80274480 9 bulan lalu
induk
melakukan
7b8c928c19

+ 34 - 31
Module/mod_evtconverter/evtengine.cpp

@@ -1711,7 +1711,8 @@ static int load_slot_arrays(evt_engine_t* engine, const char* ns, rvc_slot_t* tn
 		if (nIslog) {
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("slot miss attribute code!");
 		}
-		goto on_error;
+		slot_free(slot);
+		return Error_Unexpect;
 	}
 	else {
 		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("tnode->strCode == %s.", tnode->strCode);
@@ -1720,7 +1721,8 @@ static int load_slot_arrays(evt_engine_t* engine, const char* ns, rvc_slot_t* tn
 			if (nIslog) {
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("parse code failed!");
 			}
-			goto on_error;
+			slot_free(slot);
+			return Error_Unexpect;
 		}
 		else {
 			slot->key.code = code;
@@ -1732,12 +1734,14 @@ static int load_slot_arrays(evt_engine_t* engine, const char* ns, rvc_slot_t* tn
 		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("tnode->strTimeout == %s.", tnode->strTimeout);
 		evt_expire_t* expire = ZALLOC_T(evt_expire_t);
 		if (!expire) {
-			goto on_error;
+			slot_free(slot);
+			return Error_Unexpect;
 		}
 		expire->timeout = parse_timeout_value(tnode->strTimeout);
 		if (expire->timeout < 0) {
 			FREE(expire);
-			goto on_error;
+			slot_free(slot);
+			return Error_Unexpect;
 		}
 
 		if (expire->timeout == 0) {
@@ -1790,7 +1794,8 @@ static int load_slot_arrays(evt_engine_t* engine, const char* ns, rvc_slot_t* tn
 					if (nIslog) {
 						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("parse code of Reset tag Source attribute failed!");
 					}
-					goto on_error;
+					slot_free(slot);
+					return Error_Unexpect;
 				}
 				else {
 					ARRAY_PUSH(slot->arr_reset, char*) = source;
@@ -1810,7 +1815,8 @@ static int load_slot_arrays(evt_engine_t* engine, const char* ns, rvc_slot_t* tn
 		if (nIslog) {
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("duplicate slot %s", slot->key.code);
 		}
-		goto on_error;
+		slot_free(slot);
+		return Error_Unexpect;
 	}
 
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("%s:%d engine->slot_ht->size = %d, engine->slot_ht count = %d.", __FUNCTION__, __LINE__, engine->slot_ht->size, htable_get_count(engine->slot_ht));
@@ -1822,10 +1828,6 @@ static int load_slot_arrays(evt_engine_t* engine, const char* ns, rvc_slot_t* tn
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("%s:%d engine->slot_ht->size = %d, engine->slot_ht count = %d.", __FUNCTION__, __LINE__, engine->slot_ht->size, htable_get_count(engine->slot_ht));
 
 	return 0;
-
-on_error:
-	slot_free(slot);
-	return Error_Unexpect;
 }
 
 
@@ -2096,7 +2098,8 @@ static int load_sysvar_element_rule(evt_engine_t* engine, evt_trigger_t* trigger
 		rule->ref_sysvar = sysvar;
 	}
 	else {
-		goto on_error;
+		sysvar_rule_free(rule);
+		return Error_Unexpect;
 	}
 
 	if (sysvar_elem->strPositive) {
@@ -2128,16 +2131,13 @@ static int load_sysvar_element_rule(evt_engine_t* engine, evt_trigger_t* trigger
 		if (nIslog) {
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("trigger sysvar does not have state children!");
 		}
-		goto on_error;
+		sysvar_rule_free(rule);
+		return Error_Unexpect;
 	}
 
 	list_add_tail(&rule->entry, &trigger->sysvar_list);
 
 	return 0;
-
-on_error:
-	sysvar_rule_free(rule);
-	return Error_Unexpect;
 }
 
 static int load_sysvar_rule(evt_engine_t *engine, evt_trigger_t *trigger, scew_element *sysvar_elem)
@@ -2234,14 +2234,16 @@ static int load_trigger_arrays(evt_engine_t* engine, const char* ns, rvc_trigger
 			if (nIslog) {
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("trigger log type parse failed!");
 			}
-			goto on_error;
+			trigger_free(trigger);
+			return Error_Unexpect;
 		}
 	}
 	else {
 		if (nIslog) {
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("trigger LogType undefined!");
 		}
-		goto on_error;
+		trigger_free(trigger);
+		return Error_Unexpect;
 	}
 
 	if (trigger_elem->strSeverityLevel) {
@@ -2251,7 +2253,8 @@ static int load_trigger_arrays(evt_engine_t* engine, const char* ns, rvc_trigger
 			if (nIslog) {
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("trigger parse severity level failed!");
 			}
-			goto on_error;
+			trigger_free(trigger);
+			return Error_Unexpect;
 		}
 	}
 	else {
@@ -2259,7 +2262,8 @@ static int load_trigger_arrays(evt_engine_t* engine, const char* ns, rvc_trigger
 			if (nIslog) {
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("trigger LogType undefined!");
 			}
-			goto on_error;
+			trigger_free(trigger);
+			return Error_Unexpect;
 		}
 	}
 
@@ -2270,7 +2274,8 @@ static int load_trigger_arrays(evt_engine_t* engine, const char* ns, rvc_trigger
 			if (nIslog) {
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("trigger parse sys code failed! sys_code: %s", trigger_elem->strSysError);
 			}
-			goto on_error;
+			trigger_free(trigger);
+			return Error_Unexpect;
 		}
 	}
 	else {
@@ -2278,7 +2283,8 @@ static int load_trigger_arrays(evt_engine_t* engine, const char* ns, rvc_trigger
 			if (nIslog) {
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("trigger parse sys code undefined!");
 			}
-			goto on_error;
+			trigger_free(trigger);
+			return Error_Unexpect;
 		}
 	}
 
@@ -2291,7 +2297,8 @@ static int load_trigger_arrays(evt_engine_t* engine, const char* ns, rvc_trigger
 			if (nIslog) {
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("trigger parse user code undefined!");
 			}
-			goto on_error;
+			trigger_free(trigger);
+			return Error_Unexpect;
 		}
 	}
 
@@ -2332,10 +2339,6 @@ static int load_trigger_arrays(evt_engine_t* engine, const char* ns, rvc_trigger
 	list_add_tail(&trigger->entry, &engine->trigger_list);
 
 	return 0;
-
-on_error:
-	trigger_free(trigger);
-	return Error_Unexpect;
 }
 
 static int load_trigger(evt_engine_t *engine, const char *ns, scew_element *trigger_elem)
@@ -2583,8 +2586,8 @@ static int load_strategy_array(evt_engine_t* engine, slot_trigger_elem_t* peleme
 	int rc = Error_Param;
 
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ns = %s.", pelement->slotns);
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("sizeof(pelement->slotarr) = %d.", sizeof(pelement->slotarr));
-	for (int islot = 0; islot < sizeof(pelement->slotarr) / sizeof(rvc_slot_t); islot++) {
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("pelement->islotarrlen = %d.", pelement->islotarrlen);
+	for (int islot = 0; islot < pelement->islotarrlen; islot++) {
 		if (load_slot_arrays(engine, ns, &pelement->slotarr[islot]) != 0) {
 			if (nIslog) {
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("load slot array failed!");
@@ -2593,8 +2596,8 @@ static int load_strategy_array(evt_engine_t* engine, slot_trigger_elem_t* peleme
 		}
 	}
 
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("sizeof(pelement->triggerarr) = %d.", sizeof(pelement->triggerarr));
-	for (int itrigger = 0; itrigger < sizeof(pelement->triggerarr) / sizeof(rvc_trigger_t); itrigger++) {
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("pelement->itriggerarrlen = %d.", pelement->itriggerarrlen);
+	for (int itrigger = 0; itrigger < pelement->itriggerarrlen; itrigger++) {
 		if (load_trigger_arrays(engine, ns, &pelement->triggerarr[itrigger]) != 0) {
 			if (nIslog) {
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("load trigger array failed!");

+ 2 - 0
Module/mod_evtconverter/evtengine.h

@@ -11,7 +11,9 @@
 typedef struct slot_trigger_elem_s {
 	char* slotns;
 	rvc_slot_t* slotarr;
+	int islotarrlen;
 	rvc_trigger_t* triggerarr;
+	int itriggerarrlen;
 }slot_trigger_elem_t;
 
 typedef struct evt_engine_t evt_engine_t;

+ 4 - 5
Module/mod_evtconverter/mod_evtconverter.cpp

@@ -13,8 +13,8 @@
 //#endif // !RVC_USE_XML
 
 static slot_trigger_elem_t slot_trigger_arr[] = {
-	{"SipphoneEvent", SipphoneSlotList, SipphoneTriggerList},
-	{"CustomerApproachEvent", CustomerApproachSlotList, CustomerApproachTriggerList}
+	{"SipphoneEvent", SipphoneSlotList, sizeof(SipphoneSlotList)/sizeof(rvc_slot_t), SipphoneTriggerList, sizeof(SipphoneTriggerList) / sizeof(rvc_trigger_t)},
+	{"CustomerApproachEvent", CustomerApproachSlotList,sizeof(CustomerApproachSlotList) / sizeof(rvc_slot_t), CustomerApproachTriggerList, sizeof(CustomerApproachTriggerList) / sizeof(rvc_trigger_t)}
 };
 
 class CEventConverterEntity : public CEntityBase, public ISysVarListener, public ILogListener
@@ -32,6 +32,7 @@ public:
 	}
 	ErrorCodeEnum __OnStart(ErrorCodeEnum preOperationError)
 	{
+
 		if (m_nIslog){
 
 		}
@@ -113,14 +114,12 @@ public:
 		}
 #else
 		if (num > 0) {
-
 			rc = evt_engine_load(engine, num, slot_trigger_arr);
-
 			if (rc != 0) {
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("load config failed!");
 				return (ErrorCodeEnum)rc;
 			}
-	}
+		}
 #endif
 		rc = evt_engine_start(engine);
 		if (rc != 0) {