50 lines
1.0 KiB
Go
50 lines
1.0 KiB
Go
// 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]
|
|
}
|