Commit 686220bf authored by Brian Tiger Chow's avatar Brian Tiger Chow

extract context func

@jbenet

would like it to work this way
parent 4332ac4c
......@@ -117,14 +117,7 @@ func (w *Worker) start(c Config) {
// reads from |workerChan| until process closes
w.process.Go(func(proc process.Process) {
ctx, cancel := context.WithCancel(context.Background())
// shuts down an in-progress HasBlock operation
proc.Go(func(proc process.Process) {
<-proc.Closing()
cancel()
})
ctx := childContext(proc) // shut down in-progress HasBlock when time to die
limiter := ratelimit.NewRateLimiter(proc, c.NumWorkers)
for {
select {
......@@ -169,3 +162,18 @@ func (s *BlockList) Pop() *blocks.Block {
func (s *BlockList) Len() int {
return s.list.Len()
}
// TODO extract
type waitable interface {
Closing() <-chan struct{}
}
// TODO extract
func childContext(w waitable) context.Context {
ctx, cancel := context.WithCancel(context.Background())
go func() {
<-w.Closing()
cancel()
}()
return ctx
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment