sensor: unified numeric datatypes
authorOmar Tarabai <tarabai@devegypt.com>
Thu, 26 Jun 2014 14:15:56 +0000 (14:15 +0000)
committerOmar Tarabai <tarabai@devegypt.com>
Thu, 26 Jun 2014 14:15:56 +0000 (14:15 +0000)
12 files changed:
src/sensor/gnunet-service-sensor-analysis.c
src/sensor/gnunet-service-sensor.c
src/sensor/gnunet_sensor_model_plugin.h
src/sensor/plugin_sensor_model_gaussian.c
src/sensor/sensors/average-ping-rtt
src/sensor/sensors/datacache-bytes-stored
src/sensor/sensors/known-peers
src/sensor/sensors/nse
src/sensor/sensors/peerstore-memory
src/sensor/sensors/transport-bytes-received
src/sensor/sensors/transport-tcp-bytes-transmitted
src/sensor/sensors/transport-tcp-sessions-active

index 37844f30c395cad7445b030c5f1b476710729bd3..531f7857d4335c8f16ca60f38f49ecd7fc9165d4 100644 (file)
@@ -79,11 +79,6 @@ static struct GNUNET_SENSOR_ModelFunctions *model_api;
  */
 static struct GNUNET_PEERSTORE_Handle *peerstore;
 
-/*
- * Datatypes supported by the analysis component
- */
-static const char *analysis_datatypes[] = { "uint64", "double", NULL };
-
 /*
  * Head of DLL of created models
  */
@@ -173,19 +168,8 @@ init_sensor_model (void *cls,
 {
   struct SensorInfo *sensor = value;
   struct SensorModel *sensor_model;
-  int is_numeric;
-  int i;
 
-  is_numeric = GNUNET_NO;
-  for (i = 0; NULL != analysis_datatypes[i]; i++)
-  {
-    if (0 == strcmp (analysis_datatypes[i], sensor->expected_datatype))
-    {
-      is_numeric = GNUNET_YES;
-      break;
-    }
-  }
-  if (GNUNET_NO == is_numeric)
+  if (0 != strcmp("numeric", sensor->expected_datatype))
     return GNUNET_YES;
   sensor_model = GNUNET_new(struct SensorModel);
   sensor_model->sensor = sensor;
index 681f132b6d1c300275dc022e6a06066d28cadeda..83e611bfbedfcee5456967641a0591a96cd3b0ee 100644 (file)
@@ -53,7 +53,7 @@ static const char *sources[] = { "gnunet-statistics", "process", NULL };
 /**
  * Supported datatypes of sensor information
  */
-static const char *datatypes[] = { "uint64", "double", "string", NULL };
+static const char *datatypes[] = { "numeric", "string", NULL };
 
 /**
  * Handle to statistics service
@@ -697,6 +697,7 @@ int sensor_statistics_iterator (void *cls,
     int is_persistent)
 {
   struct SensorInfo *sensorinfo = cls;
+  double dvalue = (double)value;
   struct GNUNET_TIME_Absolute expiry;
 
   GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Received a value for sensor `%s': %" PRIu64 "\n", sensorinfo->name, value);
@@ -705,8 +706,8 @@ int sensor_statistics_iterator (void *cls,
       subsystem,
       &peerid,
       sensorinfo->name,
-      &value,
-      sizeof(value),
+      &dvalue,
+      sizeof(dvalue),
       expiry,
       GNUNET_PEERSTORE_STOREOPTION_MULTIPLE,
       NULL,
@@ -741,25 +742,13 @@ void end_sensor_run_stat (void *cls, int success)
 static size_t
 parse_sensor_value (const char *value, struct SensorInfo* sensor, void **ret)
 {
-  uint64_t *ullval;
   double *dval;
   char *endptr;
 
   *ret = NULL;
   if ('\0' == *value)
     return 0;
-  //"uint64", "double", "string"
-  if (0 == strcmp("uint64", sensor->expected_datatype))
-  {
-    ullval = GNUNET_new(uint64_t);
-    *ullval = strtoull(value, &endptr, 10);
-    if ('\0' != *endptr &&
-        '\n' != *endptr) /* Invalid string */
-      return 0;
-    *ret = ullval;
-    return sizeof(uint64_t);
-  }
-  if(0 == strcmp("double", sensor->expected_datatype))
+  if(0 == strcmp("numeric", sensor->expected_datatype))
   {
     dval = GNUNET_new(double);
     *dval = strtod(value, &endptr);
index 374c776f5fbed6dd16d7a58710913b01410e1a47..b2973a60db63b6a6d13878e45d54ab90393d080c 100644 (file)
@@ -48,6 +48,15 @@ struct GNUNET_SENSOR_ModelFunctions
    */
   void *cls;
 
+  /*
+   * Create a model instance
+   *
+   * @param cls closure (plugin state)
+   * @return model state to be used for later calls
+   */
+  void *
+  (*create_model) (void *cls);
+
 };
 
 
index ee316035e62c87438fe6c3206baa899dc6331be5..bf2090217a97e7e9b9b355d8c218e2f474e5fd0e 100644 (file)
@@ -44,6 +44,30 @@ struct Plugin
 
 };
 
+/*
+ * State of single model instance
+ */
+struct Model
+{
+
+  /*
+   * Pointer to the plugin state
+   */
+  struct Plugin *plugin;
+
+};
+
+static void *
+sensor_gaussian_model_create_model (void *cls)
+{
+  struct Plugin *plugin = cls;
+  struct Model *model;
+
+  model = GNUNET_new(struct Model);
+  model->plugin = plugin;
+  return model;
+}
+
 /*
  * Entry point for the plugin.
  *
index aaf84e0b6f6cde389bfdfe397f002a0814d53e9d..36888c9829e867fd1f9a2a64283b21bdf35b8f55 100644 (file)
@@ -22,7 +22,7 @@ SOURCE = process
 EXT_PROCESS = avgping.sh
 #EXT_ARGS = 
 
-EXPECTED_DATATYPE = double
+EXPECTED_DATATYPE = numeric
 
 # Reporting mechanism
 COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80
index c58bb4ea18c1f1b17f68878e186f06c44eae9b09..b55ee80834da1afca1a6d7d6f2c2da9e93ed8560 100644 (file)
@@ -22,7 +22,7 @@ GNUNET_STAT_NAME = # bytes stored
 #EXT_PROCESS = 
 #EXT_ARGS = 
 
-EXPECTED_DATATYPE = uint64
+EXPECTED_DATATYPE = numeric
 
 # Reporting mechanism
 COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80
index fa92bd7c767727cf6bd9f80b00b4758cd499f2d2..5c7c1aeaae47556345f95eb13639eee706504b00 100644 (file)
@@ -22,7 +22,7 @@ GNUNET_STAT_NAME = # peers known
 #EXT_PROCESS = 
 #EXT_ARGS = 
 
-EXPECTED_DATATYPE = uint64
+EXPECTED_DATATYPE = numeric
 
 # Reporting mechanism
 COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80
index 429e80478e4d0ea75d53e0b163875c07df5f3a77..f95cc34de9b52e0518cccf931ebca10889bd31f8 100644 (file)
@@ -22,7 +22,7 @@ GNUNET_STAT_NAME = # nodes in the network (estimate)
 #EXT_PROCESS = 
 #EXT_ARGS = 
 
-EXPECTED_DATATYPE = uint64
+EXPECTED_DATATYPE = numeric
 
 # Reporting mechanism
 COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80
index a75110d36a9a30150d56ba3134fdd8221a3dfade..6d6c54600be1f1f7ee25c355fb1afd8bd1f54ce9 100644 (file)
@@ -22,7 +22,7 @@ SOURCE = process
 EXT_PROCESS = peerstore-memory.sh
 #EXT_ARGS = 
 
-EXPECTED_DATATYPE = uint64
+EXPECTED_DATATYPE = numeric
 
 # Reporting mechanism
 COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80
index 014546934b582107f4b034a845c535af6c3a47fa..5c45d6cb1efbd3594e0b029918c68aa65f888009 100644 (file)
@@ -22,7 +22,7 @@ GNUNET_STAT_NAME = # bytes total received
 #EXT_PROCESS = 
 #EXT_ARGS = 
 
-EXPECTED_DATATYPE = uint64
+EXPECTED_DATATYPE = numeric
 
 # Reporting mechanism
 COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80
index 43b0f572ca20e1d099dc36050229d3337aa1c533..cf45c0c86730bc46be89fe7de407c96fda944eba 100644 (file)
@@ -22,7 +22,7 @@ GNUNET_STAT_NAME = # bytes transmitted via TCP
 #EXT_PROCESS = 
 #EXT_ARGS = 
 
-EXPECTED_DATATYPE = uint64
+EXPECTED_DATATYPE = numeric
 
 # Reporting mechanism
 COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80
index a0466f81aaace6c1007095c0e2d013435bf5efc1..810313091a03937127274ece27c1522fe6191bcb 100644 (file)
@@ -22,7 +22,7 @@ GNUNET_STAT_NAME = # TCP sessions active
 #EXT_PROCESS = 
 #EXT_ARGS = 
 
-EXPECTED_DATATYPE = uint64
+EXPECTED_DATATYPE = numeric
 
 # Reporting mechanism
 COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80