diff options
author | Christian Grothoff <christian@grothoff.org> | 2007-03-05 01:51:42 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2007-03-05 01:51:42 +0000 |
commit | 21c076d305986a8cc2ee001fbec8082b4bd31d41 (patch) | |
tree | a284ceddcfb8066cbf96f8ffeb2723d8c4b32c56 | |
parent | 2b6a6a4e1fcca369f57783610f41bf50a74b72b6 (diff) | |
download | gnunet-gtk-21c076d305986a8cc2ee001fbec8082b4bd31d41.tar.gz gnunet-gtk-21c076d305986a8cc2ee001fbec8082b4bd31d41.zip |
handle restarts
-rw-r--r-- | src/plugins/stats/functions.c | 72 |
1 files changed, 49 insertions, 23 deletions
diff --git a/src/plugins/stats/functions.c b/src/plugins/stats/functions.c index 3a804fd0..0a19b697 100644 --- a/src/plugins/stats/functions.c +++ b/src/plugins/stats/functions.c | |||
@@ -52,7 +52,8 @@ static struct CronManager * cron; | |||
52 | static int getStatValue(long long * value, | 52 | static int getStatValue(long long * value, |
53 | long long * lvalue, | 53 | long long * lvalue, |
54 | cron_t * dtime, | 54 | cron_t * dtime, |
55 | const char * optName) { | 55 | const char * optName, |
56 | int monotone) { | ||
56 | unsigned int i; | 57 | unsigned int i; |
57 | 58 | ||
58 | *value = 0; | 59 | *value = 0; |
@@ -66,6 +67,9 @@ static int getStatValue(long long * value, | |||
66 | *lvalue = lastStatValues[i].lvalue; | 67 | *lvalue = lastStatValues[i].lvalue; |
67 | if (dtime != NULL) | 68 | if (dtime != NULL) |
68 | *dtime = lastStatValues[i].delta; | 69 | *dtime = lastStatValues[i].delta; |
70 | if ( (monotone == YES) && | ||
71 | (*lvalue > *value) ) | ||
72 | return SYSERR; /* gnunetd restart? */ | ||
69 | return OK; | 73 | return OK; |
70 | } | 74 | } |
71 | } | 75 | } |
@@ -121,7 +125,8 @@ static int getConnectedNodesStat(const void * closure, | |||
121 | if (OK != getStatValue(&val, | 125 | if (OK != getStatValue(&val, |
122 | NULL, | 126 | NULL, |
123 | NULL, | 127 | NULL, |
124 | "# of connected peers")) | 128 | "# of connected peers", |
129 | NO)) | ||
125 | return SYSERR; | 130 | return SYSERR; |
126 | data[0][0] = ((gfloat) val) / connectionGoal; | 131 | data[0][0] = ((gfloat) val) / connectionGoal; |
127 | return OK; | 132 | return OK; |
@@ -137,22 +142,26 @@ static int getLoadStat(const void * closure, | |||
137 | if (OK != getStatValue(&valc, | 142 | if (OK != getStatValue(&valc, |
138 | NULL, | 143 | NULL, |
139 | NULL, | 144 | NULL, |
140 | "% of allowed cpu load")) | 145 | "% of allowed cpu load", |
146 | NO)) | ||
141 | return SYSERR; | 147 | return SYSERR; |
142 | if (OK != getStatValue(&vali, | 148 | if (OK != getStatValue(&vali, |
143 | NULL, | 149 | NULL, |
144 | NULL, | 150 | NULL, |
145 | "% of allowed io load")) | 151 | "% of allowed io load", |
152 | NO)) | ||
146 | return SYSERR; | 153 | return SYSERR; |
147 | if (OK != getStatValue(&valu, | 154 | if (OK != getStatValue(&valu, |
148 | NULL, | 155 | NULL, |
149 | NULL, | 156 | NULL, |
150 | "% of allowed network load (up)")) | 157 | "% of allowed network load (up)", |
158 | NO)) | ||
151 | return SYSERR; | 159 | return SYSERR; |
152 | if (OK != getStatValue(&vald, | 160 | if (OK != getStatValue(&vald, |
153 | NULL, | 161 | NULL, |
154 | NULL, | 162 | NULL, |
155 | "% of allowed network load (down)")) | 163 | "% of allowed network load (down)", |
164 | NO)) | ||
156 | return SYSERR; | 165 | return SYSERR; |
157 | data[0][0] = (gfloat) valc / 100.0; | 166 | data[0][0] = (gfloat) valc / 100.0; |
158 | data[0][1] = (gfloat) vali / 100.0; | 167 | data[0][1] = (gfloat) vali / 100.0; |
@@ -169,14 +178,16 @@ static int getQuotaStat(const void * closure, | |||
169 | if (OK != getStatValue(&allowed, | 178 | if (OK != getStatValue(&allowed, |
170 | NULL, | 179 | NULL, |
171 | NULL, | 180 | NULL, |
172 | "# bytes allowed in datastore")) | 181 | "# bytes allowed in datastore", |
182 | NO)) | ||
173 | return SYSERR; | 183 | return SYSERR; |
174 | if (allowed == 0) | 184 | if (allowed == 0) |
175 | return SYSERR; | 185 | return SYSERR; |
176 | if (OK != getStatValue(&have, | 186 | if (OK != getStatValue(&have, |
177 | NULL, | 187 | NULL, |
178 | NULL, | 188 | NULL, |
179 | "# bytes in datastore")) | 189 | "# bytes in datastore", |
190 | NO)) | ||
180 | return SYSERR; | 191 | return SYSERR; |
181 | data[0][0] = ((gfloat) have) / allowed; | 192 | data[0][0] = ((gfloat) have) / allowed; |
182 | return OK; | 193 | return OK; |
@@ -202,12 +213,14 @@ static int getTrafficRecvStats(const void * closure, | |||
202 | if (OK != getStatValue(&total, | 213 | if (OK != getStatValue(&total, |
203 | <otal, | 214 | <otal, |
204 | &dtime, | 215 | &dtime, |
205 | "# bytes received")) | 216 | "# bytes received", |
217 | YES)) | ||
206 | return SYSERR; | 218 | return SYSERR; |
207 | if (OK != getStatValue(&noise, | 219 | if (OK != getStatValue(&noise, |
208 | &lnoise, | 220 | &lnoise, |
209 | NULL, | 221 | NULL, |
210 | "# bytes of noise received")) | 222 | "# bytes of noise received", |
223 | YES)) | ||
211 | return SYSERR; | 224 | return SYSERR; |
212 | buffer = MALLOC(512); | 225 | buffer = MALLOC(512); |
213 | SNPRINTF(buffer, | 226 | SNPRINTF(buffer, |
@@ -217,7 +230,8 @@ static int getTrafficRecvStats(const void * closure, | |||
217 | if (OK != getStatValue(&content, | 230 | if (OK != getStatValue(&content, |
218 | &lcontent, | 231 | &lcontent, |
219 | NULL, | 232 | NULL, |
220 | buffer)) { | 233 | buffer, |
234 | YES)) { | ||
221 | content = 0; | 235 | content = 0; |
222 | lcontent = 0; | 236 | lcontent = 0; |
223 | } | 237 | } |
@@ -228,7 +242,8 @@ static int getTrafficRecvStats(const void * closure, | |||
228 | if (OK != getStatValue(&hellos, | 242 | if (OK != getStatValue(&hellos, |
229 | &lhellos, | 243 | &lhellos, |
230 | NULL, | 244 | NULL, |
231 | buffer)) { | 245 | buffer, |
246 | YES)) { | ||
232 | hellos = 0; | 247 | hellos = 0; |
233 | lhellos = 0; | 248 | lhellos = 0; |
234 | } | 249 | } |
@@ -239,14 +254,16 @@ static int getTrafficRecvStats(const void * closure, | |||
239 | if (OK != getStatValue(&queries, | 254 | if (OK != getStatValue(&queries, |
240 | &lqueries, | 255 | &lqueries, |
241 | NULL, | 256 | NULL, |
242 | buffer)) { | 257 | buffer, |
258 | YES)) { | ||
243 | queries = 0; | 259 | queries = 0; |
244 | lqueries = 0; | 260 | lqueries = 0; |
245 | } | 261 | } |
246 | if (OK != getStatValue(&rlimit, | 262 | if (OK != getStatValue(&rlimit, |
247 | &lrlimit, | 263 | &lrlimit, |
248 | NULL, | 264 | NULL, |
249 | "# total advertised bytes per second received limit")) { | 265 | "# total advertised bytes per second received limit", |
266 | NO)) { | ||
250 | rlimit = 0; | 267 | rlimit = 0; |
251 | lrlimit = 0; | 268 | lrlimit = 0; |
252 | } | 269 | } |
@@ -303,12 +320,14 @@ static int getTrafficSendStats(const void * closure, | |||
303 | if (OK != getStatValue(&total, | 320 | if (OK != getStatValue(&total, |
304 | <otal, | 321 | <otal, |
305 | &dtime, | 322 | &dtime, |
306 | "# bytes transmitted")) | 323 | "# bytes transmitted", |
324 | YES)) | ||
307 | return SYSERR; | 325 | return SYSERR; |
308 | if (OK != getStatValue(&noise, | 326 | if (OK != getStatValue(&noise, |
309 | &lnoise, | 327 | &lnoise, |
310 | NULL, | 328 | NULL, |
311 | "# bytes noise sent")) | 329 | "# bytes noise sent", |
330 | YES)) | ||
312 | return SYSERR; | 331 | return SYSERR; |
313 | buffer = MALLOC(512); | 332 | buffer = MALLOC(512); |
314 | SNPRINTF(buffer, | 333 | SNPRINTF(buffer, |
@@ -318,7 +337,8 @@ static int getTrafficSendStats(const void * closure, | |||
318 | if (OK != getStatValue(&content, | 337 | if (OK != getStatValue(&content, |
319 | &lcontent, | 338 | &lcontent, |
320 | NULL, | 339 | NULL, |
321 | buffer)) { | 340 | buffer, |
341 | YES)) { | ||
322 | content = 0; | 342 | content = 0; |
323 | lcontent = 0; | 343 | lcontent = 0; |
324 | } | 344 | } |
@@ -329,7 +349,8 @@ static int getTrafficSendStats(const void * closure, | |||
329 | if (OK != getStatValue(&queries, | 349 | if (OK != getStatValue(&queries, |
330 | &lqueries, | 350 | &lqueries, |
331 | NULL, | 351 | NULL, |
332 | buffer)) { | 352 | buffer, |
353 | YES)) { | ||
333 | queries = 0; | 354 | queries = 0; |
334 | lqueries = 0; | 355 | lqueries = 0; |
335 | } | 356 | } |
@@ -340,14 +361,16 @@ static int getTrafficSendStats(const void * closure, | |||
340 | if (OK != getStatValue(&hellos, | 361 | if (OK != getStatValue(&hellos, |
341 | &lhellos, | 362 | &lhellos, |
342 | NULL, | 363 | NULL, |
343 | buffer)) { | 364 | buffer, |
365 | YES)) { | ||
344 | queries = 0; | 366 | queries = 0; |
345 | lqueries = 0; | 367 | lqueries = 0; |
346 | } | 368 | } |
347 | if (OK != getStatValue(&slimit, | 369 | if (OK != getStatValue(&slimit, |
348 | &lslimit, | 370 | &lslimit, |
349 | NULL, | 371 | NULL, |
350 | "# total allowed bytes per second transmission limit")) { | 372 | "# total allowed bytes per second transmission limit", |
373 | NO)) { | ||
351 | slimit = 0; | 374 | slimit = 0; |
352 | lslimit = 0; | 375 | lslimit = 0; |
353 | } | 376 | } |
@@ -408,17 +431,20 @@ static int getEffectivenessStats(const void * closure, | |||
408 | if (OK != getStatValue(&total, | 431 | if (OK != getStatValue(&total, |
409 | <otal, | 432 | <otal, |
410 | NULL, | 433 | NULL, |
411 | "# gap requests forwarded (counting each peer)")) | 434 | "# gap requests forwarded (counting each peer)", |
435 | YES)) | ||
412 | return SYSERR; | 436 | return SYSERR; |
413 | if (OK != getStatValue(&success, | 437 | if (OK != getStatValue(&success, |
414 | &lsuccess, | 438 | &lsuccess, |
415 | NULL, | 439 | NULL, |
416 | "# gap routing successes (total)")) | 440 | "# gap routing successes (total)", |
441 | YES)) | ||
417 | return SYSERR; | 442 | return SYSERR; |
418 | if (OK != getStatValue(&local, | 443 | if (OK != getStatValue(&local, |
419 | &llocal, | 444 | &llocal, |
420 | NULL, | 445 | NULL, |
421 | "# gap requests processed: local result")) | 446 | "# gap requests processed: local result", |
447 | YES)) | ||
422 | return SYSERR; | 448 | return SYSERR; |
423 | total -= ltotal; | 449 | total -= ltotal; |
424 | data[0][0] = 0.0; | 450 | data[0][0] = 0.0; |