|
@@ -399,14 +399,14 @@ namespace Chromium {
|
|
|
cJSON_AddStringToObject(ret, PARAMLIST_HEAD, dstPayLoad.c_str());
|
|
cJSON_AddStringToObject(ret, PARAMLIST_HEAD, dstPayLoad.c_str());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- std::pair<bool, std::string> CWSCodec::DeserializeRequestAck(CMessage & msg, std::map<int, entity_def_struct>::iterator & it, int& rpos, cJSON * ret) {
|
|
|
|
|
|
|
+ std::pair<bool, std::string> CWSCodec::DeserializeRequestAck(CMessage & msg, std::map<int, entity_def_struct>::iterator & it, int& rpos, cJSON * ret, bool isSafe) {
|
|
|
entity_def_struct* p_struct = &it->second;
|
|
entity_def_struct* p_struct = &it->second;
|
|
|
CMedthodInterface* mi = mInterpreter->getFunctionInterface(p_struct->entity_name, p_struct->class_name, p_struct->methodID);
|
|
CMedthodInterface* mi = mInterpreter->getFunctionInterface(p_struct->entity_name, p_struct->class_name, p_struct->methodID);
|
|
|
CTransStruct ts = mi->mResponseInterpreter;
|
|
CTransStruct ts = mi->mResponseInterpreter;
|
|
|
|
|
|
|
|
try
|
|
try
|
|
|
{
|
|
{
|
|
|
- DeserializeBase(msg, ts, rpos, ret, !mi->m_forceNewReturn);
|
|
|
|
|
|
|
+ DeserializeBase(msg, ts, rpos, ret, !(mi->m_forceNewReturn || isSafe));
|
|
|
return std::make_pair(true, mi->mMethodName);
|
|
return std::make_pair(true, mi->mMethodName);
|
|
|
}
|
|
}
|
|
|
catch (...)
|
|
catch (...)
|
|
@@ -430,9 +430,7 @@ namespace Chromium {
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- void CWSCodec::DeserializeEvent(CMessage & msg,
|
|
|
|
|
- std::vector<CMedthodInterface>*list,
|
|
|
|
|
- int& rpos, cJSON * ret) {
|
|
|
|
|
|
|
+ void CWSCodec::DeserializeEvent(CMessage & msg, std::vector<CMedthodInterface>*list, int& rpos, cJSON * ret, bool isSafe) {
|
|
|
int eventID = msg.getEventID();
|
|
int eventID = msg.getEventID();
|
|
|
if (NULL == list || eventID < 0 || eventID >= list->size())
|
|
if (NULL == list || eventID < 0 || eventID >= list->size())
|
|
|
{
|
|
{
|
|
@@ -446,7 +444,7 @@ namespace Chromium {
|
|
|
CTransStruct ts = mi->mResponseInterpreter;
|
|
CTransStruct ts = mi->mResponseInterpreter;
|
|
|
try
|
|
try
|
|
|
{
|
|
{
|
|
|
- DeserializeBase(msg, ts, rpos, ret, !mi->m_forceNewReturn);
|
|
|
|
|
|
|
+ DeserializeBase(msg, ts, rpos, ret, !(mi->m_forceNewReturn || isSafe));
|
|
|
}
|
|
}
|
|
|
catch (...)
|
|
catch (...)
|
|
|
{
|
|
{
|
|
@@ -468,6 +466,26 @@ namespace Chromium {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ void CWSCodec::processErrorCode(cJSON* ret, CMessage& msg, int errorCode, socket_msgInfo& msgInfo, int &rpos, bool isSafe) {
|
|
|
|
|
+ cJSON_AddNumberToObject(ret, "errorCode", errorCode);
|
|
|
|
|
+
|
|
|
|
|
+ CSimpleStringA errorMsg = "";
|
|
|
|
|
+ ReadT(msg.getPayload(), errorMsg, &rpos);
|
|
|
|
|
+
|
|
|
|
|
+ auto userCodeInfo = getErrMsgByRemark(errorMsg.GetData());
|
|
|
|
|
+
|
|
|
|
|
+ if (userCodeInfo.first != 0) {
|
|
|
|
|
+ cJSON_AddNumberToObject(ret, "userCode", userCodeInfo.first);
|
|
|
|
|
+ cJSON_AddStringToObject(ret, "rtaCode", userCodeInfo.second.VTMCode.c_str());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ cJSON_AddStringToObject(ret, "errorMsg", userCodeInfo.second.errMsg.c_str());
|
|
|
|
|
+
|
|
|
|
|
+ msgInfo.userCodeVal = errorCode;
|
|
|
|
|
+ msgInfo.userCode = userCodeInfo.second.userCode;
|
|
|
|
|
+ msgInfo.rtaCode = userCodeInfo.second.VTMCode;
|
|
|
|
|
+ msgInfo.warnMsg = userCodeInfo.second.errMsg;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
std::string CWSCodec::BufferToJson(CMessage & msg, boost::function<void(int, int)> dealErrcodeFun, socket_msgInfo& msgInfo, int replaceTransId) {
|
|
std::string CWSCodec::BufferToJson(CMessage & msg, boost::function<void(int, int)> dealErrcodeFun, socket_msgInfo& msgInfo, int replaceTransId) {
|
|
|
//replaceTransId==0,MessageType为8(Event),其他都应该有值
|
|
//replaceTransId==0,MessageType为8(Event),其他都应该有值
|
|
@@ -481,6 +499,9 @@ namespace Chromium {
|
|
|
if (msg.getLength() < 12) //End session len = 12
|
|
if (msg.getLength() < 12) //End session len = 12
|
|
|
return std::string(); // 丢弃消息
|
|
return std::string(); // 丢弃消息
|
|
|
|
|
|
|
|
|
|
+ bool isSafe = false;
|
|
|
|
|
+ if (ConfigManager::getInstance().m_ws_infoArr.find(msgInfo.hdlId) != ConfigManager::getInstance().m_ws_infoArr.end())
|
|
|
|
|
+ isSafe = ConfigManager::getInstance().m_ws_infoArr[msgInfo.hdlId].isSafe;
|
|
|
|
|
|
|
|
int srcTransId = msg.getTransID();
|
|
int srcTransId = msg.getTransID();
|
|
|
// 通用反序列化
|
|
// 通用反序列化
|
|
@@ -501,45 +522,14 @@ namespace Chromium {
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
ReadT(msg.getPayload(), errorCode, &rpos);
|
|
ReadT(msg.getPayload(), errorCode, &rpos);
|
|
|
- cJSON_AddNumberToObject(ret, "errorCode", errorCode);
|
|
|
|
|
- ReadT(msg.getPayload(), errorMsg, &rpos);
|
|
|
|
|
- {
|
|
|
|
|
- auto userCodeInfo = getErrMsgByRemark(errorMsg.GetData());
|
|
|
|
|
- if (userCodeInfo.first != 0)
|
|
|
|
|
- {
|
|
|
|
|
- cJSON_AddNumberToObject(ret, "userCode", userCodeInfo.first);
|
|
|
|
|
- cJSON_AddStringToObject(ret, "rtaCode", userCodeInfo.second.VTMCode.c_str());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- cJSON_AddStringToObject(ret, "errorMsg", userCodeInfo.second.errMsg.c_str());
|
|
|
|
|
-
|
|
|
|
|
- msgInfo.userCodeVal = errorCode;
|
|
|
|
|
- msgInfo.userCode = userCodeInfo.second.userCode;
|
|
|
|
|
- msgInfo.rtaCode = userCodeInfo.second.VTMCode;
|
|
|
|
|
- msgInfo.warnMsg = userCodeInfo.second.errMsg;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ processErrorCode(ret, msg, errorCode, msgInfo, rpos, isSafe);
|
|
|
msgInfo.sessionId = msg.getSessionID();
|
|
msgInfo.sessionId = msg.getSessionID();
|
|
|
break;
|
|
break;
|
|
|
case MessageType::SessionAck:
|
|
case MessageType::SessionAck:
|
|
|
cJSON_AddNumberToObject(ret, "sessionID", msg.getSessionID());
|
|
cJSON_AddNumberToObject(ret, "sessionID", msg.getSessionID());
|
|
|
cJSON_AddNumberToObject(ret, "transID", replaceTransId != 0 ? replaceTransId : msg.getTransID());
|
|
cJSON_AddNumberToObject(ret, "transID", replaceTransId != 0 ? replaceTransId : msg.getTransID());
|
|
|
ReadT(msg.getPayload(), errorCode, &rpos);
|
|
ReadT(msg.getPayload(), errorCode, &rpos);
|
|
|
- cJSON_AddNumberToObject(ret, "errorCode", errorCode);
|
|
|
|
|
- ReadT(msg.getPayload(), errorMsg, &rpos);
|
|
|
|
|
- {
|
|
|
|
|
- auto userCodeInfo = getErrMsgByRemark(errorMsg.GetData());
|
|
|
|
|
- if (userCodeInfo.first != 0)
|
|
|
|
|
- {
|
|
|
|
|
- cJSON_AddNumberToObject(ret, "userCode", userCodeInfo.first);
|
|
|
|
|
- cJSON_AddStringToObject(ret, "rtaCode", userCodeInfo.second.VTMCode.c_str());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- cJSON_AddStringToObject(ret, "errorMsg", userCodeInfo.second.errMsg.c_str());
|
|
|
|
|
- msgInfo.userCodeVal = errorCode;
|
|
|
|
|
- msgInfo.userCode = userCodeInfo.second.userCode;
|
|
|
|
|
- msgInfo.rtaCode = userCodeInfo.second.VTMCode;
|
|
|
|
|
- msgInfo.warnMsg = userCodeInfo.second.errMsg;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ processErrorCode(ret, msg, errorCode, msgInfo, rpos, isSafe);
|
|
|
msgInfo.inner_transID = srcTransId;
|
|
msgInfo.inner_transID = srcTransId;
|
|
|
msgInfo.sessionId = msg.getSessionID();
|
|
msgInfo.sessionId = msg.getSessionID();
|
|
|
break;
|
|
break;
|
|
@@ -553,34 +543,20 @@ namespace Chromium {
|
|
|
cJSON_AddNumberToObject(ret, "sessionID", msg.getSessionID());
|
|
cJSON_AddNumberToObject(ret, "sessionID", msg.getSessionID());
|
|
|
cJSON_AddNumberToObject(ret, "transID", replaceTransId != 0 ? replaceTransId : msg.getTransID());
|
|
cJSON_AddNumberToObject(ret, "transID", replaceTransId != 0 ? replaceTransId : msg.getTransID());
|
|
|
ReadT(msg.getPayload(), errorCode, &rpos);
|
|
ReadT(msg.getPayload(), errorCode, &rpos);
|
|
|
- cJSON_AddNumberToObject(ret, "errorCode", errorCode);
|
|
|
|
|
- ReadT(msg.getPayload(), errorMsg, &rpos);
|
|
|
|
|
- {
|
|
|
|
|
- auto userCodeInfo = getErrMsgByRemark(errorMsg.GetData());
|
|
|
|
|
- if (userCodeInfo.first != 0)
|
|
|
|
|
- {
|
|
|
|
|
- cJSON_AddNumberToObject(ret, "userCode", userCodeInfo.first);
|
|
|
|
|
- cJSON_AddStringToObject(ret, "rtaCode", userCodeInfo.second.VTMCode.c_str());
|
|
|
|
|
- }
|
|
|
|
|
- cJSON_AddStringToObject(ret, "errorMsg", userCodeInfo.second.errMsg.c_str());
|
|
|
|
|
-
|
|
|
|
|
- msgInfo.userCodeVal = errorCode;
|
|
|
|
|
- msgInfo.userCode = userCodeInfo.second.userCode;
|
|
|
|
|
- msgInfo.rtaCode = userCodeInfo.second.VTMCode;
|
|
|
|
|
- msgInfo.warnMsg = userCodeInfo.second.errMsg;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ processErrorCode(ret, msg, errorCode, msgInfo, rpos, isSafe);
|
|
|
break;
|
|
break;
|
|
|
case MessageType::GetVarAck:
|
|
case MessageType::GetVarAck:
|
|
|
cJSON_AddNumberToObject(ret, "sessionID", msg.getSessionID());
|
|
cJSON_AddNumberToObject(ret, "sessionID", msg.getSessionID());
|
|
|
cJSON_AddNumberToObject(ret, "transID", replaceTransId != 0 ? replaceTransId : msg.getTransID());
|
|
cJSON_AddNumberToObject(ret, "transID", replaceTransId != 0 ? replaceTransId : msg.getTransID());
|
|
|
ReadT(msg.getPayload(), errorCode, &rpos);
|
|
ReadT(msg.getPayload(), errorCode, &rpos);
|
|
|
- cJSON_AddNumberToObject(ret, "errorCode", errorCode);
|
|
|
|
|
- ReadT(msg.getPayload(), errorMsg, &rpos);
|
|
|
|
|
- cJSON_AddStringToObject(ret, "value", errorMsg);
|
|
|
|
|
|
|
+ processErrorCode(ret, msg, errorCode, msgInfo, rpos, isSafe);
|
|
|
break;
|
|
break;
|
|
|
default:
|
|
default:
|
|
|
errorCode = Error_Unexpect;
|
|
errorCode = Error_Unexpect;
|
|
|
- cJSON_AddNumberToObject(ret, "errorCode", errorCode);
|
|
|
|
|
|
|
+ if (isSafe)
|
|
|
|
|
+ cJSON_AddStringToObject(ret, "errorCode", RTA_UNKNOW_ERR);
|
|
|
|
|
+ else
|
|
|
|
|
+ cJSON_AddNumberToObject(ret, "errorCode", errorCode);
|
|
|
cJSON_AddStringToObject(ret, "errorMsg", "未知消息类型");
|
|
cJSON_AddStringToObject(ret, "errorMsg", "未知消息类型");
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
@@ -636,7 +612,7 @@ namespace Chromium {
|
|
|
free(str);
|
|
free(str);
|
|
|
return s;
|
|
return s;
|
|
|
}
|
|
}
|
|
|
- auto deserializeRet = DeserializeRequestAck(msg, it, rpos, ret);
|
|
|
|
|
|
|
+ auto deserializeRet = DeserializeRequestAck(msg, it, rpos, ret, isSafe);
|
|
|
msgInfo.entityName = it->second.entity_name;
|
|
msgInfo.entityName = it->second.entity_name;
|
|
|
msgInfo.className = it->second.class_name;
|
|
msgInfo.className = it->second.class_name;
|
|
|
msgInfo.functionName = deserializeRet.second;
|
|
msgInfo.functionName = deserializeRet.second;
|
|
@@ -658,7 +634,7 @@ namespace Chromium {
|
|
|
free(str);
|
|
free(str);
|
|
|
return s;
|
|
return s;
|
|
|
}
|
|
}
|
|
|
- DeserializeEvent(msg, iter->second, rpos, ret);
|
|
|
|
|
|
|
+ DeserializeEvent(msg, iter->second, rpos, ret, isSafe);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
char* str = getJsonStr(ret);
|
|
char* str = getJsonStr(ret);
|