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

Function container_to_json

dpdk/lib/telemetry/telemetry.c:162–235  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

160}
161
162static int
163container_to_json(const struct rte_tel_data *d, char *out_buf, size_t buf_len)
164{
165 size_t used = 0;
166 unsigned int i;
167
168 if (d->type != TEL_DICT && d->type != TEL_ARRAY_UINT &&
169 d->type != TEL_ARRAY_INT && d->type != TEL_ARRAY_STRING)
170 return snprintf(out_buf, buf_len, "null");
171
172 if (d->type == TEL_DICT)
173 used = rte_tel_json_empty_obj(out_buf, buf_len, 0);
174 else
175 used = rte_tel_json_empty_array(out_buf, buf_len, 0);
176
177 if (d->type == TEL_ARRAY_UINT)
178 for (i = 0; i < d->data_len; i++)
179 used = rte_tel_json_add_array_uint(out_buf,
180 buf_len, used,
181 d->data.array[i].uval);
182 if (d->type == TEL_ARRAY_INT)
183 for (i = 0; i < d->data_len; i++)
184 used = rte_tel_json_add_array_int(out_buf,
185 buf_len, used,
186 d->data.array[i].ival);
187 if (d->type == TEL_ARRAY_STRING)
188 for (i = 0; i < d->data_len; i++)
189 used = rte_tel_json_add_array_string(out_buf,
190 buf_len, used,
191 d->data.array[i].sval);
192 if (d->type == TEL_DICT)
193 for (i = 0; i < d->data_len; i++) {
194 const struct tel_dict_entry *v = &d->data.dict[i];
195 switch (v->type) {
196 case RTE_TEL_STRING_VAL:
197 used = rte_tel_json_add_obj_str(out_buf,
198 buf_len, used,
199 v->name, v->value.sval);
200 break;
201 case RTE_TEL_INT_VAL:
202 used = rte_tel_json_add_obj_int(out_buf,
203 buf_len, used,
204 v->name, v->value.ival);
205 break;
206 case RTE_TEL_UINT_VAL:
207 used = rte_tel_json_add_obj_uint(out_buf,
208 buf_len, used,
209 v->name, v->value.uval);
210 break;
211 case RTE_TEL_CONTAINER:
212 {
213 char *temp = malloc(buf_len);
214 if (temp == NULL)
215 break;
216 *temp = '\0'; /* ensure valid string */
217
218 const struct container *cont =
219 &v->value.container;

Callers 1

output_jsonFunction · 0.85

Calls 13

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

Tested by

no test coverage detected