diff options
Diffstat (limited to 'hst/fsdaemon.go')
| -rw-r--r-- | hst/fsdaemon.go | 48 |
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() +} |
