github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/util/do.go (about) 1 package util 2 3 import "github.com/ipfs/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context" 4 5 func ContextDo(ctx context.Context, f func() error) error { 6 7 ch := make(chan error) 8 9 go func() { 10 select { 11 case <-ctx.Done(): 12 case ch <- f(): 13 } 14 }() 15 select { 16 case <-ctx.Done(): 17 return ctx.Err() 18 case val := <-ch: 19 return val 20 } 21 return nil 22 }