MCPcopy Create free account
hub / github.com/F-Stack/f-stack / output_json

Function output_json

dpdk/lib/telemetry/telemetry.c:237–348  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

235}
236
237static void
238output_json(const char *cmd, const struct rte_tel_data *d, int s)
239{
240 char out_buf[MAX_OUTPUT_LEN];
241
242 char *cb_data_buf;
243 size_t buf_len, prefix_used, used = 0;
244 unsigned int i;
245
246 RTE_BUILD_BUG_ON(sizeof(out_buf) < MAX_CMD_LEN +
247 RTE_TEL_MAX_SINGLE_STRING_LEN + 10);
248
249 prefix_used = snprintf(out_buf, sizeof(out_buf), "{\"%.*s\":",
250 MAX_CMD_LEN, cmd);
251 cb_data_buf = &out_buf[prefix_used];
252 buf_len = sizeof(out_buf) - prefix_used - 1; /* space for '}' */
253
254 switch (d->type) {
255 case TEL_NULL:
256 used = strlcpy(cb_data_buf, "null", buf_len);
257 break;
258
259 case TEL_STRING:
260 used = rte_tel_json_str(cb_data_buf, buf_len, 0, d->data.str);
261 break;
262
263 case TEL_DICT:
264 used = rte_tel_json_empty_obj(cb_data_buf, buf_len, 0);
265 for (i = 0; i < d->data_len; i++) {
266 const struct tel_dict_entry *v = &d->data.dict[i];
267 switch (v->type) {
268 case RTE_TEL_STRING_VAL:
269 used = rte_tel_json_add_obj_str(cb_data_buf,
270 buf_len, used,
271 v->name, v->value.sval);
272 break;
273 case RTE_TEL_INT_VAL:
274 used = rte_tel_json_add_obj_int(cb_data_buf,
275 buf_len, used,
276 v->name, v->value.ival);
277 break;
278 case RTE_TEL_UINT_VAL:
279 used = rte_tel_json_add_obj_uint(cb_data_buf,
280 buf_len, used,
281 v->name, v->value.uval);
282 break;
283 case RTE_TEL_CONTAINER:
284 {
285 char *temp = malloc(buf_len);
286 if (temp == NULL)
287 break;
288 *temp = '\0'; /* ensure valid string */
289
290 const struct container *cont =
291 &v->value.container;
292 if (container_to_json(cont->data,
293 temp, buf_len) != 0)
294 used = rte_tel_json_add_obj_json(

Callers 1

perform_commandFunction · 0.85

Calls 15

snprintfFunction · 0.85
rte_tel_json_strFunction · 0.85
rte_tel_json_empty_objFunction · 0.85
rte_tel_json_add_obj_strFunction · 0.85
rte_tel_json_add_obj_intFunction · 0.85
mallocFunction · 0.85
container_to_jsonFunction · 0.85
rte_tel_data_freeFunction · 0.85
rte_tel_json_empty_arrayFunction · 0.85

Tested by

no test coverage detected