aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/state/state.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/state/state.go')
-rw-r--r--internal/state/state.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/internal/state/state.go b/internal/state/state.go
new file mode 100644
index 00000000..61aae2cf
--- /dev/null
+++ b/internal/state/state.go
@@ -0,0 +1,40 @@
+package state
+
+import (
+ "time"
+)
+
+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 Enablements
+
+ // resolved launcher path
+ Launcher string
+ // full argv whe launching
+ Argv []string
+ // process start time
+ Time time.Time
+}