/*
This file is part of GNUnet
- Copyright (C) 2013, 2014 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2013, 2014 GNUnet e.V.
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
* When are elements sent to the client, and which elements are sent?
*/
enum GNUNET_SET_ResultMode result_mode;
+
+ /**
+ * Always use delta operation instead of sending full sets,
+ * even it it's less efficient.
+ */
+ int force_delta;
+
+ /**
+ * Always send full sets, even if delta operations would
+ * be more efficient.
+ */
+ int force_full;
+
+ /**
+ * #GNUNET_YES to fail operations where Byzantine faults
+ * are suspected
+ */
+ int byzantine;
+
+ /**
+ * Lower bound for the set size, used only when
+ * byzantine mode is enabled.
+ */
+ int byzantine_lower_bound;
};
* Signature of functions that create the implementation-specific
* state for a set supporting a specific operation.
*
- * @return a set state specific to the supported operation
+ * @return a set state specific to the supported operation, NULL on error
*/
typedef struct SetState *
(*CreateImpl) (void);
const struct GNUNET_MessageHeader *opaque_context);
-/**
- * Signature of functions that implement the message handling for
- * the different set operations.
- *
- * @param op operation state
- * @param msg received message
- * @return #GNUNET_OK on success, #GNUNET_SYSERR to
- * destroy the operation and the tunnel
- */
-typedef int
-(*MsgHandlerImpl) (struct Operation *op,
- const struct GNUNET_MessageHeader *msg);
-
-
/**
* Signature of functions that implement operation cancellation
*
*/
DestroySetImpl destroy_set;
- /**
- * Callback for handling operation-specific messages.
- */
- MsgHandlerImpl msg_handler;
-
/**
* Callback for handling the remote peer's disconnect.
*/
*/
struct MutationEvent *mutations;
+ /**
+ * Number of elements in the array @a mutations.
+ */
unsigned int mutations_size;
/**
};
+struct Listener;
+
+
/**
* Operation context used to execute a set operation.
*/
*/
struct GNUNET_CADET_Channel *channel;
+ /**
+ * Port this operation runs on.
+ */
+ struct Listener *listener;
+
/**
* Message queue for the channel.
*/
*/
struct GNUNET_SCHEDULER_Task *timeout_task;
+ /**
+ * The type of the operation.
+ */
+ enum GNUNET_SET_OperationType operation;
+
/**
* Unique request id for the request from a remote peer, sent to the
* client, which will accept or reject the request. Set to '0' iff
/**
* Message that describes the desired mutation.
- * May only be a GNUNET_MESSAGE_TYPE_SET_ADD or
- * GNUNET_MESSAGE_TYPE_SET_REMOVE.
+ * May only be a #GNUNET_MESSAGE_TYPE_SET_ADD or
+ * #GNUNET_MESSAGE_TYPE_SET_REMOVE.
*/
struct GNUNET_MessageHeader *mutation_message;
};
* Client that owns the set. Only one client may own a set,
* and there can only be one set per client.
*/
- struct GNUNET_SERVER_Client *client;
+ struct GNUNET_SERVICE_Client *client;
/**
* Message queue for the client.
*/
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.
};
+extern struct GNUNET_STATISTICS_Handle *_GSS_statistics;
+
+
/**
* Destroy the given operation. Call the implementation-specific
* cancel function of the operation. Disconnects from the remote