From e4c97316430e208c81d24d1359cfc4c67671c859 Mon Sep 17 00:00:00 2001 From: Brian Tiger Chow Date: Fri, 21 Nov 2014 17:53:53 -0800 Subject: [PATCH] chore(util) remove forward License: MIT Signed-off-by: Brian Tiger Chow --- util/async/forward.go | 34 ---------------------- util/async/forward_test.go | 58 -------------------------------------- 2 files changed, 92 deletions(-) delete mode 100644 util/async/forward.go delete mode 100644 util/async/forward_test.go diff --git a/util/async/forward.go b/util/async/forward.go deleted file mode 100644 index 1e6e044a3..000000000 --- a/util/async/forward.go +++ /dev/null @@ -1,34 +0,0 @@ -package async - -import ( - context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context" - "github.com/jbenet/go-ipfs/blocks" - u "github.com/jbenet/go-ipfs/util" -) - -var log = u.Logger("async") - -// ForwardN forwards up to |num| blocks to the returned channel. -func ForwardN(ctx context.Context, in <-chan *blocks.Block, num int) <-chan *blocks.Block { - out := make(chan *blocks.Block) - go func() { - defer close(out) - for i := 0; i < num; i++ { - select { - case block, ok := <-in: - if !ok { - log.Error("Forwarder exiting early!") - return // otherwise nil value is forwarded to output - } - select { - case out <- block: - case <-ctx.Done(): - return - } - case <-ctx.Done(): - return - } - } - }() - return out -} diff --git a/util/async/forward_test.go b/util/async/forward_test.go deleted file mode 100644 index 3933e4c58..000000000 --- a/util/async/forward_test.go +++ /dev/null @@ -1,58 +0,0 @@ -package async - -import ( - "testing" - - context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context" - "github.com/jbenet/go-ipfs/blocks" -) - -func TestForwardNThenClose(t *testing.T) { - const n = 2 - const buf = 2 * n - in := make(chan *blocks.Block, buf) - ctx := context.Background() - out := ForwardN(ctx, in, n) - - for i := 0; i < buf; i++ { - in <- blocks.NewBlock([]byte("")) - } - - for i := 0; i < n; i++ { - _ = <-out - } - - _, ok := <-out // closed - if !ok { - return - } - t.Fatal("channel still open after receiving n blocks") -} - -func TestCloseInput(t *testing.T) { - const n = 2 - in := make(chan *blocks.Block, 0) - ctx := context.Background() - out := ForwardN(ctx, in, n) - - close(in) - _, ok := <-out // closed - if !ok { - return - } - t.Fatal("input channel closed, but output channel not") - -} - -func TestContextClosedWhenBlockingOnInput(t *testing.T) { - const n = 1 // but we won't ever send a block - ctx, cancel := context.WithCancel(context.Background()) - out := ForwardN(ctx, make(chan *blocks.Block), n) - - cancel() // before sending anything - _, ok := <-out - if !ok { - return - } - t.Fail() -}