aboutsummaryrefslogtreecommitdiff
path: root/src/include/gnunet_sensor_util_lib.h
diff options
context:
space:
mode:
authorOmar Tarabai <tarabai@devegypt.com>2014-07-03 14:06:02 +0000
committerOmar Tarabai <tarabai@devegypt.com>2014-07-03 14:06:02 +0000
commite68aa2bf46213e33bf1bc07a335df8aeb5ac01c3 (patch)
tree7935770db2280f5b3c95b4d081e67f2a06dd2a6d /src/include/gnunet_sensor_util_lib.h
parentdc09ce9982904298e0ef97c91f7bf9218f1b0046 (diff)
moved common sensor functionality to a util lib
Diffstat (limited to 'src/include/gnunet_sensor_util_lib.h')
-rw-r--r--src/include/gnunet_sensor_util_lib.h215
1 files changed, 215 insertions, 0 deletions
diff --git a/src/include/gnunet_sensor_util_lib.h b/src/include/gnunet_sensor_util_lib.h
new file mode 100644
index 0000000000..15fb61b4c9
--- /dev/null
+++ b/src/include/gnunet_sensor_util_lib.h
@@ -0,0 +1,215 @@
+/*
+ This file is part of GNUnet.
+ (C)
+
+ GNUnet is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNUnet; see the file COPYING. If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+/**
+ * @file sensor/sensor_util_lib.c
+ * @brief senor utilities
+ * @author Omar Tarabai
+ */
+
+#ifndef GNUNET_SENSOR_UTIL_LIB_H
+#define GNUNET_SENSOR_UTIL_LIB_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#if 0 /* keep Emacsens' auto-indent happy */
+}
+#endif
+#endif
+
+/**
+ * Structure containing sensor definition
+ */
+struct SensorInfo
+{
+
+ /**
+ * The configuration handle
+ * carrying sensor information
+ */
+ struct GNUNET_CONFIGURATION_Handle *cfg;
+
+ /*
+ * Sensor name
+ */
+ char *name;
+
+ /*
+ * Path to definition file
+ */
+ char *def_file;
+
+ /*
+ * First part of version number
+ */
+ uint16_t version_major;
+
+ /*
+ * Second part of version number
+ */
+ uint16_t version_minor;
+
+ /*
+ * Sensor description
+ */
+ char *description;
+
+ /*
+ * Sensor currently enabled
+ */
+ int enabled;
+
+ /*
+ * Category under which the sensor falls (e.g. tcp, datastore)
+ */
+ char *category;
+
+ /*
+ * When does the sensor become active
+ */
+ struct GNUNET_TIME_Absolute *start_time;
+
+ /*
+ * When does the sensor expire
+ */
+ struct GNUNET_TIME_Absolute *end_time;
+
+ /*
+ * Time interval to collect sensor information (e.g. every 1 min)
+ */
+ struct GNUNET_TIME_Relative interval;
+
+ /*
+ * Lifetime of an information sample after which it is deleted from storage
+ * If not supplied, will default to the interval value
+ */
+ struct GNUNET_TIME_Relative lifetime;
+
+ /*
+ * A set of required peer capabilities for the sensor to collect meaningful information (e.g. ipv6)
+ */
+ char *capabilities;
+
+ /*
+ * Either "gnunet-statistics" or external "process"
+ */
+ char *source;
+
+ /*
+ * Name of the GNUnet service that is the source for the gnunet-statistics entry
+ */
+ char *gnunet_stat_service;
+
+ /*
+ * Name of the gnunet-statistics entry
+ */
+ char *gnunet_stat_name;
+
+ /**
+ * Handle to statistics get request (OR GNUNET_SCHEDULER_NO_TASK)
+ */
+ struct GNUNET_STATISTICS_GetHandle *gnunet_stat_get_handle;
+
+ /*
+ * Name of the external process to be executed
+ */
+ char *ext_process;
+
+ /*
+ * Arguments to be passed to the external process
+ */
+ char *ext_args;
+
+ /*
+ * Handle to the external process
+ */
+ struct GNUNET_OS_CommandHandle *ext_cmd;
+
+ /*
+ * Did we already receive a value
+ * from the currently running external
+ * proccess ? #GNUNET_YES / #GNUNET_NO
+ */
+ int ext_cmd_value_received;
+
+ /*
+ * The output datatype to be expected
+ */
+ char *expected_datatype;
+
+ /*
+ * Peer-identity of peer running collection point
+ */
+ struct GNUNET_PeerIdentity *collection_point;
+
+ /*
+ * Time interval to send sensor information to collection point (e.g. every 30 mins)
+ */
+ struct GNUNET_TIME_Relative collection_interval;
+
+ /*
+ * Flag specifying if value is to be communicated to the p2p network
+ */
+ int p2p_report;
+
+ /*
+ * Time interval to communicate value to the p2p network
+ */
+ struct GNUNET_TIME_Relative p2p_interval;
+
+ /*
+ * Execution task (OR GNUNET_SCHEDULER_NO_TASK)
+ */
+ GNUNET_SCHEDULER_TaskIdentifier execution_task;
+
+ /*
+ * Is the sensor being executed
+ */
+ int running;
+
+};
+
+/**
+ * Reads sensor definitions from local data files
+ *
+ * @return a multihashmap of loaded sensors
+ */
+struct GNUNET_CONTAINER_MultiHashMap *
+GNUNET_SENSOR_load_all_sensors ();
+
+/*
+ * Get path to the directory containing the sensor definition files
+ *
+ * @return sensor files directory
+ */
+char *
+GNUNET_SENSOR_get_sensor_dir ();
+
+#if 0 /* keep Emacsens' auto-indent happy */
+{
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+/* ifndef GNUNET_SENSOR_UTIL_LIB_H */
+#endif
+/* end of gnunet_sensor_util_lib.h */