func newNAT(realNAT nat.NAT) *NAT { return &NAT{ nat: realNAT, proc: goprocess.WithParent(goprocess.Background()), mappings: make(map[*mapping]struct{}), } }
func NewWorker(e exchange.Interface, c Config) *Worker { if c.NumWorkers < 1 { c.NumWorkers = 1 // provide a sane default } w := &Worker{ exchange: e, added: make(chan *blocks.Block, c.ClientBufferSize), process: process.WithParent(process.Background()), // internal management } w.start(c) return w }
func newNatManager(host *BasicHost) *natManager { nmgr := &natManager{ host: host, ready: make(chan struct{}), proc: goprocess.WithParent(host.proc), } // teardown nmgr.proc = goprocess.WithTeardown(func() error { // on closing, unregister from network notifications. host.Network().StopNotify((*nmgrNetNotifiee)(nmgr)) return nil }) // host is our parent. close when host closes. host.proc.AddChild(nmgr.proc) // discover the nat. nmgr.discoverNAT() return nmgr }
func NewRateLimiter(parent process.Process, limit int) *RateLimiter { proc := process.WithParent(parent) return &RateLimiter{Process: proc, limiter: LimitChan(limit)} }
// WithContext constructs and returns a Process that respects // given context. It is the equivalent of: // // func ProcessWithContext(ctx context.Context) goprocess.Process { // p := goprocess.WithParent(goprocess.Background()) // CloseAfterContext(p, ctx) // return p // } // func WithContext(ctx context.Context) goprocess.Process { p := goprocess.WithParent(goprocess.Background()) CloseAfterContext(p, ctx) return p }