syndicate-nim/src/syndicate/protocols/service.nim

59 lines
1.5 KiB
Nim

import
preserves
type
StateKind* {.pure.} = enum
`started`, `ready`, `failed`, `complete`, `userDefined`
StateUserDefined* = Value
`State`* {.preservesOr.} = object
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`:
`userdefined`*: StateUserDefined
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))