2021-10-06 09:30:38 +00:00
|
|
|
|
|
|
|
import
|
2023-05-18 10:20:44 +00:00
|
|
|
preserves
|
2021-10-06 09:30:38 +00:00
|
|
|
|
|
|
|
type
|
2022-03-07 23:53:05 +00:00
|
|
|
StateKind* {.pure.} = enum
|
|
|
|
`started`, `ready`, `failed`, `complete`, `userDefined`
|
2023-12-31 17:15:06 +00:00
|
|
|
`State`* {.preservesOr.} = object
|
2022-03-07 23:53:05 +00:00
|
|
|
case orKind*: StateKind
|
|
|
|
of StateKind.`started`:
|
|
|
|
`started`* {.preservesLiteral: "started".}: bool
|
|
|
|
|
|
|
|
of StateKind.`ready`:
|
|
|
|
`ready`* {.preservesLiteral: "ready".}: bool
|
|
|
|
|
|
|
|
of StateKind.`failed`:
|
|
|
|
`failed`* {.preservesLiteral: "failed".}: bool
|
|
|
|
|
|
|
|
of StateKind.`complete`:
|
|
|
|
`complete`* {.preservesLiteral: "complete".}: bool
|
|
|
|
|
|
|
|
of StateKind.`userDefined`:
|
2024-01-07 22:11:59 +00:00
|
|
|
`userdefined`*: Value
|
2022-03-07 23:53:05 +00:00
|
|
|
|
|
|
|
|
2023-12-31 17:15:06 +00:00
|
|
|
ServiceObject* {.preservesRecord: "service-object".} = object
|
|
|
|
`serviceName`*: Value
|
|
|
|
`object`*: Value
|
|
|
|
|
|
|
|
RequireService* {.preservesRecord: "require-service".} = object
|
|
|
|
`serviceName`*: Value
|
|
|
|
|
|
|
|
RestartService* {.preservesRecord: "restart-service".} = object
|
|
|
|
`serviceName`*: Value
|
|
|
|
|
|
|
|
RunService* {.preservesRecord: "run-service".} = object
|
|
|
|
`serviceName`*: Value
|
|
|
|
|
|
|
|
ServiceState* {.preservesRecord: "service-state".} = object
|
|
|
|
`serviceName`*: Value
|
|
|
|
`state`*: State
|
|
|
|
|
|
|
|
ServiceDependency* {.preservesRecord: "depends-on".} = object
|
|
|
|
`depender`*: Value
|
|
|
|
`dependee`*: ServiceState
|
|
|
|
|
|
|
|
proc `$`*(x: State | ServiceObject | RequireService | RestartService |
|
|
|
|
RunService |
|
|
|
|
ServiceState |
|
|
|
|
ServiceDependency): string =
|
|
|
|
`$`(toPreserves(x))
|
|
|
|
|
|
|
|
proc encode*(x: State | ServiceObject | RequireService | RestartService |
|
|
|
|
RunService |
|
|
|
|
ServiceState |
|
|
|
|
ServiceDependency): seq[byte] =
|
|
|
|
encode(toPreserves(x))
|