- The Go Programming Language (original) (raw)

Source file blog/context/tomb/tomb.go

 1  // +build OMIT
 2  
 3  // Package tomb provides a Context implementation that is canceled when either
 4  // its parent Context is canceled or a provided Tomb is killed.
 5  package tomb
 6  
 7  import (
 8  	"golang.org/x/net/context"
 9  	tomb "gopkg.in/tomb.v2"
10  )
11  
12  // NewContext returns a Context that is canceled either when parent is canceled
13  // or when t is Killed.
14  func NewContext(parent context.Context, t *tomb.Tomb) context.Context {
15  	ctx, cancel := context.WithCancel(parent)
16  	go func() {
17  		select {
18  		case <-t.Dying():
19  			cancel()
20  		case <-ctx.Done():
21  		}
22  	}()
23  	return ctx
24  }
25  

View as plain text