gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r33154 - gnunet/src/sensor


From: gnunet
Subject: [GNUnet-SVN] r33154 - gnunet/src/sensor
Date: Fri, 2 May 2014 17:28:44 +0200

Author: otarabai
Date: 2014-05-02 17:28:43 +0200 (Fri, 02 May 2014)
New Revision: 33154

Modified:
   gnunet/src/sensor/gnunet-sensor.c
   gnunet/src/sensor/gnunet-service-sensor.c
Log:
getting single sensor information


Modified: gnunet/src/sensor/gnunet-sensor.c
===================================================================
--- gnunet/src/sensor/gnunet-sensor.c   2014-05-02 14:42:03 UTC (rev 33153)
+++ gnunet/src/sensor/gnunet-sensor.c   2014-05-02 15:28:43 UTC (rev 33154)
@@ -29,11 +29,16 @@
 
 static int ret;
 
-/*
+/**
  * option '-a'
  */
 static int get_all;
 
+/**
+ * option '-g'
+ */
+static char *get_sensor;
+
 /*
  * Handle to sensor service
  */
@@ -106,10 +111,10 @@
   GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
                                   &shutdown_task,
                                   NULL);
+  sensor_handle = GNUNET_SENSOR_connect(cfg);
+  GNUNET_assert(NULL != sensor_handle);
   if(GNUNET_YES == get_all)
   {
-    sensor_handle = GNUNET_SENSOR_connect(cfg);
-    GNUNET_assert(NULL != sensor_handle);
     GNUNET_SENSOR_iterate_sensors(sensor_handle,
         GNUNET_TIME_UNIT_FOREVER_REL,
         NULL,
@@ -117,6 +122,15 @@
         &print_sensor_info,
         NULL);
   }
+  else if(NULL != get_sensor)
+  {
+    GNUNET_SENSOR_iterate_sensors(sensor_handle,
+        GNUNET_TIME_UNIT_FOREVER_REL,
+        get_sensor,
+        strlen(get_sensor),
+        &print_sensor_info,
+        NULL);
+  }
 
   ret = 0;
 }
@@ -133,8 +147,11 @@
 {
   static const struct GNUNET_GETOPT_CommandLineOption options[] = {
       {'a', "all", NULL,
-          gettext_noop("Retrieve names of all defined sensors"),
+          gettext_noop("Retrieve information about all defined sensors"),
       0, &GNUNET_GETOPT_set_one, &get_all},
+      {'g', "get-sensor", NULL,
+          gettext_noop("Retrieve information about a single sensor"),
+      1, &GNUNET_GETOPT_set_string, &get_sensor},
     GNUNET_GETOPT_OPTION_END
   };
   return (GNUNET_OK ==

Modified: gnunet/src/sensor/gnunet-service-sensor.c
===================================================================
--- gnunet/src/sensor/gnunet-service-sensor.c   2014-05-02 14:42:03 UTC (rev 
33153)
+++ gnunet/src/sensor/gnunet-service-sensor.c   2014-05-02 15:28:43 UTC (rev 
33154)
@@ -320,7 +320,7 @@
   struct GNUNET_HashCode key;
   struct SensorInfo *existing;
 
-  GNUNET_CRYPTO_hash(sensor->name, sizeof(sensor->name), &key);
+  GNUNET_CRYPTO_hash(sensor->name, strlen(sensor->name), &key);
   existing = GNUNET_CONTAINER_multihashmap_get(map, &key);
   if(NULL != existing) //sensor with same name already exists
   {
@@ -472,17 +472,24 @@
   struct SensorInfoMessage *msg;
 
   sensorname = (char *)&message[1];
-  sensorname_len = message->size - sizeof(struct GNUNET_MessageHeader);
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "`%s' message received for sensor 
`%.*s\n",
-              "GET SENSOR", sensorname_len, sensorname);
+  sensorname_len = ntohs(message->size) - sizeof(struct GNUNET_MessageHeader);
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "`%s' message received for sensor (%d) 
`%.*s'\n",
+              "GET SENSOR", sensorname_len, sensorname_len, sensorname);
   tc = GNUNET_SERVER_transmit_context_create (client);
   GNUNET_CRYPTO_hash(sensorname, sensorname_len, &key);
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created key hash for requested 
sensor\n");
   sensorinfo = (struct SensorInfo *)GNUNET_CONTAINER_multihashmap_get(sensors, 
&key);
-  msg = create_sensor_info_msg(sensorinfo);
-  GNUNET_SERVER_transmit_context_append_message(tc, (struct 
GNUNET_MessageHeader *)msg);
+  if(NULL != sensorinfo)
+  {
+    msg = create_sensor_info_msg(sensorinfo);
+    GNUNET_SERVER_transmit_context_append_message(tc, (struct 
GNUNET_MessageHeader *)msg);
+    GNUNET_free(msg);
+  }
+  else
+    GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Requested sensor `%.*s' was not 
found\n",
+        sensorname_len, sensorname);
+  GNUNET_SERVER_transmit_context_append_data(tc, NULL, 0, 
GNUNET_MESSAGE_TYPE_SENSOR_END);
   GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL);
-
-  GNUNET_free(msg);
 }
 
 /**
@@ -542,9 +549,9 @@
 {
   static const struct GNUNET_SERVER_MessageHandler handlers[] = {
     {&handle_get_sensor, NULL, GNUNET_MESSAGE_TYPE_SENSOR_GET,
+     0},
+    {&handle_get_all_sensors, NULL, GNUNET_MESSAGE_TYPE_SENSOR_GETALL,
      sizeof (struct GNUNET_MessageHeader)},
-    {&handle_get_all_sensors, NULL, GNUNET_MESSAGE_TYPE_SENSOR_GETALL,
-     0},
     {NULL, NULL, 0, 0}
   };
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]