syndicate_actor_tox/src/protocol.nim

45 lines
1.1 KiB
Nim

import
std/typetraits, preserves
type
Name* {.preservesRecord: "name".} = object
`name`*: string
FriendDataspace*[E] {.preservesRecord: "friend".} = ref object
`publicKey`*: seq[byte]
`entity`*: Preserve[E]
Address* {.preservesRecord: "address".} = object
`text`*: string
ToxDataspace*[E] {.preservesRecord: "tox".} = ref object
`publicKey`*: seq[byte]
`entity`*: Preserve[E]
BootstrapNode* {.preservesRecord: "bootstrap".} = object
`publicKey`*: string
`host`*: string
`port`*: int
StatusMessage* {.preservesRecord: "status-message".} = object
`msg`*: string
CoreVersion* {.preservesRecord: "core".} = object
`major`*: int
`minor`*: int
`patch`*: int
proc `$`*[E](x: FriendDataspace[E] | ToxDataspace[E]): string =
`$`(toPreserve(x, E))
proc encode*[E](x: FriendDataspace[E] | ToxDataspace[E]): seq[byte] =
encode(toPreserve(x, E))
proc `$`*(x: Name | Address | BootstrapNode | StatusMessage | CoreVersion): string =
`$`(toPreserve(x))
proc encode*(x: Name | Address | BootstrapNode | StatusMessage | CoreVersion): seq[
byte] =
encode(toPreserve(x))