mirror of
https://github.com/akvorado/akvorado.git
synced 2025-12-11 22:14:02 +01:00
23 lines
546 B
Go
23 lines
546 B
Go
package daemon
|
|
|
|
import (
|
|
"sync"
|
|
)
|
|
|
|
// lifecycleComponent is the lifecycle part of a component.
|
|
type lifecycleComponent struct {
|
|
terminateChannel chan struct{}
|
|
terminateOnce sync.Once
|
|
}
|
|
|
|
// Terminated will return a channel that will be closed when the daemon
|
|
// needs to terminate.
|
|
func (c *lifecycleComponent) Terminated() <-chan struct{} {
|
|
return c.terminateChannel
|
|
}
|
|
|
|
// Terminate should be called to request termination of a daemon.
|
|
func (c *lifecycleComponent) Terminate() {
|
|
c.terminateOnce.Do(func() { close(c.terminateChannel) })
|
|
}
|