mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-01-04 06:53:12 +00:00
47 lines
1.3 KiB
Nim
47 lines
1.3 KiB
Nim
import std/[options, strformat]
|
|
import ./health_status
|
|
|
|
type ProtocolHealth* = object
|
|
protocol*: string
|
|
health*: HealthStatus
|
|
desc*: Option[string] ## describes why a certain protocol is considered `NOT_READY`
|
|
|
|
proc notReady*(p: var ProtocolHealth, desc: string): ProtocolHealth =
|
|
p.health = HealthStatus.NOT_READY
|
|
p.desc = some(desc)
|
|
return p
|
|
|
|
proc ready*(p: var ProtocolHealth): ProtocolHealth =
|
|
p.health = HealthStatus.READY
|
|
p.desc = none[string]()
|
|
return p
|
|
|
|
proc notMounted*(p: var ProtocolHealth): ProtocolHealth =
|
|
p.health = HealthStatus.NOT_MOUNTED
|
|
p.desc = none[string]()
|
|
return p
|
|
|
|
proc synchronizing*(p: var ProtocolHealth): ProtocolHealth =
|
|
p.health = HealthStatus.SYNCHRONIZING
|
|
p.desc = none[string]()
|
|
return p
|
|
|
|
proc initializing*(p: var ProtocolHealth): ProtocolHealth =
|
|
p.health = HealthStatus.INITIALIZING
|
|
p.desc = none[string]()
|
|
return p
|
|
|
|
proc shuttingDown*(p: var ProtocolHealth): ProtocolHealth =
|
|
p.health = HealthStatus.SHUTTING_DOWN
|
|
p.desc = none[string]()
|
|
return p
|
|
|
|
proc `$`*(p: ProtocolHealth): string =
|
|
return fmt"protocol: {p.protocol}, health: {p.health}, description: {p.desc}"
|
|
|
|
proc init*(p: typedesc[ProtocolHealth], protocol: string): ProtocolHealth =
|
|
let p = ProtocolHealth(
|
|
protocol: protocol, health: HealthStatus.NOT_MOUNTED, desc: none[string]()
|
|
)
|
|
return p
|