aboutsummaryrefslogtreecommitdiffhomepage
path: root/hst/fsdaemon.go
diff options
context:
space:
mode:
Diffstat (limited to 'hst/fsdaemon.go')
-rw-r--r--hst/fsdaemon.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/hst/fsdaemon.go b/hst/fsdaemon.go
new file mode 100644
index 00000000..fd3f3758
--- /dev/null
+++ b/hst/fsdaemon.go
@@ -0,0 +1,48 @@
+package hst
+
+import (
+ "encoding/gob"
+
+ "hakurei.app/container/check"
+)
+
+func init() { gob.Register(new(FSDaemon)) }
+
+// FilesystemDaemon is the type string of a daemon.
+const FilesystemDaemon = "daemon"
+
+// FSDaemon represents a daemon to be started in the container.
+type FSDaemon struct {
+ // Pathname indicating readiness of daemon.
+ Target *check.Absolute `json:"dst"`
+ // Absolute pathname to daemon executable file.
+ Exec *check.Absolute `json:"path"`
+ // Arguments (excl. first) passed to daemon.
+ Args []string `json:"args"`
+}
+
+func (d *FSDaemon) Valid() bool { return d != nil && d.Target != nil && d.Exec != nil }
+
+func (d *FSDaemon) Path() *check.Absolute {
+ if !d.Valid() {
+ return nil
+ }
+ return d.Target
+}
+
+func (d *FSDaemon) Host() []*check.Absolute { return nil }
+
+func (d *FSDaemon) Apply(z *ApplyState) {
+ if !d.Valid() {
+ return
+ }
+ z.Daemon(d.Target, d.Exec, d.Args...)
+}
+
+func (d *FSDaemon) String() string {
+ if !d.Valid() {
+ return "<invalid>"
+ }
+
+ return "daemon:" + d.Target.String()
+}