* @author Gabor X Toth
*/
-#ifndef GNUNET_PSYC_H
-#define GNUNET_PSYC_H
+#ifndef PSYC_H
+#define PSYC_H
#include "gnunet_common.h"
GNUNET_NETWORK_STRUCT_BEGIN
+/**** service -> library ****/
+
+/**
+ * Answer from service to client about last operation.
+ */
+struct OperationResult
+{
+ /**
+ * Type: GNUNET_MESSAGE_TYPE_PSYCSTORE_RESULT_CODE
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Operation ID.
+ */
+ uint32_t op_id GNUNET_PACKED;
+
+ /**
+ * Status code for the operation.
+ */
+ int64_t result_code GNUNET_PACKED;
+
+ /* followed by 0-terminated error message (on error) */
+
+};
+
+
+struct CountersResult
+{
+ /**
+ * Type: GNUNET_MESSAGE_TYPE_PSYC_RESULT_COUNTERS
+ */
+ struct GNUNET_MessageHeader header;
+
+ uint64_t max_message_id;
+};
+
+
+/**
+ * Transmit acknowledgment.
+ *
+ * Sent after the last GNUNET_PSYC_MessageModifier and after each
+ * GNUNET_PSYC_MessageData.
+ *
+ * This message acknowledges previously received messages and asks for the next
+ * fragment of data.
+ */
+struct TransmitAck
+{
+ /**
+ * Type: GNUNET_MESSAGE_TYPE_PSYC_TRANSMIT_ACK
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Buffer space available for the next data fragment.
+ */
+ uint16_t buf_avail;
+};
+
+
+/**** library -> service ****/
+
+
+struct MasterStartRequest
+{
+ /**
+ * Type: GNUNET_MESSAGE_TYPE_PSYC_MASTER_START
+ */
+ struct GNUNET_MessageHeader header;
+
+ struct GNUNET_CRYPTO_EccPrivateKey channel_key;
+
+ uint32_t policy GNUNET_PACKED;
+};
+
+
+struct SlaveJoinRequest
+{
+ /**
+ * Type: GNUNET_MESSAGE_TYPE_PSYC_SLAVE_JOIN
+ */
+ struct GNUNET_MessageHeader header;
+
+ uint32_t relay_count GNUNET_PACKED;
+
+ struct GNUNET_CRYPTO_EccPublicSignKey channel_key;
+
+ struct GNUNET_CRYPTO_EccPrivateKey slave_key;
+
+ /* Followed by struct GNUNET_PeerIdentity relays[relay_count] */
+};
+
+
+struct ChannelSlaveAdd
+{
+ /**
+ * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_SLAVE_ADD
+ */
+ struct GNUNET_MessageHeader header;
+
+ uint32_t reserved;
+
+ struct GNUNET_CRYPTO_EccPublicSignKey *slave_key;
+
+ uint64_t announced_at;
+
+ uint64_t effective_since;
+};
+
+
+struct ChannelSlaveRemove
+{
+ /**
+ * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_SLAVE_RM
+ */
+ struct GNUNET_MessageHeader header;
+
+ uint32_t reserved;
+
+ struct GNUNET_CRYPTO_EccPublicSignKey *slave_key;
+
+ uint64_t announced_at;
+};
+
+
+struct StoryRequest
+{
+ /**
+ * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STORY_REQUEST
+ */
+ struct GNUNET_MessageHeader header;
+
+ uint64_t op_id;
+
+ uint64_t start_message_id;
+
+ uint64_t end_message_id;
+};
+
+
+struct StateQuery
+{
+ /**
+ * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STATE_QUERY
+ */
+ struct GNUNET_MessageHeader header;
+
+ uint64_t op_id;
+
+ /* Followed by NUL-terminated name. */
+};
+
+
+struct StateResult
+{
+ /**
+ * Type: GNUNET_MESSAGE_TYPE_PSYC_CHANNEL_STATE_RESULT
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Size of name, including NUL terminator.
+ */
+ uint16_t name_size GNUNET_PACKED;
+
+ /**
+ * OR'd StateOpFlags
+ */
+ uint8_t flags;
+
+ /* Followed by NUL-terminated name, then the value. */
+};
GNUNET_NETWORK_STRUCT_END