2 * This file is part of GNUnet
3 * (C) 2013 Christian Grothoff (and other contributing authors)
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.
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.
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.
23 * @brief Common type definitions for the PSYC service and API.
24 * @author Gabor X Toth
30 #include "gnunet_common.h"
38 MSG_STATE_MODIFIER = 3,
39 MSG_STATE_MOD_CONT = 4,
46 GNUNET_NETWORK_STRUCT_BEGIN
48 /**** service -> library ****/
51 * Answer from service to client about last operation.
53 struct OperationResult
56 * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_CODE
58 struct GNUNET_MessageHeader header;
63 uint32_t op_id GNUNET_PACKED;
66 * Status code for the operation.
68 int64_t result_code GNUNET_PACKED;
70 /* followed by NUL-terminated error message (on error) */
77 * Type: GNUNET_MESSAGE_TYPE_PSYC_RESULT_COUNTERS
79 struct GNUNET_MessageHeader header;
82 * Status code for the operation.
84 int32_t result_code GNUNET_PACKED;
86 uint64_t max_message_id;
92 * Transmit acknowledgment.
94 * Sent after the last GNUNET_PSYC_MessageModifier and after each
95 * GNUNET_PSYC_MessageData.
97 * This message acknowledges previously received messages and asks for the next
103 * Type: GNUNET_MESSAGE_TYPE_PSYC_TRANSMIT_ACK
105 struct GNUNET_MessageHeader header;
108 * Buffer space available for the next data fragment.
115 /**** library -> service ****/
118 struct MasterStartRequest
121 * Type: GNUNET_MESSAGE_TYPE_PSYC_MASTER_START
123 struct GNUNET_MessageHeader header;
125 struct GNUNET_CRYPTO_EddsaPrivateKey channel_key;
127 uint32_t policy GNUNET_PACKED;
131 struct SlaveJoinRequest
134 * Type: GNUNET_MESSAGE_TYPE_PSYC_SLAVE_JOIN
136 struct GNUNET_MessageHeader header;
138 uint32_t relay_count GNUNET_PACKED;
140 struct GNUNET_CRYPTO_EddsaPublicKey channel_key;
142 struct GNUNET_CRYPTO_EddsaPrivateKey slave_key;
144 struct GNUNET_PeerIdentity origin;
146 /* Followed by struct GNUNET_PeerIdentity relays[relay_count] */
150 struct ChannelSlaveAdd
153 * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_SLAVE_ADD
155 struct GNUNET_MessageHeader header;
159 struct GNUNET_CRYPTO_EddsaPublicKey *slave_key;
161 uint64_t announced_at;
163 uint64_t effective_since;
167 struct ChannelSlaveRemove
170 * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_SLAVE_RM
172 struct GNUNET_MessageHeader header;
176 struct GNUNET_CRYPTO_EddsaPublicKey *slave_key;
178 uint64_t announced_at;
185 * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STORY_REQUEST
187 struct GNUNET_MessageHeader header;
191 uint64_t start_message_id;
193 uint64_t end_message_id;
200 * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STATE_QUERY
202 struct GNUNET_MessageHeader header;
206 /* Followed by NUL-terminated name. */
213 * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STATE_RESULT
215 struct GNUNET_MessageHeader header;
218 * Size of name, including NUL terminator.
220 uint16_t name_size GNUNET_PACKED;
227 /* Followed by NUL-terminated name, then the value. */
231 GNUNET_NETWORK_STRUCT_END