24 lines
435 B
Go
24 lines
435 B
Go
|
package ae
|
||
|
|
||
|
// Trigger implements a non-blocking event notifier. Events can be
|
||
|
// triggered without blocking and notifications happen only when the
|
||
|
// previous event was consumed.
|
||
|
type Trigger struct {
|
||
|
ch chan struct{}
|
||
|
}
|
||
|
|
||
|
func NewTrigger() *Trigger {
|
||
|
return &Trigger{make(chan struct{}, 1)}
|
||
|
}
|
||
|
|
||
|
func (t Trigger) Trigger() {
|
||
|
select {
|
||
|
case t.ch <- struct{}{}:
|
||
|
default:
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (t Trigger) Notif() <-chan struct{} {
|
||
|
return t.ch
|
||
|
}
|