From 9af9ee6255b2f0e90bf02bb198f23cefcf11cd51 Mon Sep 17 00:00:00 2001 From: Brian Tiger Chow Date: Wed, 19 Nov 2014 09:40:21 -0800 Subject: [PATCH] misc(bitswap) renaming License: MIT Signed-off-by: Brian Tiger Chow --- exchange/bitswap/bitswap.go | 39 +++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/exchange/bitswap/bitswap.go b/exchange/bitswap/bitswap.go index 1102dda75..e904d28a6 100644 --- a/exchange/bitswap/bitswap.go +++ b/exchange/bitswap/bitswap.go @@ -153,14 +153,14 @@ func (bs *bitswap) sendWantListTo(ctx context.Context, peers <-chan peer.Peer) e func (bs *bitswap) run(ctx context.Context) { + const batchDelay = time.Millisecond * 3 // Time to wait before sending out wantlists to better batch up requests + const numKeysPerBatch = 10 + const maxProvidersPerRequest = 6 const rebroadcastPeriod = time.Second * 5 // Every so often, we should resend out our current want list - const batchDelay = time.Millisecond * 3 // Time to wait before sending out wantlists to better batch up requests - const peersPerSend = 6 - const threshold = 10 - var sendlist <-chan peer.Peer // NB: must be initialized to zero value + var providers <-chan peer.Peer // NB: must be initialized to zero value broadcastSignal := time.After(rebroadcastPeriod) - unsent := 0 + unsentKeys := 0 for { select { @@ -169,32 +169,33 @@ func (bs *bitswap) run(ctx context.Context) { if len(wantlist) == 0 { continue } - if sendlist == nil { + if providers == nil { // rely on semi randomness of maps firstKey := wantlist[0] - sendlist = bs.routing.FindProvidersAsync(ctx, firstKey, 6) + providers = bs.routing.FindProvidersAsync(ctx, firstKey, 6) } - err := bs.sendWantListTo(ctx, sendlist) + err := bs.sendWantListTo(ctx, providers) if err != nil { log.Errorf("error sending wantlist: %s", err) } - sendlist = nil + providers = nil broadcastSignal = time.After(rebroadcastPeriod) - case k := <-bs.blockRequests: - if unsent == 0 { - sendlist = bs.routing.FindProvidersAsync(ctx, k, peersPerSend) - } - unsent++ - if unsent >= threshold { - // send wantlist to sendlist - err := bs.sendWantListTo(ctx, sendlist) + case k := <-bs.blockRequests: + if unsentKeys == 0 { + providers = bs.routing.FindProvidersAsync(ctx, k, maxProvidersPerRequest) + } + unsentKeys++ + + if unsentKeys >= numKeysPerBatch { + // send wantlist to providers + err := bs.sendWantListTo(ctx, providers) if err != nil { log.Errorf("error sending wantlist: %s", err) } - unsent = 0 + unsentKeys = 0 broadcastSignal = time.After(rebroadcastPeriod) - sendlist = nil + providers = nil } else { // set a timeout to wait for more blocks or send current wantlist