sensordashboard: received data stored in peerstore
authorOmar Tarabai <tarabai@devegypt.com>
Mon, 7 Jul 2014 14:47:37 +0000 (14:47 +0000)
committerOmar Tarabai <tarabai@devegypt.com>
Mon, 7 Jul 2014 14:47:37 +0000 (14:47 +0000)
src/sensordashboard/Makefile.am
src/sensordashboard/gnunet-service-sensordashboard.c

index d54da840bfaa7fb3f32fb0bf5a0527b79d91d2ab..959084fae787edfb27db7cda90034b18f7404154 100644 (file)
@@ -33,6 +33,7 @@ gnunet_service_sensordashboard_LDADD = \
   $(top_builddir)/src/util/libgnunetutil.la \
   $(top_builddir)/src/cadet/libgnunetcadet.la \
   $(top_builddir)/src/sensor/libgnunetsensorutil.la \
+  $(top_builddir)/src/peerstore/libgnunetpeerstore.la \
   $(GN_LIBINTL)
 
 
index 8412687627325b9ebe0461032226a70e0c947ae1..19acec4dad335d766743d5eb2cbb3d8b8d43a7a1 100644 (file)
 #include "sensordashboard.h"
 #include "gnunet_cadet_service.h"
 #include "gnunet_sensor_util_lib.h"
+#include "gnunet_peerstore_service.h"
 
 /**
  * Handle to CADET service
  */
 static struct GNUNET_CADET_Handle *cadet;
 
+/**
+ * Global hashmap of defined sensors
+ */
 static struct GNUNET_CONTAINER_MultiHashMap *sensors;
 
+/**
+ * Handle to the peerstore service connection
+ */
+static struct GNUNET_PEERSTORE_Handle *peerstore;
+
+/**
+ * Name of this subsystem to be used for peerstore operations
+ */
+static char *subsystem = "sensordashboard";
+
 /**
  * Task run during shutdown.
  *
@@ -52,6 +66,11 @@ cleanup_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
     GNUNET_CADET_disconnect(cadet);
     cadet = NULL;
   }
+  if (NULL != peerstore)
+  {
+    GNUNET_PEERSTORE_disconnect (peerstore);
+    peerstore = NULL;
+  }
   GNUNET_SENSOR_destroy_sensors (sensors);
   GNUNET_SCHEDULER_shutdown();
 }
@@ -143,6 +162,9 @@ int sensor_reading_receiver (void *cls, struct GNUNET_CADET_Channel *channel,
       reading->sensor->name,
       reading->timestamp,
       reading->value_size);
+  GNUNET_PEERSTORE_store (peerstore, subsystem, peer, reading->sensor->name,
+      reading->value, reading->value_size, GNUNET_TIME_UNIT_FOREVER_ABS,
+      GNUNET_PEERSTORE_STOREOPTION_MULTIPLE, NULL, NULL);
   GNUNET_free (reading->value);
   GNUNET_free (reading);
   return GNUNET_OK;
@@ -181,7 +203,15 @@ run (void *cls, struct GNUNET_SERVER_Handle *server,
   if(NULL == cadet)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-        _("Failed to connect to CADET service.\n"));
+        _("Failed to connect to `%s' service.\n"), "CADET");
+    GNUNET_SCHEDULER_add_now (&cleanup_task, NULL);
+    return;
+  }
+  peerstore = GNUNET_PEERSTORE_connect (cfg);
+  if (NULL == peerstore)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+        _("Failed to connect to `%s' service.\n"), "PEERSTORE");
     GNUNET_SCHEDULER_add_now (&cleanup_task, NULL);
     return;
   }