ooni-probe-cli/cmd/ooniprobe/internal/autorun/autorun.go

50 lines
1.0 KiB
Go
Raw Normal View History

// Package autorun contains code to manage automatic runs
package autorun
import "sync"
const (
// StatusScheduled indicates that OONI is scheduled to run
// periodically in the background.
StatusScheduled = "scheduled"
// StatusStopped indicates that OONI is not scheduled to
// run periodically in the background.
StatusStopped = "stopped"
// StatusRunning indicates that OONI is currently
// running in the background.
StatusRunning = "running"
)
// Manager manages automatic runs
type Manager interface {
LogShow() error
LogStream() error
Start() error
Status() (string, error)
Stop() error
}
var (
registry map[string]Manager
mtx sync.Mutex
)
func register(platform string, manager Manager) {
defer mtx.Unlock()
mtx.Lock()
if registry == nil {
registry = make(map[string]Manager)
}
registry[platform] = manager
}
// Get gets the specified autorun manager. This function
// returns nil if no autorun manager exists.
func Get(platform string) Manager {
defer mtx.Unlock()
mtx.Lock()
return registry[platform]
}