diff options
| author | Markus Teich <markus.teich@stusta.mhn.de> | 2016-08-17 23:53:49 +0200 | 
|---|---|---|
| committer | Markus Teich <markus.teich@stusta.mhn.de> | 2016-08-17 23:53:49 +0200 | 
| commit | 25321ed0f5fa06f7c25d9e571c27c8dbeb5ffb96 (patch) | |
| tree | c9ba7f1466ba4fd1a5185452b1b606f7cb52f00c | |
| parent | 8daaa565bd5cfa5806296ef25efc2f5ee41af5bf (diff) | |
get auctions rolling
| -rw-r--r-- | brandt.c | 17 | ||||
| -rw-r--r-- | brandt.h | 22 | ||||
| -rw-r--r-- | internals.h | 7 | 
3 files changed, 39 insertions, 7 deletions
| @@ -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; +	}  } @@ -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 { | 
