Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Leased ¶ added in v1.0.5
type Leased struct {
Plug
// contains filtered or unexported fields
}
leased uses a Leaser to control Start and Stop on a Plug
func NewLeased ¶ added in v1.0.5
func NewLeased(leaser Leaser) *Leased
NewLeased creates a Plug that starts when a lease is acquired and stops when it is lost.
type Leaser ¶ added in v1.0.5
type Leaser interface {
// AcquireAndHold tries to acquire the lease and hold it until it expires, the lease is deleted,
// or we observe another party take the lease. The notify channel will be sent a value
// when the lease is held, and closed when the lease is lost.
AcquireAndHold(chan struct{})
Release()
}
Leaser controls access to a lease
type Plug ¶
type Plug interface {
// Begins operation of the plug and unblocks WaitForStart().
// May be invoked multiple times but only the first invocation has
// an effect.
Start()
// Ends operation of the plug and unblocks WaitForStop()
// May be invoked multiple times but only the first invocation has
// an effect. Calling Stop() before Start() is undefined.
Stop()
// Blocks until Start() is invoked
WaitForStart()
// Blocks until Stop() is invoked
WaitForStop()
// Returns true if Start() has been invoked
IsStarted() bool
}
Plug represents a synchronization primitive that holds and releases execution for other objects.
Click to show internal directories.
Click to hide internal directories.