source: trunk/third/jwgc/clients/jstat/jstat.c @ 22406

Revision 22406, 2.8 KB checked in by ghudson, 19 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r22405, which included commits to RCS files with non-trunk default branches.
Line 
1#include <netdb.h>
2#include <stdio.h>
3#include <stdlib.h>
4#include <unistd.h>
5#include <string.h>
6#include <sys/socket.h>
7#include <libjwgc.h>
8
9char *whoami;
10
11void
12usage()
13{
14        fprintf(stderr, "Usage: %s %s[-h]\n%s\
15  -h       Display help\n\
16",
17        whoami,
18#ifdef NODEBUG
19        "",
20        ""
21#else
22        "[-d <flags>] ",
23        "  -d       Enable/Disable debugging (leave <flags> blank for usage)\n"
24#endif /* NODEBUG */
25        );
26        exit(1);
27}
28
29void
30jstat_on_event_handler(jwgconn conn, jwgpacket packet)
31{
32        xode x, y;
33        char *cdata;
34
35        x = packet->x;
36        cdata = xode_get_tagdata(x, "user");
37        if (cdata) {
38                printf("User:               %.58s\n", cdata);
39        }
40
41        cdata = xode_get_tagdata(x, "server");
42        if (cdata) {
43                printf("Server:             %.58s\n", cdata);
44        }
45
46        cdata = xode_get_tagdata(x, "resource");
47        if (cdata) {
48                printf("Resource:           %.58s\n", cdata);
49        }
50
51        cdata = xode_get_tagdata(x, "version");
52        if (cdata) {
53                printf("Jwgc Version:       %.58s\n", cdata);
54        }
55
56        cdata = xode_get_tagdata(x, "machinetype");
57        if (cdata) {
58                printf("Machine Type:       %.58s\n", cdata);
59        }
60
61        cdata = xode_get_tagdata(x, "localtime");
62        if (cdata) {
63                printf("Localhost Time:     %.58s\n", cdata);
64        }
65
66        cdata = xode_get_tagdata(x, "connecttime");
67        if (cdata) {
68                printf("Connection Time:    %.58s\n", cdata);
69        }
70
71        cdata = xode_get_tagdata(x, "connectstate");
72        if (cdata) {
73                printf("Connection State:   %.58s\n", cdata);
74        }
75
76        printf("\nServices Available:\n");
77        y = xode_get_tag(x, "agents");
78        y = xode_get_firstchild(y);
79        while (y) {
80                char *name, *service, *jid;
81                xode z;
82
83                name = xode_get_attrib(y, "name");
84                service = xode_get_attrib(y, "service");
85                jid = xode_get_attrib(y, "jid");
86                printf("    %-30.30s %41.41s\n", name, jid);
87                printf("          Provides: %s", service);
88                z = xode_get_firstchild(y);
89                while (z) {
90                        printf(" %s", xode_get_name(z));
91                        z = xode_get_nextsibling(z);
92                }
93                printf("\n");
94                y = xode_get_nextsibling(y);
95        }
96
97        cdata = xode_get_tagdata(x, "bugreport");
98        if (cdata) {
99                printf("\nPlease report bugs to %s.\n", cdata);
100        }
101}
102
103
104int
105main(argc, argv)
106        int argc;
107        char *argv[];
108{
109        int arg;
110        xode x;
111        jwgconn jwg;
112
113        whoami = argv[0];
114        dinit();
115
116        arg = 1;
117
118        for (; arg < argc; arg++) {
119                switch (argv[arg][1]) {
120#ifndef NODEBUG
121                        case 'd':
122                                arg++;
123                                if (arg >= argc) {
124                                        dprinttypes();
125                                }
126                                dparseflags(argv[arg]);
127                                break;
128#endif /* NODEBUG */
129                        case 'h':
130                                usage();
131                                break;
132                        default:
133                                fprintf(stderr, "Unknown option: %s\n",
134                                        argv[arg]);
135                                usage();
136                }
137        }
138
139        jwg = jwg_new();
140        if (!jwg) {
141                fprintf(stderr, "jstat: failed to initialize jwgc connection\n");
142                exit(1);
143        }
144        jwg_event_handler(jwg, jstat_on_event_handler);
145        jwg_start(jwg);
146        if (jwg_getfd(jwg) < 0) {
147                fprintf(stderr, "jstat: failed to create jwgc connection\n");
148                exit(1);
149        }
150        x = xode_new("status");
151        jwg_send(jwg, x);
152        xode_free(x);
153
154        jwg_poll(jwg, -1);
155        jwg_stop(jwg);
156
157        exit(0);
158}
Note: See TracBrowser for help on using the repository browser.