提交 59a32b1d 作者: Brian Tiger Chow 提交者: Jeromy

refactor(bitswap) group the deferreds

License: MIT
Signed-off-by: 's avatarBrian Tiger Chow <brian@perfmode.com>
上级 0ce6071f
......@@ -92,11 +92,14 @@ func (bs *bitswap) GetBlock(parent context.Context, k u.Key) (*blocks.Block, err
// functions. This is difficult to enforce. May this comment keep you safe.
ctx, cancelFunc := context.WithCancel(parent)
defer cancelFunc()
ctx = eventlog.ContextWithMetadata(ctx, eventlog.Uuid("GetBlockRequest"))
log.Event(ctx, "GetBlockRequestBegin", &k)
defer log.Event(ctx, "GetBlockRequestEnd", &k)
defer func() {
cancelFunc()
log.Event(ctx, "GetBlockRequestEnd", &k)
}()
promise, err := bs.GetBlocks(parent, []u.Key{k})
if err != nil {
......@@ -109,6 +112,7 @@ func (bs *bitswap) GetBlock(parent context.Context, k u.Key) (*blocks.Block, err
case <-parent.Done():
return nil, parent.Err()
}
}
// GetBlocks returns a channel where the caller may receive blocks that
......@@ -172,13 +176,15 @@ func (bs *bitswap) sendWantListTo(ctx context.Context, peers <-chan peer.Peer) e
func (bs *bitswap) loop(parent context.Context) {
ctx, cancel := context.WithCancel(parent)
defer cancel() // signal termination
// Every so often, we should resend out our current want list
rebroadcastTime := time.Second * 5
broadcastSignal := time.NewTicker(bs.strategy.GetRebroadcastDelay())
defer broadcastSignal.Stop()
defer func() {
cancel() // signal to derived async functions
broadcastSignal.Stop()
}()
for {
select {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论