summaryrefslogtreecommitdiff
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)
downloadgnunet-e68aa2bf46213e33bf1bc07a335df8aeb5ac01c3.tar.gz
gnunet-e68aa2bf46213e33bf1bc07a335df8aeb5ac01c3.zip
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 000000000..15fb61b4c
--- /dev/null
+++ b/src/include/gnunet_sensor_util_lib.h
@@ -0,0 +1,215 @@
1/*
2 This file is part of GNUnet.
3 (C)
4
5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published
7 by the Free Software Foundation; either version 3, or (at your
8 option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with GNUnet; see the file COPYING. If not, write to the
17 Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA.
19*/
20
21/**
22 * @file sensor/sensor_util_lib.c
23 * @brief senor utilities
24 * @author Omar Tarabai
25 */
26
27#ifndef GNUNET_SENSOR_UTIL_LIB_H
28#define GNUNET_SENSOR_UTIL_LIB_H
29
30#ifdef __cplusplus
31extern "C"
32{
33#if 0 /* keep Emacsens' auto-indent happy */
34}
35#endif
36#endif
37
38/**
39 * Structure containing sensor definition
40 */
41struct SensorInfo
42{
43
44 /**
45 * The configuration handle
46 * carrying sensor information
47 */
48 struct GNUNET_CONFIGURATION_Handle *cfg;
49
50 /*
51 * Sensor name
52 */
53 char *name;
54
55 /*
56 * Path to definition file
57 */
58 char *def_file;
59
60 /*
61 * First part of version number
62 */
63 uint16_t version_major;
64
65 /*
66 * Second part of version number
67 */
68 uint16_t version_minor;
69
70 /*
71 * Sensor description
72 */
73 char *description;
74
75 /*
76 * Sensor currently enabled
77 */
78 int enabled;
79
80 /*
81 * Category under which the sensor falls (e.g. tcp, datastore)
82 */
83 char *category;
84
85 /*
86 * When does the sensor become active
87 */
88 struct GNUNET_TIME_Absolute *start_time;
89
90 /*
91 * When does the sensor expire
92 */
93 struct GNUNET_TIME_Absolute *end_time;
94
95 /*
96 * Time interval to collect sensor information (e.g. every 1 min)
97 */
98 struct GNUNET_TIME_Relative interval;
99
100 /*
101 * Lifetime of an information sample after which it is deleted from storage
102 * If not supplied, will default to the interval value
103 */
104 struct GNUNET_TIME_Relative lifetime;
105
106 /*
107 * A set of required peer capabilities for the sensor to collect meaningful information (e.g. ipv6)
108 */
109 char *capabilities;
110
111 /*
112 * Either "gnunet-statistics" or external "process"
113 */
114 char *source;
115
116 /*
117 * Name of the GNUnet service that is the source for the gnunet-statistics entry
118 */
119 char *gnunet_stat_service;
120
121 /*
122 * Name of the gnunet-statistics entry
123 */
124 char *gnunet_stat_name;
125
126 /**
127 * Handle to statistics get request (OR GNUNET_SCHEDULER_NO_TASK)
128 */
129 struct GNUNET_STATISTICS_GetHandle *gnunet_stat_get_handle;
130
131 /*
132 * Name of the external process to be executed
133 */
134 char *ext_process;
135
136 /*
137 * Arguments to be passed to the external process
138 */
139 char *ext_args;
140
141 /*
142 * Handle to the external process
143 */
144 struct GNUNET_OS_CommandHandle *ext_cmd;
145
146 /*
147 * Did we already receive a value
148 * from the currently running external
149 * proccess ? #GNUNET_YES / #GNUNET_NO
150 */
151 int ext_cmd_value_received;
152
153 /*
154 * The output datatype to be expected
155 */
156 char *expected_datatype;
157
158 /*
159 * Peer-identity of peer running collection point
160 */
161 struct GNUNET_PeerIdentity *collection_point;
162
163 /*
164 * Time interval to send sensor information to collection point (e.g. every 30 mins)
165 */
166 struct GNUNET_TIME_Relative collection_interval;
167
168 /*
169 * Flag specifying if value is to be communicated to the p2p network
170 */
171 int p2p_report;
172
173 /*
174 * Time interval to communicate value to the p2p network
175 */
176 struct GNUNET_TIME_Relative p2p_interval;
177
178 /*
179 * Execution task (OR GNUNET_SCHEDULER_NO_TASK)
180 */
181 GNUNET_SCHEDULER_TaskIdentifier execution_task;
182
183 /*
184 * Is the sensor being executed
185 */
186 int running;
187
188};
189
190/**
191 * Reads sensor definitions from local data files
192 *
193 * @return a multihashmap of loaded sensors
194 */
195struct GNUNET_CONTAINER_MultiHashMap *
196GNUNET_SENSOR_load_all_sensors ();
197
198/*
199 * Get path to the directory containing the sensor definition files
200 *
201 * @return sensor files directory
202 */
203char *
204GNUNET_SENSOR_get_sensor_dir ();
205
206#if 0 /* keep Emacsens' auto-indent happy */
207{
208#endif
209#ifdef __cplusplus
210}
211#endif
212
213/* ifndef GNUNET_SENSOR_UTIL_LIB_H */
214#endif
215/* end of gnunet_sensor_util_lib.h */