From d5838194f7e6f059aa16bc5d0a49f9fd367ad90d Mon Sep 17 00:00:00 2001 From: Omar Tarabai Date: Thu, 26 Jun 2014 14:15:56 +0000 Subject: [PATCH] sensor: unified numeric datatypes --- src/sensor/gnunet-service-sensor-analysis.c | 18 +------------- src/sensor/gnunet-service-sensor.c | 21 ++++------------ src/sensor/gnunet_sensor_model_plugin.h | 9 +++++++ src/sensor/plugin_sensor_model_gaussian.c | 24 +++++++++++++++++++ src/sensor/sensors/average-ping-rtt | 2 +- src/sensor/sensors/datacache-bytes-stored | 2 +- src/sensor/sensors/known-peers | 2 +- src/sensor/sensors/nse | 2 +- src/sensor/sensors/peerstore-memory | 2 +- src/sensor/sensors/transport-bytes-received | 2 +- .../sensors/transport-tcp-bytes-transmitted | 2 +- .../sensors/transport-tcp-sessions-active | 2 +- 12 files changed, 47 insertions(+), 41 deletions(-) diff --git a/src/sensor/gnunet-service-sensor-analysis.c b/src/sensor/gnunet-service-sensor-analysis.c index 37844f30c..531f7857d 100644 --- a/src/sensor/gnunet-service-sensor-analysis.c +++ b/src/sensor/gnunet-service-sensor-analysis.c @@ -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; diff --git a/src/sensor/gnunet-service-sensor.c b/src/sensor/gnunet-service-sensor.c index 681f132b6..83e611bfb 100644 --- a/src/sensor/gnunet-service-sensor.c +++ b/src/sensor/gnunet-service-sensor.c @@ -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); diff --git a/src/sensor/gnunet_sensor_model_plugin.h b/src/sensor/gnunet_sensor_model_plugin.h index 374c776f5..b2973a60d 100644 --- a/src/sensor/gnunet_sensor_model_plugin.h +++ b/src/sensor/gnunet_sensor_model_plugin.h @@ -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); + }; diff --git a/src/sensor/plugin_sensor_model_gaussian.c b/src/sensor/plugin_sensor_model_gaussian.c index ee316035e..bf2090217 100644 --- a/src/sensor/plugin_sensor_model_gaussian.c +++ b/src/sensor/plugin_sensor_model_gaussian.c @@ -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. * diff --git a/src/sensor/sensors/average-ping-rtt b/src/sensor/sensors/average-ping-rtt index aaf84e0b6..36888c982 100644 --- a/src/sensor/sensors/average-ping-rtt +++ b/src/sensor/sensors/average-ping-rtt @@ -22,7 +22,7 @@ SOURCE = process EXT_PROCESS = avgping.sh #EXT_ARGS = -EXPECTED_DATATYPE = double +EXPECTED_DATATYPE = numeric # Reporting mechanism COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80 diff --git a/src/sensor/sensors/datacache-bytes-stored b/src/sensor/sensors/datacache-bytes-stored index c58bb4ea1..b55ee8083 100644 --- a/src/sensor/sensors/datacache-bytes-stored +++ b/src/sensor/sensors/datacache-bytes-stored @@ -22,7 +22,7 @@ GNUNET_STAT_NAME = # bytes stored #EXT_PROCESS = #EXT_ARGS = -EXPECTED_DATATYPE = uint64 +EXPECTED_DATATYPE = numeric # Reporting mechanism COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80 diff --git a/src/sensor/sensors/known-peers b/src/sensor/sensors/known-peers index fa92bd7c7..5c7c1aeaa 100644 --- a/src/sensor/sensors/known-peers +++ b/src/sensor/sensors/known-peers @@ -22,7 +22,7 @@ GNUNET_STAT_NAME = # peers known #EXT_PROCESS = #EXT_ARGS = -EXPECTED_DATATYPE = uint64 +EXPECTED_DATATYPE = numeric # Reporting mechanism COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80 diff --git a/src/sensor/sensors/nse b/src/sensor/sensors/nse index 429e80478..f95cc34de 100644 --- a/src/sensor/sensors/nse +++ b/src/sensor/sensors/nse @@ -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 diff --git a/src/sensor/sensors/peerstore-memory b/src/sensor/sensors/peerstore-memory index a75110d36..6d6c54600 100644 --- a/src/sensor/sensors/peerstore-memory +++ b/src/sensor/sensors/peerstore-memory @@ -22,7 +22,7 @@ SOURCE = process EXT_PROCESS = peerstore-memory.sh #EXT_ARGS = -EXPECTED_DATATYPE = uint64 +EXPECTED_DATATYPE = numeric # Reporting mechanism COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80 diff --git a/src/sensor/sensors/transport-bytes-received b/src/sensor/sensors/transport-bytes-received index 014546934..5c45d6cb1 100644 --- a/src/sensor/sensors/transport-bytes-received +++ b/src/sensor/sensors/transport-bytes-received @@ -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 diff --git a/src/sensor/sensors/transport-tcp-bytes-transmitted b/src/sensor/sensors/transport-tcp-bytes-transmitted index 43b0f572c..cf45c0c86 100644 --- a/src/sensor/sensors/transport-tcp-bytes-transmitted +++ b/src/sensor/sensors/transport-tcp-bytes-transmitted @@ -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 diff --git a/src/sensor/sensors/transport-tcp-sessions-active b/src/sensor/sensors/transport-tcp-sessions-active index a0466f81a..810313091 100644 --- a/src/sensor/sensors/transport-tcp-sessions-active +++ b/src/sensor/sensors/transport-tcp-sessions-active @@ -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 -- 2.25.1