43 lines
970 B
Go
43 lines
970 B
Go
package state
|
|
|
|
import (
|
|
"time"
|
|
|
|
"git.ophivana.moe/cat/fortify/internal/system"
|
|
)
|
|
|
|
type Store interface {
|
|
// Do calls f exactly once and ensures store exclusivity until f returns.
|
|
// Returns whether f is called and any errors during the locking process.
|
|
// Backend provided to f becomes invalid as soon as f returns.
|
|
Do(f func(b Backend)) (bool, error)
|
|
|
|
// Close releases any resources held by Store.
|
|
Close() error
|
|
}
|
|
|
|
// Backend provides access to the store
|
|
type Backend interface {
|
|
Save(state *State) error
|
|
Destroy(pid int) error
|
|
Load() ([]*State, error)
|
|
Len() (int, error)
|
|
}
|
|
|
|
// State is the on-disk format for a fortified process's state information
|
|
type State struct {
|
|
// child process PID value
|
|
PID int
|
|
// command used to seal the app
|
|
Command []string
|
|
// capability enablements applied to child
|
|
Capability system.Enablements
|
|
|
|
// user switch method
|
|
Method string
|
|
// full argv whe launching
|
|
Argv []string
|
|
// process start time
|
|
Time time.Time
|
|
}
|