summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--brandt.c17
-rw-r--r--brandt.h22
-rw-r--r--internals.h7
3 files changed, 39 insertions, 7 deletions
diff --git a/brandt.c b/brandt.c
index e90ec2f..edfca62 100644
--- a/brandt.c
+++ b/brandt.c
@@ -50,12 +50,25 @@ BRANDT_init (struct GNUNET_CRYPTO_EccDlogContext *dlogctx)
}
+BRANDT_start (struct BRANDT_Auction *auction,
+ uint16_t n){
+ GNUNET_assert (n > 0);
+ auction->n = n;
+ /** \todo: send first message */
+}
+
+
static void
start_auction (void *arg)
{
-// struct BRANDT_Auction *ad = (struct BRANDT_Auction *)arg;
+ struct BRANDT_Auction *ad = (struct BRANDT_Auction *)arg;
- /* \todo: broadcast start message to all participants */
+ if (0 == (ad->n = ad->start (ad->closure)))
+ {
+ weprintf ("no bidders registered for auction");
+ ad->result (ad->closure, -1, result_no_bidders, 0);
+ return;
+ }
}
diff --git a/brandt.h b/brandt.h
index 1903301..385d67b 100644
--- a/brandt.h
+++ b/brandt.h
@@ -92,15 +92,16 @@ typedef int
* auction. This is the Pointer given to BRANDT_join() / BRANDT_new().
* @param[in] bidder_id The numeric Id of the bidder this report refers to.
* @param[in] status 1 if the user @a bidder_id has won the auction, 0 if he has
- * lost, -1 if erroneous behaviour was detected.
+ * lost, negative if erroneous behaviour was detected. Check the result_code
+ * enum for more information.
* @param[in] price The price, the winner has to pay or 0 if the auction result
* is private and the user did not win.
*/
typedef void
-(*BRANDT_CbResult)(void *auction_closure,
- unsigned int bidder_id,
- int status,
- uint16_t price);
+(*BRANDT_CbResult)(void *auction_closure,
+ int32_t bidder_id,
+ int status,
+ uint16_t price);
void
@@ -214,6 +215,17 @@ BRANDT_new (BRANDT_CbResult result,
/**
+ * This function must be called when bidding after receipt of the start
+ * notification.
+ *
+ * @param[in] auction The pointer returned by BRANDT_join().
+ * @param[in] n The amount of bidders (from the start announcement message).
+ void
+ BRANDT_start (struct BRANDT_Auction *auction,
+ uint16_t n);
+
+
+ /**
* Clean up this auction on shutdown.
*
* @param[in] auction The pointer returned by BRANDT_join() or BRANDT_new().
diff --git a/internals.h b/internals.h
index a1c939a..c478f4f 100644
--- a/internals.h
+++ b/internals.h
@@ -51,6 +51,13 @@ enum outcome_type {
};
+enum result_code {
+ result_loser = 0,
+ result_winner = 1,
+ result_no_bidders = -2
+};
+
+
GNUNET_NETWORK_STRUCT_BEGIN
struct msg_head {