sensor: merged reporting module
[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 (name follows the struct)
44    */
45   size_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 (description itself follows)
59    */
60   size_t description_len;
61 };
62
63 GNUNET_NETWORK_STRUCT_END
64 /**
65  * Stop the sensor analysis module
66  */
67     void
68 SENSOR_analysis_stop ();
69
70
71 /**
72  * Start the sensor analysis module
73  *
74  * @param c our service configuration
75  * @param sensors multihashmap of loaded sensors
76  * @return #GNUNET_OK if started successfully, #GNUNET_SYSERR otherwise
77  */
78 int
79 SENSOR_analysis_start (const struct GNUNET_CONFIGURATION_Handle *c,
80                        struct GNUNET_CONTAINER_MultiHashMap *sensors);
81
82
83 /**
84  * Stop sensor anomaly reporting module
85  */
86 void
87 SENSOR_reporting_stop ();
88
89 /**
90  * Used by the analysis module to tell the reporting module about a change in
91  * the anomaly status of a sensor.
92  *
93  * @param sensor Related sensor
94  * @param anomalous The new sensor anomalous status
95  */
96 void
97 SENSOR_reporting_anomaly_update (struct GNUNET_SENSOR_SensorInfo *sensor,
98                                  int anomalous);
99
100
101 /**
102  * Start the sensor anomaly reporting module
103  *
104  * @param c our service configuration
105  * @param s multihashmap of loaded sensors
106  * @return #GNUNET_OK if started successfully, #GNUNET_SYSERR otherwise
107  */
108 int
109 SENSOR_reporting_start (const struct GNUNET_CONFIGURATION_Handle *c,
110                                 struct GNUNET_CONTAINER_MultiHashMap *s);
111
112
113 /**
114  * Stop the sensor update module
115  */
116 void
117 SENSOR_update_stop ();
118
119
120 /**
121  * Start the sensor update module
122  *
123  * @param c our service configuration
124  * @param s multihashmap of loaded sensors
125  * @param cb callback to reset service components when we have new updates
126  * @return #GNUNET_OK if started successfully, #GNUNET_SYSERR otherwise
127  */
128 int
129 SENSOR_update_start (const struct GNUNET_CONFIGURATION_Handle *c,
130                      struct GNUNET_CONTAINER_MultiHashMap *s, void (*cb) ());