45 lines
1.1 KiB
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))
|