aboutsummaryrefslogtreecommitdiff
path: root/src/sensor
diff options
context:
space:
mode:
authorOmar Tarabai <tarabai@devegypt.com>2014-05-02 15:28:43 +0000
committerOmar Tarabai <tarabai@devegypt.com>2014-05-02 15:28:43 +0000
commit8fb2088b5105c48353a4b92fb54d6abdf75de45c (patch)
tree7bb18955fa15e85b10212be5c91a04aecbb819bf /src/sensor
parentbd5d6005ef1020d6a8ada0ee60589cc0f5ec740b (diff)
downloadgnunet-8fb2088b5105c48353a4b92fb54d6abdf75de45c.tar.gz
gnunet-8fb2088b5105c48353a4b92fb54d6abdf75de45c.zip
getting single sensor information
Diffstat (limited to 'src/sensor')
-rw-r--r--src/sensor/gnunet-sensor.c25
-rw-r--r--src/sensor/gnunet-service-sensor.c27
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
30static int ret; 30static int ret;
31 31
32/* 32/**
33 * option '-a' 33 * option '-a'
34 */ 34 */
35static int get_all; 35static int get_all;
36 36
37/**
38 * option '-g'
39 */
40static 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