b5ad6c35fcdc079a16683289d14c32a73beabdd6
[oweals/gnunet.git] / src / nse / nse.h
1 /*
2      This file is part of GNUnet.
3      Copyright (C) 2001-2011 GNUnet e.V.
4
5      GNUnet is free software: you can redistribute it and/or modify it
6      under the terms of the GNU Affero General Public License as published
7      by the Free Software Foundation, either version 3 of the License,
8      or (at your 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      Affero General Public License for more details.
14     
15      You should have received a copy of the GNU Affero General Public License
16      along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 /**
20  * @author Nathan Evans
21  * @file nse/nse.h
22  *
23  * @brief Common type definitions for the network size estimation
24  *        service and API.
25  */
26 #ifndef NSE_H
27 #define NSE_H
28
29 #include "gnunet_common.h"
30
31 GNUNET_NETWORK_STRUCT_BEGIN
32
33 /**
34  * Network size estimate sent from the service
35  * to clients.  Contains the current size estimate
36  * (or 0 if none has been calculated) and the
37  * standard deviation of known estimates.
38  *
39  */
40 struct GNUNET_NSE_ClientMessage
41 {
42   /**
43    * Type: GNUNET_MESSAGE_TYPE_NSE_ESTIMATE
44    */
45   struct GNUNET_MessageHeader header;
46
47   /**
48    * For alignment.
49    */
50   uint32_t reserved GNUNET_PACKED;
51
52   /**
53    * Timestamp at which the server received the message.
54    */
55   struct GNUNET_TIME_AbsoluteNBO timestamp;
56
57   /**
58    * The current estimated network size.
59    */
60   double size_estimate GNUNET_PACKED;
61
62   /**
63    * The standard deviation (rounded down
64    * to the nearest integer) of size
65    * estimations.
66    */
67   double std_deviation GNUNET_PACKED;
68 };
69 GNUNET_NETWORK_STRUCT_END
70
71 #endif