throughput/main.c

Thu, 18 Nov 2010 14:20:51 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Thu, 18 Nov 2010 14:20:51 +0000
changeset 3
3c067736570c
parent 2
05b2fd8fe5aa
permissions
-rw-r--r--

Change test accounts to @localhost, and make the passwords the same

2
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 #include <string.h>
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 #include <math.h>
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 #include <stdlib.h>
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 #include <time.h>
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 #include <strophe.h>
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 xmpp_conn_t *conn1, *conn2;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 unsigned long mincount, maxcount;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 unsigned long count = 0;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 unsigned long sum_squares = 0;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 unsigned long samples = 0; /* Current number of samples taken */
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 unsigned long discard_samples = 5;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 unsigned long max_samples = 20; /* The number of samples to do, if specified by user */
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 time_t lasttime; /* Time of the last sample we took */
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20
3
3c067736570c Change test accounts to @localhost, and make the passwords the same
Matthew Wild <mwild1@gmail.com>
parents: 2
diff changeset
21 char* jid1 = "test1@localhost";
3c067736570c Change test accounts to @localhost, and make the passwords the same
Matthew Wild <mwild1@gmail.com>
parents: 2
diff changeset
22 char* jid2 = "test2@localhost";
3c067736570c Change test accounts to @localhost, and make the passwords the same
Matthew Wild <mwild1@gmail.com>
parents: 2
diff changeset
23 char* pass1 = "test";
3c067736570c Change test accounts to @localhost, and make the passwords the same
Matthew Wild <mwild1@gmail.com>
parents: 2
diff changeset
24 char* pass2 = "test";
2
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 xmpp_stanza_t *bstanza;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 int message_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata)
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 {
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 xmpp_ctx_t *ctx = (xmpp_ctx_t*)userdata;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 if(!xmpp_stanza_get_child_by_name(stanza, "body")) return 1;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 if(!strcmp(xmpp_stanza_get_attribute(stanza, "type"), "error")) return 1;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 if(conn == conn2)
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 {
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 count++;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 if(time(NULL) != lasttime)
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39 {
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 if(lasttime > 0)
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41 {
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 printf("%ld stanzas/sec\n", count);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43 if(count > maxcount)
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 {
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 printf("%ld beats old maximum of %ld\n", count, maxcount);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 maxcount = count;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
47 }
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
48 if(samples >= discard_samples)
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
49 sum_squares += count*count;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
50 samples++;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
51 if(samples >= max_samples)
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
52 {
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
53 printf("----\nMax: %ld\nRMS: %.2Lf\n----\n",
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
54 maxcount,
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
55 sqrtl(sum_squares/(samples-discard_samples))
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
56 );
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
57 xmpp_stop(ctx);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
58 return 0;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
59 }
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
60 }
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
61 count = 0;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
62 lasttime = time(NULL);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
63 }
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
64 xmpp_send(conn1, bstanza);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
65 //fprintf(stderr, "C: %d\n", count);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
66 }
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
67
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
68 return 1;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
69 }
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
70
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
71 /* define a handler for connection events */
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
72 void conn_handler(xmpp_conn_t * const conn, const xmpp_conn_event_t status,
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
73 const int error, xmpp_stream_error_t * const stream_error,
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
74 void * const userdata)
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
75 {
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
76 xmpp_ctx_t *ctx = (xmpp_ctx_t *)userdata;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
77
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
78 if (status == XMPP_CONN_CONNECT) {
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
79 xmpp_stanza_t* pres;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
80 fprintf(stderr, "DEBUG: connected\n");
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
81 xmpp_handler_add(conn,message_handler, NULL, "message", NULL, ctx);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
82
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
83 /* Send initial <presence/> so that we appear online to contacts */
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
84 pres = xmpp_stanza_new(ctx);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
85 xmpp_stanza_set_name(pres, "presence");
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
86 xmpp_send(conn, pres);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
87 xmpp_stanza_release(pres);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
88
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
89 if(conn == conn2)
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
90 {
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
91 count = 0;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
92 lasttime = 0;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
93
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
94 xmpp_send(conn1, bstanza);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
95 }
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
96 }
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
97 else {
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
98 fprintf(stderr, "DEBUG: disconnected\n");
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
99 xmpp_stop(ctx);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
100 }
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
101 }
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
102
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
103 int main(int argc, char *argv[])
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
104 {
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
105 xmpp_ctx_t *ctx;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
106 xmpp_log_t *log = NULL;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
107 xmpp_stanza_t *body, *text;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
108
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
109 printf("Loading...\n");
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
110 /* init library */
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
111 xmpp_initialize();
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
112
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
113 /* create a context */
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
114 #ifdef LOGGING
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
115 log = xmpp_get_default_logger(XMPP_LEVEL_DEBUG); /* pass NULL instead to silence output */
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
116 #endif
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
117 ctx = xmpp_ctx_new(NULL, log);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
118
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
119 /* create a connection */
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
120 conn1 = xmpp_conn_new(ctx);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
121 conn2 = xmpp_conn_new(ctx);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
122
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
123 /* setup authentication information */
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
124 xmpp_conn_set_jid(conn1, jid1);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
125 xmpp_conn_set_pass(conn1, pass1);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
126
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
127 xmpp_conn_set_jid(conn2, jid2);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
128 xmpp_conn_set_pass(conn2, pass2);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
129
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
130
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
131 bstanza = xmpp_stanza_new(ctx);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
132 xmpp_stanza_set_name(bstanza, "message");
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
133 xmpp_stanza_set_type(bstanza, "chat");
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
134 xmpp_stanza_set_attribute(bstanza, "to", jid2);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
135
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
136 body = xmpp_stanza_new(ctx);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
137 xmpp_stanza_set_name(body, "body");
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
138
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
139 text = xmpp_stanza_new(ctx);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
140 xmpp_stanza_set_text(text, "Hello");
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
141 xmpp_stanza_add_child(body, text);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
142 xmpp_stanza_add_child(bstanza, body);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
143
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
144 xmpp_stanza_release(text);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
145 xmpp_stanza_release(body);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
146
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
147 /* initiate connection */
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
148 xmpp_connect_client(conn1, "localhost", 5222, conn_handler, ctx);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
149 xmpp_connect_client(conn2, "localhost", 5222, conn_handler, ctx);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
150
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
151 printf("Connecting...\n");
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
152 /* enter the event loop -
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
153 our connect handler will trigger an exit */
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
154 xmpp_run(ctx);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
155
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
156 /* release our connection and context */
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
157 xmpp_conn_release(conn1);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
158 xmpp_conn_release(conn2);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
159 xmpp_ctx_free(ctx);
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
160
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
161 /* final shutdown of the library */
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
162 xmpp_shutdown();
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
163
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
164 return 0;
05b2fd8fe5aa Commit latest code
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
165 }

mercurial