diff options
author | Omar Tarabai <tarabai@devegypt.com> | 2014-08-11 15:29:49 +0000 |
---|---|---|
committer | Omar Tarabai <tarabai@devegypt.com> | 2014-08-11 15:29:49 +0000 |
commit | 321e66a9d999edaed3fff1a707d212f750fb40a1 (patch) | |
tree | 90f2e9853a45b56c28525c4d7a1219f540bc032b | |
parent | 1183a75a1a5d862f575d58c8873a9036a0fd3dbb (diff) | |
download | gnunet-321e66a9d999edaed3fff1a707d212f750fb40a1.tar.gz gnunet-321e66a9d999edaed3fff1a707d212f750fb40a1.zip |
sensor: starting modules controllable from config
-rw-r--r-- | src/sensor/gnunet-service-sensor.c | 68 | ||||
-rw-r--r-- | src/sensor/gnunet-service-sensor_monitoring.c | 62 | ||||
-rw-r--r-- | src/sensor/gnunet-service-sensor_reporting.c | 29 | ||||
-rw-r--r-- | src/sensor/sensor.conf.in | 6 | ||||
-rw-r--r-- | src/sensor/sensor.h | 4 |
5 files changed, 112 insertions, 57 deletions
diff --git a/src/sensor/gnunet-service-sensor.c b/src/sensor/gnunet-service-sensor.c index 047ad9183..b404d4806 100644 --- a/src/sensor/gnunet-service-sensor.c +++ b/src/sensor/gnunet-service-sensor.c | |||
@@ -42,6 +42,26 @@ static char *sensor_dir; | |||
42 | */ | 42 | */ |
43 | static struct GNUNET_CONTAINER_MultiHashMap *sensors; | 43 | static struct GNUNET_CONTAINER_MultiHashMap *sensors; |
44 | 44 | ||
45 | /** | ||
46 | * Start the monitoring module ? | ||
47 | */ | ||
48 | static int start_monitoring; | ||
49 | |||
50 | /** | ||
51 | * Start the analysis module ? | ||
52 | */ | ||
53 | static int start_analysis; | ||
54 | |||
55 | /** | ||
56 | * Start the reporting module ? | ||
57 | */ | ||
58 | static int start_reporting; | ||
59 | |||
60 | /** | ||
61 | * Start the update module ? | ||
62 | */ | ||
63 | static int start_update; | ||
64 | |||
45 | 65 | ||
46 | /** | 66 | /** |
47 | * Resets the service by stopping components, reloading sensors and starting | 67 | * Resets the service by stopping components, reloading sensors and starting |
@@ -57,10 +77,14 @@ reset (); | |||
57 | static void | 77 | static void |
58 | stop () | 78 | stop () |
59 | { | 79 | { |
60 | SENSOR_update_stop (); | 80 | if (GNUNET_YES == start_update) |
61 | SENSOR_analysis_stop (); | 81 | SENSOR_update_stop (); |
62 | SENSOR_reporting_stop (); | 82 | if (GNUNET_YES == start_analysis) |
63 | SENSOR_monitoring_stop (); | 83 | SENSOR_analysis_stop (); |
84 | if (GNUNET_YES == start_reporting) | ||
85 | SENSOR_reporting_stop (); | ||
86 | if (GNUNET_YES == start_monitoring) | ||
87 | SENSOR_monitoring_stop (); | ||
64 | GNUNET_SENSOR_destroy_sensors (sensors); | 88 | GNUNET_SENSOR_destroy_sensors (sensors); |
65 | } | 89 | } |
66 | 90 | ||
@@ -230,10 +254,14 @@ static void | |||
230 | start () | 254 | start () |
231 | { | 255 | { |
232 | sensors = GNUNET_SENSOR_load_all_sensors (sensor_dir); | 256 | sensors = GNUNET_SENSOR_load_all_sensors (sensor_dir); |
233 | SENSOR_monitoring_start (cfg, sensors); | 257 | if (GNUNET_YES == start_monitoring) |
234 | SENSOR_reporting_start (cfg, sensors); | 258 | SENSOR_monitoring_start (cfg, sensors); |
235 | SENSOR_analysis_start (cfg, sensors); | 259 | if (GNUNET_YES == start_reporting) |
236 | SENSOR_update_start (cfg, sensors, &reset); | 260 | SENSOR_reporting_start (cfg, sensors); |
261 | if (GNUNET_YES == start_analysis) | ||
262 | SENSOR_analysis_start (cfg, sensors); | ||
263 | if (GNUNET_YES == start_update) | ||
264 | SENSOR_update_start (cfg, sensors, &reset); | ||
237 | } | 265 | } |
238 | 266 | ||
239 | 267 | ||
@@ -263,6 +291,30 @@ run (void *cls, struct GNUNET_SERVER_Handle *server, | |||
263 | { | 291 | { |
264 | sensor_dir = GNUNET_SENSOR_get_default_sensor_dir (); | 292 | sensor_dir = GNUNET_SENSOR_get_default_sensor_dir (); |
265 | } | 293 | } |
294 | start_monitoring = GNUNET_YES; | ||
295 | start_analysis = GNUNET_YES; | ||
296 | start_reporting = GNUNET_YES; | ||
297 | start_update = GNUNET_YES; | ||
298 | if (GNUNET_NO == | ||
299 | GNUNET_CONFIGURATION_get_value_yesno (cfg, "SENSOR", "START_MONITORING")) | ||
300 | { | ||
301 | start_monitoring = GNUNET_NO; | ||
302 | } | ||
303 | if (GNUNET_NO == | ||
304 | GNUNET_CONFIGURATION_get_value_yesno (cfg, "SENSOR", "START_REPORTING")) | ||
305 | { | ||
306 | start_reporting = GNUNET_NO; | ||
307 | } | ||
308 | if (GNUNET_NO == | ||
309 | GNUNET_CONFIGURATION_get_value_yesno (cfg, "SENSOR", "START_ANALYSIS")) | ||
310 | { | ||
311 | start_analysis = GNUNET_NO; | ||
312 | } | ||
313 | if (GNUNET_NO == | ||
314 | GNUNET_CONFIGURATION_get_value_yesno (cfg, "SENSOR", "START_UPDATE")) | ||
315 | { | ||
316 | start_update = GNUNET_NO; | ||
317 | } | ||
266 | GNUNET_SERVER_add_handlers (server, handlers); | 318 | GNUNET_SERVER_add_handlers (server, handlers); |
267 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &shutdown_task, | 319 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &shutdown_task, |
268 | NULL); | 320 | NULL); |
diff --git a/src/sensor/gnunet-service-sensor_monitoring.c b/src/sensor/gnunet-service-sensor_monitoring.c index 33173e1ae..c3d5b8007 100644 --- a/src/sensor/gnunet-service-sensor_monitoring.c +++ b/src/sensor/gnunet-service-sensor_monitoring.c | |||
@@ -98,7 +98,7 @@ static void | |||
98 | set_sensor_enabled (struct GNUNET_SENSOR_SensorInfo *sensor, int state) | 98 | set_sensor_enabled (struct GNUNET_SENSOR_SensorInfo *sensor, int state) |
99 | { | 99 | { |
100 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Sensor `%s': Setting enabled to %d.\n", | 100 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Sensor `%s': Setting enabled to %d.\n", |
101 | sensor->name, state); | 101 | sensor->name, state); |
102 | sensor->enabled = GNUNET_NO; | 102 | sensor->enabled = GNUNET_NO; |
103 | GNUNET_assert (NULL != sensor->cfg); | 103 | GNUNET_assert (NULL != sensor->cfg); |
104 | GNUNET_CONFIGURATION_set_value_string (sensor->cfg, sensor->name, "ENABLED", | 104 | GNUNET_CONFIGURATION_set_value_string (sensor->cfg, sensor->name, "ENABLED", |
@@ -119,8 +119,8 @@ should_run_sensor (struct GNUNET_SENSOR_SensorInfo *sensorinfo) | |||
119 | 119 | ||
120 | if (GNUNET_NO == sensorinfo->enabled) | 120 | if (GNUNET_NO == sensorinfo->enabled) |
121 | { | 121 | { |
122 | LOG (GNUNET_ERROR_TYPE_INFO, | 122 | LOG (GNUNET_ERROR_TYPE_INFO, "Sensor `%s' is disabled, will not run\n", |
123 | "Sensor `%s' is disabled, will not run\n", sensorinfo->name); | 123 | sensorinfo->name); |
124 | return GNUNET_NO; | 124 | return GNUNET_NO; |
125 | } | 125 | } |
126 | now = GNUNET_TIME_absolute_get (); | 126 | now = GNUNET_TIME_absolute_get (); |
@@ -128,15 +128,15 @@ should_run_sensor (struct GNUNET_SENSOR_SensorInfo *sensorinfo) | |||
128 | now.abs_value_us < sensorinfo->start_time->abs_value_us) | 128 | now.abs_value_us < sensorinfo->start_time->abs_value_us) |
129 | { | 129 | { |
130 | LOG (GNUNET_ERROR_TYPE_INFO, | 130 | LOG (GNUNET_ERROR_TYPE_INFO, |
131 | "Start time for sensor `%s' not reached yet, will not run\n", | 131 | "Start time for sensor `%s' not reached yet, will not run\n", |
132 | sensorinfo->name); | 132 | sensorinfo->name); |
133 | return GNUNET_NO; | 133 | return GNUNET_NO; |
134 | } | 134 | } |
135 | if (NULL != sensorinfo->end_time && | 135 | if (NULL != sensorinfo->end_time && |
136 | now.abs_value_us >= sensorinfo->end_time->abs_value_us) | 136 | now.abs_value_us >= sensorinfo->end_time->abs_value_us) |
137 | { | 137 | { |
138 | LOG (GNUNET_ERROR_TYPE_INFO, "Sensor `%s' expired, disabling.\n", | 138 | LOG (GNUNET_ERROR_TYPE_INFO, "Sensor `%s' expired, disabling.\n", |
139 | sensorinfo->name); | 139 | sensorinfo->name); |
140 | set_sensor_enabled (sensorinfo, GNUNET_NO); | 140 | set_sensor_enabled (sensorinfo, GNUNET_NO); |
141 | return GNUNET_NO; | 141 | return GNUNET_NO; |
142 | } | 142 | } |
@@ -163,8 +163,8 @@ sensor_statistics_iterator (void *cls, const char *ss, const char *name, | |||
163 | struct GNUNET_TIME_Absolute expiry; | 163 | struct GNUNET_TIME_Absolute expiry; |
164 | 164 | ||
165 | LOG (GNUNET_ERROR_TYPE_INFO, | 165 | LOG (GNUNET_ERROR_TYPE_INFO, |
166 | "Received a value for sensor `%s': %" PRIu64 "\n", | 166 | "Received a value for sensor `%s': %" PRIu64 "\n", sensorinfo->name, |
167 | sensorinfo->name, value); | 167 | value); |
168 | expiry = GNUNET_TIME_relative_to_absolute (sensorinfo->lifetime); | 168 | expiry = GNUNET_TIME_relative_to_absolute (sensorinfo->lifetime); |
169 | GNUNET_PEERSTORE_store (peerstore, "sensor", &peerid, sensorinfo->name, | 169 | GNUNET_PEERSTORE_store (peerstore, "sensor", &peerid, sensorinfo->name, |
170 | &dvalue, sizeof (dvalue), expiry, | 170 | &dvalue, sizeof (dvalue), expiry, |
@@ -225,8 +225,7 @@ parse_sensor_value (const char *value, struct GNUNET_SENSOR_SensorInfo *sensor, | |||
225 | return strlen (value) + 1; | 225 | return strlen (value) + 1; |
226 | } | 226 | } |
227 | LOG (GNUNET_ERROR_TYPE_ERROR, | 227 | LOG (GNUNET_ERROR_TYPE_ERROR, |
228 | _ | 228 | _("Unknown value type expected by sensor, this should not happen.\n")); |
229 | ("Unknown value type expected by sensor, this should not happen.\n")); | ||
230 | return 0; | 229 | return 0; |
231 | } | 230 | } |
232 | 231 | ||
@@ -256,13 +255,13 @@ sensor_process_callback (void *cls, const char *line) | |||
256 | if (GNUNET_YES == sensorinfo->ext_cmd_value_received) | 255 | if (GNUNET_YES == sensorinfo->ext_cmd_value_received) |
257 | return; /* We only want one *valid* value */ | 256 | return; /* We only want one *valid* value */ |
258 | LOG (GNUNET_ERROR_TYPE_INFO, "Received a value for sensor `%s': %s\n", | 257 | LOG (GNUNET_ERROR_TYPE_INFO, "Received a value for sensor `%s': %s\n", |
259 | sensorinfo->name, line); | 258 | sensorinfo->name, line); |
260 | valsize = parse_sensor_value (line, sensorinfo, &value); | 259 | valsize = parse_sensor_value (line, sensorinfo, &value); |
261 | if (valsize == 0) /* invalid value, FIXME: should we disable the sensor now? */ | 260 | if (valsize == 0) /* invalid value, FIXME: should we disable the sensor now? */ |
262 | { | 261 | { |
263 | LOG (GNUNET_ERROR_TYPE_ERROR, | 262 | LOG (GNUNET_ERROR_TYPE_ERROR, |
264 | _("Received an invalid value for sensor `%s': %s\n"), | 263 | _("Received an invalid value for sensor `%s': %s\n"), sensorinfo->name, |
265 | sensorinfo->name, line); | 264 | line); |
266 | } | 265 | } |
267 | else | 266 | else |
268 | { | 267 | { |
@@ -316,15 +315,15 @@ sensor_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
316 | if (GNUNET_YES == sensorinfo->running) //FIXME: should we try to kill? | 315 | if (GNUNET_YES == sensorinfo->running) //FIXME: should we try to kill? |
317 | { | 316 | { |
318 | LOG (GNUNET_ERROR_TYPE_WARNING, | 317 | LOG (GNUNET_ERROR_TYPE_WARNING, |
319 | "Sensor `%s' running for too long, will try again next interval\n", | 318 | "Sensor `%s' running for too long, will try again next interval\n", |
320 | sensorinfo->name); | 319 | sensorinfo->name); |
321 | return; | 320 | return; |
322 | } | 321 | } |
323 | if (GNUNET_NO == should_run_sensor (sensorinfo)) | 322 | if (GNUNET_NO == should_run_sensor (sensorinfo)) |
324 | return; | 323 | return; |
325 | sensorinfo->running = GNUNET_YES; | 324 | sensorinfo->running = GNUNET_YES; |
326 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 325 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Starting the execution of sensor `%s'\n", |
327 | "Starting the execution of sensor `%s'\n", sensorinfo->name); | 326 | sensorinfo->name); |
328 | if (0 == strcmp ("gnunet-statistics", sensorinfo->source)) | 327 | if (0 == strcmp ("gnunet-statistics", sensorinfo->source)) |
329 | { | 328 | { |
330 | sensorinfo->gnunet_stat_get_handle = GNUNET_STATISTICS_get (statistics, sensorinfo->gnunet_stat_service, sensorinfo->gnunet_stat_name, sensorinfo->interval, //try to get values only for the interval of the sensor | 329 | sensorinfo->gnunet_stat_get_handle = GNUNET_STATISTICS_get (statistics, sensorinfo->gnunet_stat_service, sensorinfo->gnunet_stat_name, sensorinfo->interval, //try to get values only for the interval of the sensor |
@@ -337,9 +336,9 @@ sensor_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
337 | if (GNUNET_YES == is_path (sensorinfo->ext_process)) | 336 | if (GNUNET_YES == is_path (sensorinfo->ext_process)) |
338 | { | 337 | { |
339 | LOG (GNUNET_ERROR_TYPE_ERROR, | 338 | LOG (GNUNET_ERROR_TYPE_ERROR, |
340 | _ | 339 | _ |
341 | ("Sensor `%s': External process should not be a path, disabling sensor.\n"), | 340 | ("Sensor `%s': External process should not be a path, disabling sensor.\n"), |
342 | sensorinfo->name); | 341 | sensorinfo->name); |
343 | set_sensor_enabled (sensorinfo, GNUNET_NO); | 342 | set_sensor_enabled (sensorinfo, GNUNET_NO); |
344 | return; | 343 | return; |
345 | } | 344 | } |
@@ -361,9 +360,9 @@ sensor_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
361 | if (GNUNET_SYSERR == check_result) | 360 | if (GNUNET_SYSERR == check_result) |
362 | { | 361 | { |
363 | LOG (GNUNET_ERROR_TYPE_ERROR, | 362 | LOG (GNUNET_ERROR_TYPE_ERROR, |
364 | _ | 363 | _ |
365 | ("Sensor `%s' process `%s' problem: binary doesn't exist or not executable\n"), | 364 | ("Sensor `%s' process `%s' problem: binary doesn't exist or not executable\n"), |
366 | sensorinfo->name, sensorinfo->ext_process); | 365 | sensorinfo->name, sensorinfo->ext_process); |
367 | set_sensor_enabled (sensorinfo, GNUNET_NO); | 366 | set_sensor_enabled (sensorinfo, GNUNET_NO); |
368 | sensorinfo->running = GNUNET_NO; | 367 | sensorinfo->running = GNUNET_NO; |
369 | GNUNET_free (process_path); | 368 | GNUNET_free (process_path); |
@@ -376,7 +375,7 @@ sensor_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
376 | sensorinfo->ext_process, sensorinfo->ext_args, | 375 | sensorinfo->ext_process, sensorinfo->ext_args, |
377 | NULL); | 376 | NULL); |
378 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Process started for sensor `%s'\n", | 377 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Process started for sensor `%s'\n", |
379 | sensorinfo->name); | 378 | sensorinfo->name); |
380 | GNUNET_free (process_path); | 379 | GNUNET_free (process_path); |
381 | } | 380 | } |
382 | else | 381 | else |
@@ -405,14 +404,13 @@ schedule_sensor (void *cls, const struct GNUNET_HashCode *key, void *value) | |||
405 | if (GNUNET_NO == should_run_sensor (sensorinfo)) | 404 | if (GNUNET_NO == should_run_sensor (sensorinfo)) |
406 | return GNUNET_YES; | 405 | return GNUNET_YES; |
407 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 406 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
408 | "Scheduling sensor `%s' to run after %" PRIu64 " microseconds\n", | 407 | "Scheduling sensor `%s' to run after %" PRIu64 " microseconds\n", |
409 | sensorinfo->name, sensorinfo->interval.rel_value_us); | 408 | sensorinfo->name, sensorinfo->interval.rel_value_us); |
410 | if (GNUNET_SCHEDULER_NO_TASK != sensorinfo->execution_task) | 409 | if (GNUNET_SCHEDULER_NO_TASK != sensorinfo->execution_task) |
411 | { | 410 | { |
412 | LOG (GNUNET_ERROR_TYPE_ERROR, | 411 | LOG (GNUNET_ERROR_TYPE_ERROR, |
413 | _ | 412 | _("Sensor `%s' execution task already set, this should not happen\n"), |
414 | ("Sensor `%s' execution task already set, this should not happen\n"), | 413 | sensorinfo->name); |
415 | sensorinfo->name); | ||
416 | return GNUNET_NO; | 414 | return GNUNET_NO; |
417 | } | 415 | } |
418 | sensorinfo->execution_task = | 416 | sensorinfo->execution_task = |
@@ -441,7 +439,7 @@ schedule_all_sensors () | |||
441 | */ | 439 | */ |
442 | int | 440 | int |
443 | SENSOR_monitoring_start (const struct GNUNET_CONFIGURATION_Handle *c, | 441 | SENSOR_monitoring_start (const struct GNUNET_CONFIGURATION_Handle *c, |
444 | struct GNUNET_CONTAINER_MultiHashMap *s) | 442 | struct GNUNET_CONTAINER_MultiHashMap *s) |
445 | { | 443 | { |
446 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Starting sensor reporting module.\n"); | 444 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Starting sensor reporting module.\n"); |
447 | GNUNET_assert (NULL != s); | 445 | GNUNET_assert (NULL != s); |
@@ -449,8 +447,8 @@ SENSOR_monitoring_start (const struct GNUNET_CONFIGURATION_Handle *c, | |||
449 | cfg = c; | 447 | cfg = c; |
450 | statistics = GNUNET_STATISTICS_create ("sensor", cfg); | 448 | statistics = GNUNET_STATISTICS_create ("sensor", cfg); |
451 | if (GNUNET_OK != | 449 | if (GNUNET_OK != |
452 | GNUNET_CONFIGURATION_get_value_filename (cfg, "SENSOR", "SENSOR_DIR", | 450 | GNUNET_CONFIGURATION_get_value_filename (cfg, "SENSOR", "SENSOR_DIR", |
453 | &sensor_dir)) | 451 | &sensor_dir)) |
454 | { | 452 | { |
455 | sensor_dir = GNUNET_SENSOR_get_default_sensor_dir (); | 453 | sensor_dir = GNUNET_SENSOR_get_default_sensor_dir (); |
456 | } | 454 | } |
diff --git a/src/sensor/gnunet-service-sensor_reporting.c b/src/sensor/gnunet-service-sensor_reporting.c index 15edd149a..611f0d73d 100644 --- a/src/sensor/gnunet-service-sensor_reporting.c +++ b/src/sensor/gnunet-service-sensor_reporting.c | |||
@@ -524,7 +524,8 @@ create_value_message (struct ValueInfo *vi) | |||
524 | struct GNUNET_SENSOR_ValueMessage *vm; | 524 | struct GNUNET_SENSOR_ValueMessage *vm; |
525 | struct GNUNET_MQ_Envelope *ev; | 525 | struct GNUNET_MQ_Envelope *ev; |
526 | 526 | ||
527 | ev = GNUNET_MQ_msg_extra (vm, vi->last_value_size, GNUNET_MESSAGE_TYPE_SENSOR_READING); | 527 | ev = GNUNET_MQ_msg_extra (vm, vi->last_value_size, |
528 | GNUNET_MESSAGE_TYPE_SENSOR_READING); | ||
528 | GNUNET_CRYPTO_hash (vi->sensor->name, strlen (vi->sensor->name) + 1, | 529 | GNUNET_CRYPTO_hash (vi->sensor->name, strlen (vi->sensor->name) + 1, |
529 | &vm->sensorname_hash); | 530 | &vm->sensorname_hash); |
530 | vm->sensorversion_major = htons (vi->sensor->version_major); | 531 | vm->sensorversion_major = htons (vi->sensor->version_major); |
@@ -607,7 +608,7 @@ handle_anomaly_report (void *cls, const struct GNUNET_PeerIdentity *other, | |||
607 | } | 608 | } |
608 | /* Send anomaly update to collection point */ | 609 | /* Send anomaly update to collection point */ |
609 | if (NULL != ai->sensor->collection_point && | 610 | if (NULL != ai->sensor->collection_point && |
610 | GNUNET_YES == ai->sensor->report_anomalies) | 611 | GNUNET_YES == ai->sensor->report_anomalies) |
611 | { | 612 | { |
612 | cadetp = get_cadet_peer (*ai->sensor->collection_point); | 613 | cadetp = get_cadet_peer (*ai->sensor->collection_point); |
613 | send_anomaly_report (cadetp->mq, ai); | 614 | send_anomaly_report (cadetp->mq, ai); |
@@ -636,8 +637,7 @@ value_watch_cb (void *cls, struct GNUNET_PEERSTORE_Record *record, char *emsg) | |||
636 | 637 | ||
637 | if (NULL != emsg) | 638 | if (NULL != emsg) |
638 | { | 639 | { |
639 | LOG (GNUNET_ERROR_TYPE_ERROR, | 640 | LOG (GNUNET_ERROR_TYPE_ERROR, _("PEERSTORE error: %s.\n"), emsg); |
640 | _("PEERSTORE error: %s.\n"), emsg); | ||
641 | return GNUNET_YES; | 641 | return GNUNET_YES; |
642 | } | 642 | } |
643 | if (NULL != vi->last_value) | 643 | if (NULL != vi->last_value) |
@@ -647,7 +647,7 @@ value_watch_cb (void *cls, struct GNUNET_PEERSTORE_Record *record, char *emsg) | |||
647 | } | 647 | } |
648 | vi->last_value = GNUNET_memdup (record->value, record->value_size); | 648 | vi->last_value = GNUNET_memdup (record->value, record->value_size); |
649 | vi->last_value_size = record->value_size; | 649 | vi->last_value_size = record->value_size; |
650 | vi->last_value_timestamp = GNUNET_TIME_absolute_get(); | 650 | vi->last_value_timestamp = GNUNET_TIME_absolute_get (); |
651 | vi->last_value_reported = GNUNET_NO; | 651 | vi->last_value_reported = GNUNET_NO; |
652 | return GNUNET_YES; | 652 | return GNUNET_YES; |
653 | } | 653 | } |
@@ -772,7 +772,7 @@ cadet_channel_destroyed (void *cls, const struct GNUNET_CADET_Channel *channel, | |||
772 | struct CadetPeer *cadetp = channel_ctx; | 772 | struct CadetPeer *cadetp = channel_ctx; |
773 | 773 | ||
774 | if (GNUNET_YES == cadetp->destroying) | 774 | if (GNUNET_YES == cadetp->destroying) |
775 | return; | 775 | return; |
776 | GNUNET_CONTAINER_DLL_remove (cadetp_head, cadetp_tail, cadetp); | 776 | GNUNET_CONTAINER_DLL_remove (cadetp_head, cadetp_tail, cadetp); |
777 | cadetp->channel = NULL; | 777 | cadetp->channel = NULL; |
778 | destroy_cadet_peer (cadetp); | 778 | destroy_cadet_peer (cadetp); |
@@ -842,12 +842,10 @@ report_value (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
842 | vi->reporting_task = | 842 | vi->reporting_task = |
843 | GNUNET_SCHEDULER_add_delayed (sensor->value_reporting_interval, | 843 | GNUNET_SCHEDULER_add_delayed (sensor->value_reporting_interval, |
844 | &report_value, vi); | 844 | &report_value, vi); |
845 | if (0 == vi->last_value_size || | 845 | if (0 == vi->last_value_size || GNUNET_YES == vi->last_value_reported) |
846 | GNUNET_YES == vi->last_value_reported) | ||
847 | { | 846 | { |
848 | LOG (GNUNET_ERROR_TYPE_WARNING, | 847 | LOG (GNUNET_ERROR_TYPE_WARNING, |
849 | "Did not receive a fresh value from `%s' to report.\n", | 848 | "Did not receive a fresh value from `%s' to report.\n", sensor->name); |
850 | sensor->name); | ||
851 | return; | 849 | return; |
852 | } | 850 | } |
853 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 851 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
@@ -883,6 +881,7 @@ init_sensor_reporting (void *cls, const struct GNUNET_HashCode *key, | |||
883 | 881 | ||
884 | /* Create sensor anomaly info context */ | 882 | /* Create sensor anomaly info context */ |
885 | ai = GNUNET_new (struct AnomalyInfo); | 883 | ai = GNUNET_new (struct AnomalyInfo); |
884 | |||
886 | ai->sensor = sensor; | 885 | ai->sensor = sensor; |
887 | ai->anomalous = GNUNET_NO; | 886 | ai->anomalous = GNUNET_NO; |
888 | ai->anomalous_neighbors = | 887 | ai->anomalous_neighbors = |
@@ -902,11 +901,11 @@ init_sensor_reporting (void *cls, const struct GNUNET_HashCode *key, | |||
902 | vi->last_value_size = 0; | 901 | vi->last_value_size = 0; |
903 | vi->last_value_reported = GNUNET_NO; | 902 | vi->last_value_reported = GNUNET_NO; |
904 | vi->wc = | 903 | vi->wc = |
905 | GNUNET_PEERSTORE_watch (peerstore, "sensor", &mypeerid, sensor->name, | 904 | GNUNET_PEERSTORE_watch (peerstore, "sensor", &mypeerid, sensor->name, |
906 | &value_watch_cb, vi); | 905 | &value_watch_cb, vi); |
907 | vi->reporting_task = | 906 | vi->reporting_task = |
908 | GNUNET_SCHEDULER_add_delayed (sensor->value_reporting_interval, | 907 | GNUNET_SCHEDULER_add_delayed (sensor->value_reporting_interval, |
909 | &report_value, vi); | 908 | &report_value, vi); |
910 | GNUNET_CONTAINER_DLL_insert (vi_head, vi_tail, vi); | 909 | GNUNET_CONTAINER_DLL_insert (vi_head, vi_tail, vi); |
911 | return GNUNET_YES; | 910 | return GNUNET_YES; |
912 | } | 911 | } |
@@ -921,7 +920,7 @@ init_sensor_reporting (void *cls, const struct GNUNET_HashCode *key, | |||
921 | */ | 920 | */ |
922 | int | 921 | int |
923 | SENSOR_reporting_start (const struct GNUNET_CONFIGURATION_Handle *c, | 922 | SENSOR_reporting_start (const struct GNUNET_CONFIGURATION_Handle *c, |
924 | struct GNUNET_CONTAINER_MultiHashMap *s) | 923 | struct GNUNET_CONTAINER_MultiHashMap *s) |
925 | { | 924 | { |
926 | static struct GNUNET_CORE_MessageHandler core_handlers[] = { | 925 | static struct GNUNET_CORE_MessageHandler core_handlers[] = { |
927 | {&handle_anomaly_report, GNUNET_MESSAGE_TYPE_SENSOR_ANOMALY_REPORT, | 926 | {&handle_anomaly_report, GNUNET_MESSAGE_TYPE_SENSOR_ANOMALY_REPORT, |
diff --git a/src/sensor/sensor.conf.in b/src/sensor/sensor.conf.in index 60a62b650..12b5b4d35 100644 --- a/src/sensor/sensor.conf.in +++ b/src/sensor/sensor.conf.in | |||
@@ -5,6 +5,12 @@ UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-sensor.sock | |||
5 | UNIX_MATCH_UID = NO | 5 | UNIX_MATCH_UID = NO |
6 | UNIX_MATCH_GID = YES | 6 | UNIX_MATCH_GID = YES |
7 | 7 | ||
8 | # Which modules to run (default: YES) | ||
9 | START_MONITORING = YES | ||
10 | START_REPORTING = YES | ||
11 | START_ANALYSIS = YES | ||
12 | STARTING_UPDATE = YES | ||
13 | |||
8 | # Path to directory containing sensor definitions. | 14 | # Path to directory containing sensor definitions. |
9 | # If not set, will load from default location. | 15 | # If not set, will load from default location. |
10 | #SENSOR_DIR = | 16 | #SENSOR_DIR = |
diff --git a/src/sensor/sensor.h b/src/sensor/sensor.h index c5dd3bb1b..0b8daaa2c 100644 --- a/src/sensor/sensor.h +++ b/src/sensor/sensor.h | |||
@@ -107,7 +107,7 @@ SENSOR_reporting_anomaly_update (struct GNUNET_SENSOR_SensorInfo *sensor, | |||
107 | */ | 107 | */ |
108 | int | 108 | int |
109 | SENSOR_reporting_start (const struct GNUNET_CONFIGURATION_Handle *c, | 109 | SENSOR_reporting_start (const struct GNUNET_CONFIGURATION_Handle *c, |
110 | struct GNUNET_CONTAINER_MultiHashMap *s); | 110 | struct GNUNET_CONTAINER_MultiHashMap *s); |
111 | 111 | ||
112 | 112 | ||
113 | /** | 113 | /** |
@@ -146,4 +146,4 @@ SENSOR_monitoring_stop (); | |||
146 | */ | 146 | */ |
147 | int | 147 | int |
148 | SENSOR_monitoring_start (const struct GNUNET_CONFIGURATION_Handle *c, | 148 | SENSOR_monitoring_start (const struct GNUNET_CONFIGURATION_Handle *c, |
149 | struct GNUNET_CONTAINER_MultiHashMap *s); | 149 | struct GNUNET_CONTAINER_MultiHashMap *s); |