forked from rdkcentral/rdkservices
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUtilsJsonRpc.h
149 lines (138 loc) · 5.45 KB
/
UtilsJsonRpc.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#pragma once
#include "UtilsLogging.h"
#define LOGINFOMETHOD() { std::string json; parameters.ToString(json); LOGINFO( "params=%s", json.c_str() ); }
#define LOGTRACEMETHODFIN() { std::string json; response.ToString(json); LOGINFO( "response=%s", json.c_str() ); }
/**
* DO NOT USE THIS.
*
* "success" parameter was added for legacy reasons.
* Newer APIs should return only error code to match the spec
*/
#define returnResponse(expression) \
{ \
bool successBoolean = expression; \
response["success"] = successBoolean; \
LOGTRACEMETHODFIN(); \
return (successBoolean ? WPEFramework::Core::ERROR_NONE : WPEFramework::Core::ERROR_GENERAL); \
}
#define returnIfParamNotFound(param, name) \
if (!param.HasLabel(name)) \
{ \
LOGERR("No argument '%s'", name); \
returnResponse(false); \
}
#define returnIfStringParamNotFound(param, name) \
if (!param.HasLabel(name) || param[name].Content() != WPEFramework::Core::JSON::Variant::type::STRING) \
{\
LOGERR("No argument '%s' or it has incorrect type", name); \
returnResponse(false); \
}
#define returnIfBooleanParamNotFound(param, name) \
if (!param.HasLabel(name) || param[name].Content() != WPEFramework::Core::JSON::Variant::type::BOOLEAN) \
{ \
LOGERR("No argument '%s' or it has incorrect type", name); \
returnResponse(false); \
}
#define returnIfNumberParamNotFound(param, name) \
if (!param.HasLabel(name) || param[name].Content() != WPEFramework::Core::JSON::Variant::type::NUMBER) \
{ \
LOGERR("No argument '%s' or it has incorrect type", name); \
returnResponse(false); \
}
/**
* DO NOT USE THIS.
*
* You should be capable of just using "Notify".
*/
#if ((THUNDER_VERSION_MAJOR >= 4) && (THUNDER_VERSION_MINOR == 4))
#define sendNotify(event,params) { \
std::string json; \
params.ToString(json); \
LOGINFO("Notify %s %s", event, json.c_str()); \
Notify(event,params); \
}
#define sendNotifyMaskParameters(event,params) { \
std::string json; \
params.ToString(json); \
LOGINFO("Notify %s <***>", event); \
Notify(event,params); \
}
#else
#define sendNotify(event,params) { \
std::string json; \
params.ToString(json); \
LOGINFO("Notify %s %s", event, json.c_str()); \
for (uint8_t i = 1; GetHandler(i); i++) GetHandler(i)->Notify(event,params); \
}
#define sendNotifyMaskParameters(event,params) { \
std::string json; \
params.ToString(json); \
LOGINFO("Notify %s <***>", event); \
for (uint8_t i = 1; GetHandler(i); i++) GetHandler(i)->Notify(event,params); \
}
#endif
/**
* DO NOT USE THIS.
*
* Instead, add YOURPLUGINNAME.json to https://github.com/rdkcentral/ThunderInterfaces
* and use the generated classes from <interfaces/json/JsonData_YOURPLUGINNAME.h>
*/
#define getNumberParameter(paramName, param) { \
if (WPEFramework::Core::JSON::Variant::type::NUMBER == parameters[paramName].Content()) \
param = parameters[paramName].Number(); \
else \
try { param = std::stoi( parameters[paramName].String()); } \
catch (...) { param = 0; } \
}
#define getNumberParameterObject(parameters, paramName, param) { \
if (WPEFramework::Core::JSON::Variant::type::NUMBER == parameters[paramName].Content()) \
param = parameters[paramName].Number(); \
else \
try {param = std::stoi( parameters[paramName].String());} \
catch (...) { param = 0; } \
}
#define getBoolParameter(paramName, param) { \
if (WPEFramework::Core::JSON::Variant::type::BOOLEAN == parameters[paramName].Content()) \
param = parameters[paramName].Boolean(); \
else \
param = parameters[paramName].String() == "true" || parameters[paramName].String() == "1"; \
}
#define getStringParameter(paramName, param) { \
if (WPEFramework::Core::JSON::Variant::type::STRING == parameters[paramName].Content()) \
param = parameters[paramName].String(); \
}
#define getFloatParameter(paramName, param) { \
if (Core::JSON::Variant::type::FLOAT == parameters[paramName].Content()) \
param = parameters[paramName].Float(); \
else \
try { param = std::stof( parameters[paramName].String()); } \
catch (...) { param = 0; } \
}
#define vectorSet(v,s) \
if (find(begin(v), end(v), s) == end(v)) \
v.emplace_back(s);
#define getDefaultNumberParameter(paramName, param, default) { \
if (parameters.HasLabel(paramName)) { \
if (WPEFramework::Core::JSON::Variant::type::NUMBER == parameters[paramName].Content()) \
param = parameters[paramName].Number(); \
else \
try { param = std::stoi( parameters[paramName].String()); } \
catch (...) { param = default; } \
} else param = default; \
}
#define getDefaultStringParameter(paramName, param, default) { \
if (parameters.HasLabel(paramName)) { \
if (WPEFramework::Core::JSON::Variant::type::STRING == parameters[paramName].Content()) \
param = parameters[paramName].String(); \
else \
param = default; \
} else param = default; \
}
#define getDefaultBoolParameter(paramName, param, default) { \
if (parameters.HasLabel(paramName)) { \
if (WPEFramework::Core::JSON::Variant::type::BOOLEAN == parameters[paramName].Content()) \
param = parameters[paramName].Boolean(); \
else \
param = parameters[paramName].String() == "true" || parameters[paramName].String() == "1"; \
} else param = default; \
}