*/
struct MutationEvent *mutations;
+ /**
+ * Number of elements in the array @a mutations.
+ */
unsigned int mutations_size;
/**
struct GNUNET_CONTAINER_MultiHashMap *elements;
unsigned int latest_generation;
+
+ /**
+ * Mutations requested by the client that we're
+ * unable to execute right now because we're iterating
+ * over the underlying hash map of elements.
+ */
+ struct PendingMutation *pending_mutations_head;
+
+ /**
+ * Mutations requested by the client that we're
+ * unable to execute right now because we're iterating
+ * over the underlying hash map of elements.
+ */
+ struct PendingMutation *pending_mutations_tail;
+
+ /**
+ * Number of concurrently active iterators.
+ */
+ int iterator_count;
};
};
+struct PendingMutation
+{
+ struct PendingMutation *prev;
+ struct PendingMutation *next;
+
+ struct Set *set;
+
+ /**
+ * Message that describes the desired mutation.
+ * May only be a GNUNET_MESSAGE_TYPE_SET_ADD or
+ * GNUNET_MESSAGE_TYPE_SET_REMOVE.
+ */
+ struct GNUNET_MessageHeader *mutation_message;
+};
+
+
/**
* A set that supports a specific operation with other peers.
*/
*/
struct GenerationRange *excluded_generations;
+ /**
+ * Number of elements in array @a excluded_generations.
+ */
unsigned int excluded_generations_size;
/**
*/
uint16_t iteration_id;
+ /**
+ * Generation we're currently iteration over.
+ */
+ unsigned int iter_generation;
+
/**
* Content, possibly shared by multiple sets,
* and thus reference counted.
*/
struct SetContent *content;
-
};