*/
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
*/
{
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;
/**
* Supported datatypes of sensor information
*/
-static const char *datatypes[] = { "uint64", "double", "string", NULL };
+static const char *datatypes[] = { "numeric", "string", NULL };
/**
* Handle to statistics service
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);
subsystem,
&peerid,
sensorinfo->name,
- &value,
- sizeof(value),
+ &dvalue,
+ sizeof(dvalue),
expiry,
GNUNET_PEERSTORE_STOREOPTION_MULTIPLE,
NULL,
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);
*/
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);
+
};
};
+/*
+ * 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.
*
EXT_PROCESS = avgping.sh
#EXT_ARGS =
-EXPECTED_DATATYPE = double
+EXPECTED_DATATYPE = numeric
# Reporting mechanism
COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80
#EXT_PROCESS =
#EXT_ARGS =
-EXPECTED_DATATYPE = uint64
+EXPECTED_DATATYPE = numeric
# Reporting mechanism
COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80
#EXT_PROCESS =
#EXT_ARGS =
-EXPECTED_DATATYPE = uint64
+EXPECTED_DATATYPE = numeric
# Reporting mechanism
COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80
#EXT_PROCESS =
#EXT_ARGS =
-EXPECTED_DATATYPE = uint64
+EXPECTED_DATATYPE = numeric
# Reporting mechanism
COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80
EXT_PROCESS = peerstore-memory.sh
#EXT_ARGS =
-EXPECTED_DATATYPE = uint64
+EXPECTED_DATATYPE = numeric
# Reporting mechanism
COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80
#EXT_PROCESS =
#EXT_ARGS =
-EXPECTED_DATATYPE = uint64
+EXPECTED_DATATYPE = numeric
# Reporting mechanism
COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80
#EXT_PROCESS =
#EXT_ARGS =
-EXPECTED_DATATYPE = uint64
+EXPECTED_DATATYPE = numeric
# Reporting mechanism
COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80
#EXT_PROCESS =
#EXT_ARGS =
-EXPECTED_DATATYPE = uint64
+EXPECTED_DATATYPE = numeric
# Reporting mechanism
COLLECTION_POINT = JLAPIAOB2DJA4B4I676TCOCVU0DUIRMKKUSM71BLLGCV3OHMUQ80