Beispiel #1
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, int valid)
{
    GSubList *sub_list = h->items[idx].sub_list;
    GSubItem *iter;
    float percent;
    int i = 0;

    if (sub_list == NULL)
        return;

    for (iter = sub_list->head; iter; iter = iter->next, i++) {
        percent = get_percentage (valid, iter->metrics->hits);
        percent = percent < 0 ? 0 : percent;

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

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

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

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

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

        fprintf (fp, "\"");
        escape_cvs_output (fp, iter->metrics->data);
        fprintf (fp, "\",");
        fprintf (fp, "\r\n");       /* parent idx */
    }
}
Beispiel #2
0
/* Entry point to ouput data metrics per panel. */
static void
print_json_data (GJSON * json, GHolder * h, GPercTotals totals,
                 const struct GPanel_ *panel)
{
  int sp = 0;
  /* use tabs to prettify output */
  if (conf.json_pretty_print)
    sp = 1;

  /* output open panel attribute */
  popen_obj_attr (json, module_to_id (h->module), sp);
  /* output panel metadata */
  print_meta_data (json, h, sp);
  /* output panel data */
  print_data_metrics (json, h, totals, sp, panel);
  /* output close panel attribute */
  pclose_obj (json, sp, 1);
}
Beispiel #3
0
/* Entry point to ouput data metrics per panel. */
static void
print_json_data (FILE * fp, GHolder * h, GPercTotals totals,
                 const struct GPanel_ *panel)
{
  int sp = 0;
  /* use tabs to prettify output */
  if (conf.json_pretty_print)
    sp = 1;

  /* output open panel attribute */
  print_open_panel_attr (fp, module_to_id (h->module), sp);
  /* output panel metadata */
  print_meta_data (fp, h, sp);
  /* output panel data */
  print_data_metrics (fp, h, totals, sp, panel);
  /* output close panel attribute */
  print_close_panel_attr (fp, sp);
}
Beispiel #4
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);
    }
}
Beispiel #5
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);
  }
}
Beispiel #6
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);
}
Beispiel #7
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);
  }
}