+
+/**
+ * Set element transmitted by service to client in response to a set
+ * iteration request.
+ */
+struct GNUNET_SET_IterResponseMessage
+{
+ /**
+ * Type: #GNUNET_MESSAGE_TYPE_SET_ITER_ELEMENT
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * To which set iteration does this reponse belong to? First
+ * iteration (per client) has counter zero. Wraps around.
+ */
+ uint16_t iteration_id GNUNET_PACKED;
+
+ /**
+ * Type of the element attachted to the message,
+ * if any.
+ */
+ uint16_t element_type GNUNET_PACKED;
+
+ /* rest: element */
+};
+
+
+/**
+ * Client acknowledges receiving element in iteration.
+ */
+struct GNUNET_SET_IterAckMessage
+{
+ /**
+ * Type: #GNUNET_MESSAGE_TYPE_SET_ITER_ACK
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Non-zero if the service should continue sending elements.
+ */
+ uint32_t send_more;
+};
+
+
+/**
+ * Server responds to a lazy copy request.
+ */
+struct GNUNET_SET_CopyLazyResponseMessage
+{
+ /**
+ * Type: #GNUNET_MESSAGE_TYPE_SET_COPY_LAZY_RESPONSE
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Temporary name for the copied set.
+ */
+ uint32_t cookie;
+};
+
+
+/**
+ * Client connects to a lazily copied set.
+ */
+struct GNUNET_SET_CopyLazyConnectMessage
+{
+ /**
+ * Type: #GNUNET_MESSAGE_TYPE_SET_COPY_LAZY_CONNECT
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Temporary name for the copied set.
+ */
+ uint32_t cookie;
+};
+
+