summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Teich <markus.teich@stusta.mhn.de>2016-12-02 11:45:05 +0100
committerMarkus Teich <markus.teich@stusta.mhn.de>2016-12-02 11:45:05 +0100
commit0ba8f80bc1ac4ac88b007626eea493e7560ea4cb (patch)
tree28584a800c9c1c47e169b2e868be4ce1867a1bc4
parent1bf5fbff777ff31cc75f3042be79f0150c018592 (diff)
unify msg delivery callback
-rw-r--r--brandt.c16
-rw-r--r--brandt.h50
-rw-r--r--internals.h8
3 files changed, 30 insertions, 44 deletions
diff --git a/brandt.c b/brandt.c
index 50ccb67..06aff3d 100644
--- a/brandt.c
+++ b/brandt.c
@@ -185,7 +185,7 @@ seller_start (void *arg)
struct BRANDT_Auction *
BRANDT_new (BRANDT_CbResult result,
- BRANDT_CbBroadcast broadcast,
+ BRANDT_CbDeliver broadcast,
BRANDT_CbStart start,
void *auction_closure,
void **auction_desc,
@@ -283,13 +283,13 @@ BRANDT_parse_desc (const void *auction_desc,
struct BRANDT_Auction *
-BRANDT_join (BRANDT_CbResult result,
- BRANDT_CbBroadcast broadcast,
- BRANDT_CbUnicast unicast,
- void *auction_closure,
- const void *auction_desc,
- size_t auction_desc_len,
- uint16_t bid)
+BRANDT_join (BRANDT_CbResult result,
+ BRANDT_CbDeliver broadcast,
+ BRANDT_CbDeliver unicast,
+ void *auction_closure,
+ const void *auction_desc,
+ size_t auction_desc_len,
+ uint16_t bid)
{
struct BRANDT_Auction *ret = GNUNET_new (struct BRANDT_Auction);
diff --git a/brandt.h b/brandt.h
index 3029031..f441f00 100644
--- a/brandt.h
+++ b/brandt.h
@@ -68,36 +68,22 @@ typedef uint16_t
/**
- * Functions of this type are called by libbrandt to broadcast messages to the
- * blackboard of a specific auction. They have to be sent using authenticated
- * encryption.
+ * Functions of this type are called by libbrandt to deliver messages to other
+ * participants of an auction. There are two variants how this Callback needs to
+ * be implemented. The first is delivering messages as unicast directly to the
+ * seller, the second is delivering messages as broadcast to all participants
+ * (bidders + seller). All messages need to be authenticated and encrypted
+ * before sending and the signature needs to be checked immediately after
+ * receipt.
*
* @param[in] auction_closure Closure pointer representing the respective
- * auction. This is the Pointer given to BRANDT_join().
- * @param[in] msg The message to be broadcast to all participants of
- * @a auction_closure.
- * @param[in] msg_len The length of the message @a msg in bytes.
- * @return 0 on success, -1 on failure.
- */
-typedef int
-(*BRANDT_CbBroadcast)(void *auction_closure,
- const void *msg,
- size_t msg_len);
-
-
-/**
- * Functions of this type are called by libbrandt to unicast messages to the
- * seller of a specific auction. They have to be sent using authenticated
- * encryption.
- *
- * @param[in] auction_closure Closure pointer representing the respective
- * auction. This is the Pointer given to BRANDT_join().
- * @param[in] msg The message to be sent to the seller of @a auction_closure.
+ * auction. This is the Pointer given to BRANDT_join() / BRANDT_new().
+ * @param[in] msg The message to be delivered
* @param[in] msg_len The length of the message @a msg in bytes.
* @return 0 on success, -1 on failure.
*/
typedef int
-(*BRANDT_CbUnicast)(void *auction_closure,
+(*BRANDT_CbDeliver)(void *auction_closure,
const void *msg,
size_t msg_len);
@@ -166,13 +152,13 @@ BRANDT_parse_desc (const void *auction_desc,
* black-box pointer, do NOT dereference/change it or the data it points to!
*/
struct BRANDT_Auction *
-BRANDT_join (BRANDT_CbResult result,
- BRANDT_CbBroadcast broadcast,
- BRANDT_CbUnicast unicast,
- void *auction_closure,
- const void *auction_desc,
- size_t auction_desc_len,
- uint16_t bid);
+BRANDT_join (BRANDT_CbResult result,
+ BRANDT_CbDeliver broadcast,
+ BRANDT_CbDeliver unicast,
+ void *auction_closure,
+ const void *auction_desc,
+ size_t auction_desc_len,
+ uint16_t bid);
/* \todo: have cancellation (BRANDT_join_cancel()) */
@@ -208,7 +194,7 @@ BRANDT_join (BRANDT_CbResult result,
*/
struct BRANDT_Auction *
BRANDT_new (BRANDT_CbResult result,
- BRANDT_CbBroadcast broadcast,
+ BRANDT_CbDeliver broadcast,
BRANDT_CbStart start,
void *auction_closure,
void **auction_desc,
diff --git a/internals.h b/internals.h
index d6de9db..8a82e2e 100644
--- a/internals.h
+++ b/internals.h
@@ -110,10 +110,10 @@ struct BRANDT_Auction {
void *closure; /** auction closure given by the user */
- BRANDT_CbResult result; /** result reporting callback */
- BRANDT_CbBroadcast bcast; /** broadcast callback */
- BRANDT_CbUnicast ucast; /** unicast callback */
- BRANDT_CbStart start; /** start callback */
+ BRANDT_CbResult result; /** result reporting callback */
+ BRANDT_CbDeliver bcast; /** broadcast callback */
+ BRANDT_CbDeliver ucast; /** unicast callback */
+ BRANDT_CbStart start; /** start callback */
int seller_mode; /** If 0 we are bidding, selling otherwise */
enum rounds cur_round; /** The round we expect messages from */