diff options
author | Omar Tarabai <tarabai@devegypt.com> | 2014-05-02 15:28:43 +0000 |
---|---|---|
committer | Omar Tarabai <tarabai@devegypt.com> | 2014-05-02 15:28:43 +0000 |
commit | 8fb2088b5105c48353a4b92fb54d6abdf75de45c (patch) | |
tree | 7bb18955fa15e85b10212be5c91a04aecbb819bf /src/sensor | |
parent | bd5d6005ef1020d6a8ada0ee60589cc0f5ec740b (diff) | |
download | gnunet-8fb2088b5105c48353a4b92fb54d6abdf75de45c.tar.gz gnunet-8fb2088b5105c48353a4b92fb54d6abdf75de45c.zip |
getting single sensor information
Diffstat (limited to 'src/sensor')
-rw-r--r-- | src/sensor/gnunet-sensor.c | 25 | ||||
-rw-r--r-- | src/sensor/gnunet-service-sensor.c | 27 |
2 files changed, 38 insertions, 14 deletions
diff --git a/src/sensor/gnunet-sensor.c b/src/sensor/gnunet-sensor.c index ead7c5e0d..0b4dd6da1 100644 --- a/src/sensor/gnunet-sensor.c +++ b/src/sensor/gnunet-sensor.c | |||
@@ -29,11 +29,16 @@ | |||
29 | 29 | ||
30 | static int ret; | 30 | static int ret; |
31 | 31 | ||
32 | /* | 32 | /** |
33 | * option '-a' | 33 | * option '-a' |
34 | */ | 34 | */ |
35 | static int get_all; | 35 | static int get_all; |
36 | 36 | ||
37 | /** | ||
38 | * option '-g' | ||
39 | */ | ||
40 | static char *get_sensor; | ||
41 | |||
37 | /* | 42 | /* |
38 | * Handle to sensor service | 43 | * Handle to sensor service |
39 | */ | 44 | */ |
@@ -106,10 +111,10 @@ run (void *cls, | |||
106 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, | 111 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, |
107 | &shutdown_task, | 112 | &shutdown_task, |
108 | NULL); | 113 | NULL); |
114 | sensor_handle = GNUNET_SENSOR_connect(cfg); | ||
115 | GNUNET_assert(NULL != sensor_handle); | ||
109 | if(GNUNET_YES == get_all) | 116 | if(GNUNET_YES == get_all) |
110 | { | 117 | { |
111 | sensor_handle = GNUNET_SENSOR_connect(cfg); | ||
112 | GNUNET_assert(NULL != sensor_handle); | ||
113 | GNUNET_SENSOR_iterate_sensors(sensor_handle, | 118 | GNUNET_SENSOR_iterate_sensors(sensor_handle, |
114 | GNUNET_TIME_UNIT_FOREVER_REL, | 119 | GNUNET_TIME_UNIT_FOREVER_REL, |
115 | NULL, | 120 | NULL, |
@@ -117,6 +122,15 @@ run (void *cls, | |||
117 | &print_sensor_info, | 122 | &print_sensor_info, |
118 | NULL); | 123 | NULL); |
119 | } | 124 | } |
125 | else if(NULL != get_sensor) | ||
126 | { | ||
127 | GNUNET_SENSOR_iterate_sensors(sensor_handle, | ||
128 | GNUNET_TIME_UNIT_FOREVER_REL, | ||
129 | get_sensor, | ||
130 | strlen(get_sensor), | ||
131 | &print_sensor_info, | ||
132 | NULL); | ||
133 | } | ||
120 | 134 | ||
121 | ret = 0; | 135 | ret = 0; |
122 | } | 136 | } |
@@ -133,8 +147,11 @@ main (int argc, char *const *argv) | |||
133 | { | 147 | { |
134 | static const struct GNUNET_GETOPT_CommandLineOption options[] = { | 148 | static const struct GNUNET_GETOPT_CommandLineOption options[] = { |
135 | {'a', "all", NULL, | 149 | {'a', "all", NULL, |
136 | gettext_noop("Retrieve names of all defined sensors"), | 150 | gettext_noop("Retrieve information about all defined sensors"), |
137 | 0, &GNUNET_GETOPT_set_one, &get_all}, | 151 | 0, &GNUNET_GETOPT_set_one, &get_all}, |
152 | {'g', "get-sensor", NULL, | ||
153 | gettext_noop("Retrieve information about a single sensor"), | ||
154 | 1, &GNUNET_GETOPT_set_string, &get_sensor}, | ||
138 | GNUNET_GETOPT_OPTION_END | 155 | GNUNET_GETOPT_OPTION_END |
139 | }; | 156 | }; |
140 | return (GNUNET_OK == | 157 | return (GNUNET_OK == |
diff --git a/src/sensor/gnunet-service-sensor.c b/src/sensor/gnunet-service-sensor.c index 5a574f77d..38099b172 100644 --- a/src/sensor/gnunet-service-sensor.c +++ b/src/sensor/gnunet-service-sensor.c | |||
@@ -320,7 +320,7 @@ add_sensor_to_hashmap(struct SensorInfo *sensor, struct GNUNET_CONTAINER_MultiHa | |||
320 | struct GNUNET_HashCode key; | 320 | struct GNUNET_HashCode key; |
321 | struct SensorInfo *existing; | 321 | struct SensorInfo *existing; |
322 | 322 | ||
323 | GNUNET_CRYPTO_hash(sensor->name, sizeof(sensor->name), &key); | 323 | GNUNET_CRYPTO_hash(sensor->name, strlen(sensor->name), &key); |
324 | existing = GNUNET_CONTAINER_multihashmap_get(map, &key); | 324 | existing = GNUNET_CONTAINER_multihashmap_get(map, &key); |
325 | if(NULL != existing) //sensor with same name already exists | 325 | if(NULL != existing) //sensor with same name already exists |
326 | { | 326 | { |
@@ -472,17 +472,24 @@ handle_get_sensor (void *cls, struct GNUNET_SERVER_Client *client, | |||
472 | struct SensorInfoMessage *msg; | 472 | struct SensorInfoMessage *msg; |
473 | 473 | ||
474 | sensorname = (char *)&message[1]; | 474 | sensorname = (char *)&message[1]; |
475 | sensorname_len = message->size - sizeof(struct GNUNET_MessageHeader); | 475 | sensorname_len = ntohs(message->size) - sizeof(struct GNUNET_MessageHeader); |
476 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, "`%s' message received for sensor `%.*s\n", | 476 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, "`%s' message received for sensor (%d) `%.*s'\n", |
477 | "GET SENSOR", sensorname_len, sensorname); | 477 | "GET SENSOR", sensorname_len, sensorname_len, sensorname); |
478 | tc = GNUNET_SERVER_transmit_context_create (client); | 478 | tc = GNUNET_SERVER_transmit_context_create (client); |
479 | GNUNET_CRYPTO_hash(sensorname, sensorname_len, &key); | 479 | GNUNET_CRYPTO_hash(sensorname, sensorname_len, &key); |
480 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created key hash for requested sensor\n"); | ||
480 | sensorinfo = (struct SensorInfo *)GNUNET_CONTAINER_multihashmap_get(sensors, &key); | 481 | sensorinfo = (struct SensorInfo *)GNUNET_CONTAINER_multihashmap_get(sensors, &key); |
481 | msg = create_sensor_info_msg(sensorinfo); | 482 | if(NULL != sensorinfo) |
482 | GNUNET_SERVER_transmit_context_append_message(tc, (struct GNUNET_MessageHeader *)msg); | 483 | { |
484 | msg = create_sensor_info_msg(sensorinfo); | ||
485 | GNUNET_SERVER_transmit_context_append_message(tc, (struct GNUNET_MessageHeader *)msg); | ||
486 | GNUNET_free(msg); | ||
487 | } | ||
488 | else | ||
489 | GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Requested sensor `%.*s' was not found\n", | ||
490 | sensorname_len, sensorname); | ||
491 | GNUNET_SERVER_transmit_context_append_data(tc, NULL, 0, GNUNET_MESSAGE_TYPE_SENSOR_END); | ||
483 | GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL); | 492 | GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL); |
484 | |||
485 | GNUNET_free(msg); | ||
486 | } | 493 | } |
487 | 494 | ||
488 | /** | 495 | /** |
@@ -542,9 +549,9 @@ run (void *cls, | |||
542 | { | 549 | { |
543 | static const struct GNUNET_SERVER_MessageHandler handlers[] = { | 550 | static const struct GNUNET_SERVER_MessageHandler handlers[] = { |
544 | {&handle_get_sensor, NULL, GNUNET_MESSAGE_TYPE_SENSOR_GET, | 551 | {&handle_get_sensor, NULL, GNUNET_MESSAGE_TYPE_SENSOR_GET, |
545 | sizeof (struct GNUNET_MessageHeader)}, | ||
546 | {&handle_get_all_sensors, NULL, GNUNET_MESSAGE_TYPE_SENSOR_GETALL, | ||
547 | 0}, | 552 | 0}, |
553 | {&handle_get_all_sensors, NULL, GNUNET_MESSAGE_TYPE_SENSOR_GETALL, | ||
554 | sizeof (struct GNUNET_MessageHeader)}, | ||
548 | {NULL, NULL, 0, 0} | 555 | {NULL, NULL, 0, 0} |
549 | }; | 556 | }; |
550 | 557 | ||