source: tools/tracertstats/output_html.c @ c87881e

4.0.1-hotfixescachetimestampsdevelopdpdk-ndagetsilivegetfragoffhelplibtrace4ndag_formatpfringrc-4.0.1rc-4.0.2rc-4.0.3rc-4.0.4ringdecrementfixringperformanceringtimestampfixes
Last change on this file since c87881e was 65cdb7f, checked in by Perry Lorier <perry@…>, 16 years ago

Add a "realtime" statistics module. This can display stats every "n" seconds,
or every "n" packets.

Has "csv", "html" and "png" output formats currently. (png output module
really should be autoconf'd out if the required modules don't exist).

I'd like to add odoc formats, and I probably should add a "plain text" one
too.

  • Property mode set to 100644
File size: 1.9 KB
Line 
1#include "output.h"
2#include <stdio.h>
3#include <stdlib.h>
4
5static void output_html_init(struct output_data_t *out)
6{
7        int i;
8        printf("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n");
9        printf("<html>\n");
10        printf("<head>\n");
11        printf(" <title>%s</title>\n",out->title);
12        printf(" <style type=\"text/css\">\n");
13        printf("  table         { border-collapse: collapse; width: 100%%}\n");
14        printf("  td            { border: thin black solid; }\n");
15        printf("  .numeric      { text-align: right; }\n");
16        printf("  .even         { background: #e0e0e0; }\n");
17        printf("  .odd          { background: #ffffff; }\n");
18        printf("  .rowheading   { text-align: right; }\n");
19        printf(" </style>\n");
20        printf("</head>\n");
21        printf("<body>\n");
22        printf("<h1>%s</h1>\n",out->title);
23        printf("<table>\n");
24        printf(" <tr>\n");
25        for(i=0;i<out->columns;++i) {
26                printf("  <th>%s</th>",out->labels[i]);
27        }
28        printf(" </tr>\n");
29        out->private_format_data=malloc(sizeof(int));
30        *(int*)out->private_format_data=0;
31}
32
33static void output_html_flush(struct output_data_t *out)
34{
35        int i;
36        printf(" <tr class=\"%s\">\n",((*(int*)out->private_format_data)++)&1?"odd":"even");
37        for(i=0;i<out->columns;++i) {
38                switch (out->data[i].type) {
39                        case TYPE_int:
40                                printf("  <td class=\"numeric\">%" PRIu64 "</td>\n",out->data[i].d_int);
41                                break;
42                        case TYPE_str:
43                                printf("  <td>%s</td>\n",out->data[i].d_str);
44                                free(out->data[i].d_str);
45                                break;
46                        case TYPE_float:
47                                printf("  <td class=\"numeric\">%f</td>\n",out->data[i].d_float);
48                                break;
49                        case TYPE_time:
50                                printf("  <td class=\"numeric\">%.03f</td>\n",out->data[i].d_time);
51                                break;
52                }
53        }
54        printf(" </tr>\n");
55}
56
57static void output_html_destroy(struct output_data_t *out)
58{
59        printf("</table>\n");
60        printf("</body>\n");
61        printf("</html>\n");
62}
63
64struct output_type_t output_html = {
65name: "html",
66init: output_html_init,
67flush: output_html_flush,
68destroy: output_html_destroy,
69};
Note: See TracBrowser for help on using the repository browser.