add function conv param string
[oweals/gnunet.git] / src / consensus / consensus_protocol.h
1 /*
2       This file is part of GNUnet
3       Copyright (C) 2012 GNUnet e.V.
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., 51 Franklin Street, Fifth Floor,
18       Boston, MA 02110-1301, USA.
19 */
20
21
22 /**
23  * @file consensus/consensus_protocol.h
24  * @brief p2p message definitions for consensus
25  * @author Florian Dold
26  */
27
28 #ifndef GNUNET_CONSENSUS_PROTOCOL_H
29 #define GNUNET_CONSENSUS_PROTOCOL_H
30
31 #include "platform.h"
32 #include "gnunet_common.h"
33 #include "gnunet_protocols.h"
34
35
36 GNUNET_NETWORK_STRUCT_BEGIN
37
38 /**
39  * Sent as context message for set reconciliation.
40  *
41  * Essentially contains all the fields
42  * from 'struct TaskKey', but in NBO.
43  */
44 struct GNUNET_CONSENSUS_RoundContextMessage
45 {
46   /**
47    * Type: GNUNET_MESSAGE_TYPE_CONSENSUS_P2P_ROUND_CONTEXT
48    */
49   struct GNUNET_MessageHeader header;
50
51   /**
52    * A value from 'enum PhaseKind'.
53    */
54   uint16_t kind;
55
56   /**
57    * Number of the first peer
58    * in canonical order.
59    */
60   int16_t peer1;
61
62   /**
63    * Number of the second peer in canonical order.
64    */
65   int16_t peer2;
66
67   /**
68    * Repetition of the gradecast phase.
69    */
70   int16_t repetition;
71
72   /**
73    * Leader in the gradecast phase.
74    *
75    * Can be different from both peer1 and peer2.
76    */
77   int16_t leader;
78
79   /**
80    * Non-zero if this set reconciliation
81    * had elements removed because they were contested.
82    *
83    * Will be considered when grading broadcasts.
84    *
85    * Ignored for set operations that are not within gradecasts.
86    */
87   uint16_t is_contested;
88 };
89
90 GNUNET_NETWORK_STRUCT_END
91
92 #endif