Documentation ¶
Overview ¶
Package proc implements a simple framework for initializing and cleanly shutting down components.
Index ¶
- Variables
- type Proc
- func (p *Proc) Close(fn func() error) error
- func (p *Proc) ClosedCh() <-chan struct{}
- func (p *Proc) IsClosed() bool
- func (p *Proc) PrefixedClose(prefixFn, fn func() error) error
- func (p *Proc) Run(fn func(ctx context.Context))
- func (p *Proc) WithLock(fn func() error) error
- func (p *Proc) WithRLock(fn func() error) error
Constants ¶
This section is empty.
Variables ¶
var ErrClosed = errors.New("closed")
ErrClosed indicates that an operation could not be completed because the component has been closed.
Functions ¶
This section is empty.
Types ¶
type Proc ¶
type Proc struct {
// contains filtered or unexported fields
}
Proc implements a lightweight pattern for setting up and tearing down components cleanly and consistently.
func (*Proc) Close ¶
Close marks this Proc as having been closed (all methods will return ErrClosed after this), waits for all go-routines spawned with Run to return, and then calls the given callback. If Close is called multiple times it will return ErrClosed the subsequent times without taking any other action.
func (*Proc) ClosedCh ¶
func (p *Proc) ClosedCh() <-chan struct{}
ClosedCh returns a channel which will be closed when the Proc is closed.
func (*Proc) PrefixedClose ¶
PrefixedClose is like Close but it will additionally perform a callback prior to marking the Proc as closed.
func (*Proc) Run ¶
Run spawns a new go-routine which will run with the given callback. The callback's context will be closed when Close is called on Proc, and the go-routine must return for Close to return.