X-Git-Url: https://git.octo.it/?p=collection4.git;a=blobdiff_plain;f=src%2Faction_show_instance.c;h=92bbf1cb10991ca2d4db6f36d4d6241f00292ca3;hp=0d6b5e2a7be98a16479033a6d9e298c97dba7ccd;hb=202f278d38aaa14f73c7975706a67a19465ea3e9;hpb=e44a32c44326ebe6ee10333138fabc337c067281 diff --git a/src/action_show_instance.c b/src/action_show_instance.c index 0d6b5e2..92bbf1c 100644 --- a/src/action_show_instance.c +++ b/src/action_show_instance.c @@ -184,6 +184,88 @@ static int left_menu (void *user_data) /* {{{ */ return (0); } /* }}} int left_menu */ +static int show_instance_json (graph_config_t *cfg, /* {{{ */ + graph_instance_t *inst, + time_t begin, time_t end, int index) +{ + yajl_gen_config handler_config; + yajl_gen handler; + const unsigned char *json_buffer; + unsigned int json_buffer_length; + + graph_ident_t *graph_selector; + graph_ident_t *inst_selector; + + graph_selector = graph_get_selector (cfg); + if (graph_selector == NULL) + return (ENOMEM); + + inst_selector = inst_get_selector (inst); + if (inst_selector == NULL) + { + ident_destroy (inst_selector); + return (ENOMEM); + } + + memset (&handler_config, 0, sizeof (handler_config)); + handler_config.beautify = 1; + handler_config.indentString = " "; + + handler = yajl_gen_alloc2 (/* callback = */ NULL, + &handler_config, + /* alloc functions = */ NULL, + /* context = */ NULL); + if (handler == NULL) + { + ident_destroy (inst_selector); + ident_destroy (graph_selector); + return (-1); + } + + yajl_gen_map_open (handler); + + yajl_gen_string (handler, + (unsigned char *) "graph_selector", + (unsigned int) strlen ("graph_selector")); + ident_to_json (graph_selector, handler); + ident_destroy (graph_selector); + + yajl_gen_string (handler, + (unsigned char *) "instance_selector", + (unsigned int) strlen ("instance_selector")); + ident_to_json (inst_selector, handler); + ident_destroy (inst_selector); + + yajl_gen_string (handler, + (unsigned char *) "begin", + (unsigned int) strlen ("begin")); + yajl_gen_integer (handler, (long int) begin); + + yajl_gen_string (handler, + (unsigned char *) "end", + (unsigned int) strlen ("end")); + yajl_gen_integer (handler, (long int) end); + + yajl_gen_map_close (handler); + + json_buffer = NULL; + json_buffer_length = 0; + yajl_gen_get_buf (handler, &json_buffer, &json_buffer_length); + + if (json_buffer == NULL) + { + yajl_gen_free (handler); + return (EINVAL); + } + + printf ("
\n", index); + printf ("\n", + index, (const char *) json_buffer); + + yajl_gen_free (handler); + return (0); +} /* }}} int show_instance_json */ + static int show_instance_cb (graph_config_t *cfg, /* {{{ */ graph_instance_t *inst, void *user_data) @@ -235,9 +317,7 @@ static int show_instance_cb (graph_config_t *cfg, /* {{{ */ ""%s / %s"\n", script_name (), params, title, descr); - printf ("
\n", data->graph_count); - printf ("\n", - data->graph_count, params, (long) begin, (long) end); + show_instance_json (cfg, inst, begin, end, data->graph_count); printf ("
" "Get graph data as JSON
\n",