sensor: fixes for proof-of-work, test passes now
[oweals/gnunet.git] / src / sensor / sensor.h
1 /*
2       This file is part of GNUnet
3       (C) 2012-2013 Christian Grothoff (and other contributing authors)
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  * @file sensor/sensor.h
22  * @brief IPC messages and private service declarations
23  * @author Omar Tarabai
24  */
25
26 #include "gnunet_sensor_service.h"
27 #include "gnunet_sensor_util_lib.h"
28
29
30 GNUNET_NETWORK_STRUCT_BEGIN
31 /**
32  * Carries a summary of a sensor
33  *
34  */
35     struct SensorInfoMessage
36 {
37   /**
38    * Message header
39    */
40   struct GNUNET_MessageHeader header;
41
42   /**
43    * Length of sensor name. Allocated at position 0 after this struct.
44    */
45   uint16_t name_len;
46
47   /**
48    * First part of version number
49    */
50   uint16_t version_major;
51
52   /**
53    * Second part of version number
54    */
55   uint16_t version_minor;
56
57   /**
58    * Length of sensor description. Allocated at position 1 after this struct.
59    */
60   uint16_t description_len;
61 };
62
63 /**
64  * A message sent to the sensor service to force an anomaly status on a sensor.
65  */
66 struct ForceAnomalyMessage
67 {
68
69   /**
70    * Message header
71    */
72   struct GNUNET_MessageHeader header;
73
74   /**
75    * Hash of the sensor name
76    */
77   struct GNUNET_HashCode sensor_name_hash;
78
79   /**
80    * New status
81    */
82   uint16_t anomalous;
83
84 };
85
86 GNUNET_NETWORK_STRUCT_END
87 /**
88  * Stop the sensor analysis module
89  */
90     void
91 SENSOR_analysis_stop ();
92
93
94 /**
95  * Start the sensor analysis module
96  *
97  * @param c our service configuration
98  * @param sensors multihashmap of loaded sensors
99  * @return #GNUNET_OK if started successfully, #GNUNET_SYSERR otherwise
100  */
101 int
102 SENSOR_analysis_start (const struct GNUNET_CONFIGURATION_Handle *c,
103                        struct GNUNET_CONTAINER_MultiHashMap *s);
104
105
106 /**
107  * Stop sensor anomaly reporting module
108  */
109 void
110 SENSOR_reporting_stop ();
111
112 /**
113  * Used by the analysis module to tell the reporting module about a change in
114  * the anomaly status of a sensor.
115  *
116  * @param sensor Related sensor
117  * @param anomalous The new sensor anomalous status
118  */
119 void
120 SENSOR_reporting_anomaly_update (struct GNUNET_SENSOR_SensorInfo *sensor,
121                                  int anomalous);
122
123
124 /**
125  * Start the sensor anomaly reporting module
126  *
127  * @param c our service configuration
128  * @param s multihashmap of loaded sensors
129  * @return #GNUNET_OK if started successfully, #GNUNET_SYSERR otherwise
130  */
131 int
132 SENSOR_reporting_start (const struct GNUNET_CONFIGURATION_Handle *c,
133                         struct GNUNET_CONTAINER_MultiHashMap *s);
134
135
136 /**
137  * Stop the sensor update module
138  */
139 void
140 SENSOR_update_stop ();
141
142
143 /**
144  * Start the sensor update module
145  *
146  * @param c our service configuration
147  * @param s multihashmap of loaded sensors
148  * @param cb callback to reset service components when we have new updates
149  * @return #GNUNET_OK if started successfully, #GNUNET_SYSERR otherwise
150  */
151 int
152 SENSOR_update_start (const struct GNUNET_CONFIGURATION_Handle *c,
153                      struct GNUNET_CONTAINER_MultiHashMap *s, void (*cb) ());
154
155
156 /**
157  * Stop the sensor monitoring module
158  */
159 void
160 SENSOR_monitoring_stop ();
161
162
163 /**
164  * Start the sensor monitoring module
165  *
166  * @param c our service configuration
167  * @param sensors multihashmap of loaded sensors
168  * @return #GNUNET_OK if started successfully, #GNUNET_SYSERR otherwise
169  */
170 int
171 SENSOR_monitoring_start (const struct GNUNET_CONFIGURATION_Handle *c,
172                          struct GNUNET_CONTAINER_MultiHashMap *s);