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"
32 GNUNET_NETWORK_STRUCT_BEGIN
34 /**** service -> library ****/
37 * Answer from service to client about last operation.
39 struct OperationResult
42 * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_CODE
44 struct GNUNET_MessageHeader header;
49 uint32_t op_id GNUNET_PACKED;
52 * Status code for the operation.
54 int64_t result_code GNUNET_PACKED;
56 /* followed by 0-terminated error message (on error) */
64 * Type: GNUNET_MESSAGE_TYPE_PSYC_RESULT_COUNTERS
66 struct GNUNET_MessageHeader header;
69 * Status code for the operation.
71 int32_t result_code GNUNET_PACKED;
73 uint64_t max_message_id;
78 * Transmit acknowledgment.
80 * Sent after the last GNUNET_PSYC_MessageModifier and after each
81 * GNUNET_PSYC_MessageData.
83 * This message acknowledges previously received messages and asks for the next
89 * Type: GNUNET_MESSAGE_TYPE_PSYC_TRANSMIT_ACK
91 struct GNUNET_MessageHeader header;
94 * Buffer space available for the next data fragment.
100 /**** library -> service ****/
103 struct MasterStartRequest
106 * Type: GNUNET_MESSAGE_TYPE_PSYC_MASTER_START
108 struct GNUNET_MessageHeader header;
110 struct GNUNET_CRYPTO_EddsaPrivateKey channel_key;
112 uint32_t policy GNUNET_PACKED;
116 struct SlaveJoinRequest
119 * Type: GNUNET_MESSAGE_TYPE_PSYC_SLAVE_JOIN
121 struct GNUNET_MessageHeader header;
123 uint32_t relay_count GNUNET_PACKED;
125 struct GNUNET_CRYPTO_EddsaPublicKey channel_key;
127 struct GNUNET_CRYPTO_EddsaPrivateKey slave_key;
129 struct GNUNET_PeerIdentity origin;
131 /* Followed by struct GNUNET_PeerIdentity relays[relay_count] */
135 struct ChannelSlaveAdd
138 * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_SLAVE_ADD
140 struct GNUNET_MessageHeader header;
144 struct GNUNET_CRYPTO_EddsaPublicKey *slave_key;
146 uint64_t announced_at;
148 uint64_t effective_since;
152 struct ChannelSlaveRemove
155 * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_SLAVE_RM
157 struct GNUNET_MessageHeader header;
161 struct GNUNET_CRYPTO_EddsaPublicKey *slave_key;
163 uint64_t announced_at;
170 * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STORY_REQUEST
172 struct GNUNET_MessageHeader header;
176 uint64_t start_message_id;
178 uint64_t end_message_id;
185 * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STATE_QUERY
187 struct GNUNET_MessageHeader header;
191 /* Followed by NUL-terminated name. */
198 * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STATE_RESULT
200 struct GNUNET_MessageHeader header;
203 * Size of name, including NUL terminator.
205 uint16_t name_size GNUNET_PACKED;
212 /* Followed by NUL-terminated name, then the value. */
216 GNUNET_NETWORK_STRUCT_END