- cleanup dead code
[oweals/gnunet.git] / src / psyc / psyc.h
1 /*
2  * This file is part of GNUnet
3  * (C) 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 /**
22  * @file psyc/psyc.h
23  * @brief Common type definitions for the PSYC service and API.
24  * @author Gabor X Toth
25  */
26
27 #ifndef PSYC_H
28 #define PSYC_H
29
30 #include "gnunet_common.h"
31
32 GNUNET_NETWORK_STRUCT_BEGIN
33
34 /**** service -> library ****/
35
36 /**
37  * Answer from service to client about last operation.
38  */
39 struct OperationResult
40 {
41   /**
42    * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_CODE
43    */
44   struct GNUNET_MessageHeader header;
45
46   /**
47    * Operation ID.
48    */
49   uint32_t op_id GNUNET_PACKED;
50
51   /**
52    * Status code for the operation.
53    */
54   int64_t result_code GNUNET_PACKED;
55
56   /* followed by 0-terminated error message (on error) */
57
58 };
59
60
61 struct CountersResult
62 {
63   /**
64    * Type: GNUNET_MESSAGE_TYPE_PSYC_RESULT_COUNTERS
65    */
66   struct GNUNET_MessageHeader header;
67
68   uint64_t max_message_id;
69 };
70
71
72 /**
73  * Transmit acknowledgment.
74  *
75  * Sent after the last GNUNET_PSYC_MessageModifier and after each
76  * GNUNET_PSYC_MessageData.
77  *
78  * This message acknowledges previously received messages and asks for the next
79  * fragment of data.
80  */
81 struct TransmitAck
82 {
83   /**
84    * Type: GNUNET_MESSAGE_TYPE_PSYC_TRANSMIT_ACK
85    */
86   struct GNUNET_MessageHeader header;
87
88   /**
89    * Buffer space available for the next data fragment.
90    */
91   uint16_t buf_avail;
92 };
93
94
95 /**** library -> service ****/
96
97
98 struct MasterStartRequest
99 {
100   /**
101    * Type: GNUNET_MESSAGE_TYPE_PSYC_MASTER_START
102    */
103   struct GNUNET_MessageHeader header;
104
105   struct GNUNET_CRYPTO_EccPrivateKey channel_key;
106
107   uint32_t policy GNUNET_PACKED;
108 };
109
110
111 struct SlaveJoinRequest
112 {
113   /**
114    * Type: GNUNET_MESSAGE_TYPE_PSYC_SLAVE_JOIN
115    */
116   struct GNUNET_MessageHeader header;
117
118   uint32_t relay_count GNUNET_PACKED;
119
120   struct GNUNET_CRYPTO_EccPublicSignKey channel_key;
121
122   struct GNUNET_CRYPTO_EccPrivateKey slave_key;
123
124   /* Followed by struct GNUNET_PeerIdentity relays[relay_count] */
125 };
126
127
128 struct ChannelSlaveAdd
129 {
130   /**
131    * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_SLAVE_ADD
132    */
133   struct GNUNET_MessageHeader header;
134
135   uint32_t reserved;
136
137   struct GNUNET_CRYPTO_EccPublicSignKey *slave_key;
138
139   uint64_t announced_at;
140
141   uint64_t effective_since;
142 };
143
144
145 struct ChannelSlaveRemove
146 {
147   /**
148    * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_SLAVE_RM
149    */
150   struct GNUNET_MessageHeader header;
151
152   uint32_t reserved;
153
154   struct GNUNET_CRYPTO_EccPublicSignKey *slave_key;
155
156   uint64_t announced_at;
157 };
158
159
160 struct StoryRequest
161 {
162   /**
163    * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STORY_REQUEST
164    */
165   struct GNUNET_MessageHeader header;
166
167   uint64_t op_id;
168
169   uint64_t start_message_id;
170
171   uint64_t end_message_id;
172 };
173
174
175 struct StateQuery
176 {
177   /**
178    * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STATE_QUERY
179    */
180   struct GNUNET_MessageHeader header;
181
182   uint64_t op_id;
183
184   /* Followed by NUL-terminated name. */
185 };
186
187
188 struct StateResult
189 {
190   /**
191    * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STATE_RESULT
192    */
193   struct GNUNET_MessageHeader header;
194
195   /**
196    * Size of name, including NUL terminator.
197    */
198   uint16_t name_size GNUNET_PACKED;
199
200   /**
201    * OR'd StateOpFlags
202    */
203   uint8_t flags;
204
205   /* Followed by NUL-terminated name, then the value. */
206 };
207
208
209 GNUNET_NETWORK_STRUCT_END
210
211 #endif