|
@@ -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 (...)
|
|
|
{
|