Пример #1
0
/* A wrapper function to ouput children nodes. */
static void
print_json_sub_items (GJSON * json, GHolderItem * item, GPercTotals totals,
                      int size, int iisp)
{
  GMetrics *nmetrics;
  GSubItem *iter;
  GSubList *sl = item->sub_list;
  int i = 0, iiisp = 0, iiiisp = 0;

  /* no sub items, nothing to output */
  if (size == 0)
    return;

  /* use tabs to prettify output */
  if (conf.json_pretty_print)
    iiisp = iisp + 1, iiiisp = iiisp + 1;

  if (sl == NULL)
    return;

  pjson (json, ",%.*s%.*s\"items\": [%.*s", nlines, NL, iisp, TAB, nlines, NL);
  for (iter = sl->head; iter; iter = iter->next, i++) {
    set_data_metrics (iter->metrics, &nmetrics, totals);

    popen_obj (json, iiisp);
    print_json_block (json, nmetrics, iiiisp);
    pclose_obj (json, iiisp, (i == sl->size - 1));
    free (nmetrics);
  }
  pclose_arr (json, iisp, 1);
}
Пример #2
0
static void
print_json_sub_items (FILE * fp, GHolder * h, int idx, int processed)
{
  GMetrics *nmetrics;
  GSubItem *iter;
  GSubList *sub_list = h->items[idx].sub_list;
  char *sep = char_repeat (3, '\t');
  int i = 0;

  if (sub_list == NULL)
    return;

  fprintf (fp, ",\n%s\"items\": [\n", sep);
  for (iter = sub_list->head; iter; iter = iter->next, i++) {
    set_data_metrics (iter->metrics, &nmetrics, processed);

    fprintf (fp, "%s{\n", sep);
    print_json_block (fp, nmetrics, sep);
    fprintf (fp, (i != sub_list->size - 1) ? "\n%s},\n" : "\n%s}\n", sep);
    free (nmetrics);
  }
  fprintf (fp, "\t\t\t]");

  free (sep);
}
Пример #3
0
/* Ouput data and determine if there are children nodes. */
static void
print_data_metrics (GJSON * json, GHolder * h, GPercTotals totals, int sp,
                    const struct GPanel_ *panel)
{
  GMetrics *nmetrics;
  int i, isp = 0, iisp = 0, iiisp = 0;

  /* use tabs to prettify output */
  if (conf.json_pretty_print)
    isp = sp + 1, iisp = sp + 2, iiisp = sp + 3;

  popen_arr_attr (json, "data", isp);
  /* output data metrics */
  for (i = 0; i < h->idx; i++) {
    set_data_metrics (h->items[i].metrics, &nmetrics, totals);

    /* open data metric block */
    popen_obj (json, iisp);
    /* output data metric block */
    print_json_block (json, nmetrics, iiisp);
    /* if there are children nodes, spit them out */
    if (panel->subitems)
      panel->subitems (json, h->items + i, totals, h->sub_items_size, iiisp);
    /* close data metric block */
    pclose_obj (json, iisp, (i == h->idx - 1));

    free (nmetrics);
  }
  pclose_arr (json, isp, 1);
}
Пример #4
0
/* Ouput data and determine if there are children nodes. */
static void
print_data_metrics (FILE * fp, GHolder * h, GPercTotals totals, int sp,
                    const struct GPanel_ *panel)
{
  GMetrics *nmetrics;
  char comma = ' ';
  int i, isp = 0, iisp = 0, iiisp = 0;

  /* use tabs to prettify output */
  if (conf.json_pretty_print)
    isp = sp + 1, iisp = sp + 2, iiisp = sp + 3;

  print_open_data_attr (fp, isp);
  /* output data metrics */
  for (i = 0; i < h->idx; i++) {
    set_data_metrics (h->items[i].metrics, &nmetrics, totals);

    /* open data metric block */
    print_open_block_attr (fp, iisp);
    /* output data metric block */
    print_json_block (fp, nmetrics, iiisp);
    /* if there are children notes, spit them out */
    if (panel->subitems && h->sub_items_size)
      panel->subitems (fp, h->items[i].sub_list, totals, iiisp);
    /* close data metric block */
    comma = (i != h->idx - 1) ? ',' : ' ';
    print_close_block_attr (fp, iisp, comma);

    free (nmetrics);
  }
  print_close_data_attr (fp, isp);
}
Пример #5
0
/* A wrapper function to ouput children nodes. */
static void
print_json_sub_items (FILE * fp, GSubList * sl, GPercTotals totals, int iisp)
{
  GMetrics *nmetrics;
  GSubItem *iter;
  char comma = ' ';
  int i = 0, iiisp = 0, iiiisp = 0;

  /* use tabs to prettify output */
  if (conf.json_pretty_print)
    iiisp = iisp + 1, iiiisp = iiisp + 1;

  if (sl == NULL)
    return;

  pjson (fp, ",%.*s%.*s\"items\": [%.*s", nlines, NL, iisp, TAB, nlines, NL);
  for (iter = sl->head; iter; iter = iter->next, i++) {
    set_data_metrics (iter->metrics, &nmetrics, totals);

    pjson (fp, "%.*s{%.*s", iiisp, TAB, nlines, NL);
    print_json_block (fp, nmetrics, iiiisp);
    comma = (i != sl->size - 1) ? ',' : ' ';
    pjson (fp, "%.*s%.*s}%c%.*s", nlines, NL, iiisp, TAB, comma, nlines, NL);
    free (nmetrics);
  }
  pjson (fp, "%.*s]", iisp, TAB);
}
Пример #6
0
/* Output first-level items. */
static void
print_csv_data (FILE * fp, GHolder * h, int valid)
{
    GMetrics *nmetrics;
    int i;

    for (i = 0; i < h->idx; i++) {
        set_data_metrics (h->items[i].metrics, &nmetrics, valid);

        fprintf (fp, "\"%d\",", i); /* idx */
        fprintf (fp, ",");  /* no parent */
        fprintf (fp, "\"%s\",", module_to_id (h->module));
        fprintf (fp, "\"%d\",", nmetrics->hits);
        fprintf (fp, "\"%d\",", nmetrics->visitors);
        fprintf (fp, "\"%4.2f%%\",", nmetrics->percent);

        if (conf.bandwidth)
            fprintf (fp, "\"%lld\",", (long long) nmetrics->bw.nbw);

        if (conf.serve_usecs) {
            fprintf (fp, "\"%lld\",", (long long) nmetrics->avgts.nts);
            fprintf (fp, "\"%lld\",", (long long) nmetrics->cumts.nts);
            fprintf (fp, "\"%lld\",", (long long) nmetrics->maxts.nts);
        }

        if (conf.append_method && nmetrics->method)
            fprintf (fp, "\"%s\"", nmetrics->method);
        fprintf (fp, ",");

        if (conf.append_protocol && nmetrics->protocol)
            fprintf (fp, "\"%s\"", nmetrics->protocol);
        fprintf (fp, ",");

        fprintf (fp, "\"");
        escape_cvs_output (fp, nmetrics->data);
        fprintf (fp, "\"\r\n");

        if (h->sub_items_size)
            print_csv_sub_items (fp, h, i, valid);

        free (nmetrics);
    }
}
Пример #7
0
/* Output first-level items.
 *
 * On success, outputs item value. */
static void
print_csv_data (FILE * fp, GHolder * h, GPercTotals totals)
{
  GMetrics *nmetrics;
  int i;

  for (i = 0; i < h->idx; i++) {
    set_data_metrics (h->items[i].metrics, &nmetrics, totals);

    fprintf (fp, "\"%d\",", i); /* idx */
    fprintf (fp, ",");  /* no parent */
    fprintf (fp, "\"%s\",", module_to_id (h->module));

    /* output metrics */
    print_csv_metric_block (fp, nmetrics);

    if (h->sub_items_size)
      print_csv_sub_items (fp, h, i, totals);

    free (nmetrics);
  }
}
Пример #8
0
static void
print_json_host_data (FILE * fp, GHolder * h, int processed)
{
  GMetrics *nmetrics;
  char *sep = char_repeat (2, '\t');
  int i;

  fprintf (fp, "\t\"%s\": [\n", module_to_id (h->module));
  for (i = 0; i < h->idx; i++) {
    set_data_metrics (h->items[i].metrics, &nmetrics, processed);

    fprintf (fp, "%s{\n", sep);
    print_json_block (fp, nmetrics, sep);
    print_json_host_geo (fp, h->items[i].sub_list, sep);
    fprintf (fp, (i != h->idx - 1) ? "\n%s},\n" : "\n%s}\n", sep);

    free (nmetrics);
  }
  fprintf (fp, "\t]");

  free (sep);
}
Пример #9
0
/* Output a sublist (double linked-list) items for a particular parent node.
 *
 * On error, it exits early.
 * On success, outputs item value. */
static void
print_csv_sub_items (FILE * fp, GHolder * h, int idx, GPercTotals totals)
{
  GMetrics *nmetrics;
  GSubList *sub_list = h->items[idx].sub_list;
  GSubItem *iter;

  int i = 0;

  if (sub_list == NULL)
    return;

  for (iter = sub_list->head; iter; iter = iter->next, i++) {
    set_data_metrics (iter->metrics, &nmetrics, totals);

    fprintf (fp, "\"%d\",", i); /* idx */
    fprintf (fp, "\"%d\",", idx);       /* parent idx */
    fprintf (fp, "\"%s\",", module_to_id (h->module));

    /* output metrics */
    print_csv_metric_block (fp, nmetrics);
    free (nmetrics);
  }
}