From b605cb978095810dc6de4a9fa85fba6d0009f97d Mon Sep 17 00:00:00 2001 From: Omar Tarabai Date: Mon, 7 Jul 2014 14:47:37 +0000 Subject: [PATCH] sensordashboard: received data stored in peerstore --- src/sensordashboard/Makefile.am | 1 + .../gnunet-service-sensordashboard.c | 32 ++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/sensordashboard/Makefile.am b/src/sensordashboard/Makefile.am index d54da840b..959084fae 100644 --- a/src/sensordashboard/Makefile.am +++ b/src/sensordashboard/Makefile.am @@ -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) diff --git a/src/sensordashboard/gnunet-service-sensordashboard.c b/src/sensordashboard/gnunet-service-sensordashboard.c index 841268762..19acec4da 100644 --- a/src/sensordashboard/gnunet-service-sensordashboard.c +++ b/src/sensordashboard/gnunet-service-sensordashboard.c @@ -30,14 +30,28 @@ #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; } -- 2.25.1