diff options
author | Omar Tarabai <tarabai@devegypt.com> | 2014-07-03 14:06:02 +0000 |
---|---|---|
committer | Omar Tarabai <tarabai@devegypt.com> | 2014-07-03 14:06:02 +0000 |
commit | e68aa2bf46213e33bf1bc07a335df8aeb5ac01c3 (patch) | |
tree | 7935770db2280f5b3c95b4d081e67f2a06dd2a6d /src/include/gnunet_sensor_util_lib.h | |
parent | dc09ce9982904298e0ef97c91f7bf9218f1b0046 (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.h | 215 |
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 */ |