syndicate_actor_tox/src/protocol.nim

96 lines
2.4 KiB
Nim

import
std/typetraits, preserves
type
ToxFriendSend* {.preservesRecord: "ToxFriendSend".} = object
`num`*: int
`message`*: string
ToxCoreVersion* {.preservesRecord: "ToxCoreVersion".} = object
`major`*: int
`minor`*: int
`patch`*: int
ToxFriendLastOnline* {.preservesRecord: "ToxFriendLastNnline".} = object
`num`*: int
`unixEpoch`*: float64
ToxSelfConnectionStatus* {.preservesRecord: "ToxSelfConnectionStatus".} = object
`status`*: Symbol
ToxSelfStatus* {.preservesRecord: "ToxSelfStatus".} = object
`status`*: Status
BootstrapNode* {.preservesRecord: "bootstrap".} = object
`publicKey`*: string
`host`*: string
`port`*: int
ToxSelfStatusMessage* {.preservesRecord: "ToxSelfStatusMessage".} = object
`message`*: string
`Status`* {.preservesOr, pure.} = enum
`online`, `away`, `busy`
ToxSelfName* {.preservesRecord: "ToxSelfName".} = object
`name`*: string
ToxFriendKey* {.preservesRecord: "ToxFriendkey".} = object
`num`*: int
`key`*: seq[byte]
ListenOn*[E] {.preservesRecord: "listen-on".} = ref object
`dataspace`*: Preserve[E]
ToxSelfAddress* {.preservesRecord: "ToxSelfAddress".} = object
`address`*: seq[byte]
ToxFriendAdd* {.preservesRecord: "ToxFriendAdd".} = object
`address`*: seq[byte]
`message`*: string
ToxFriendStatusMessage* {.preservesRecord: "ToxFriendStatusMessage".} = object
`num`*: int
`message`*: string
ToxFriendName* {.preservesRecord: "ToxFriendName".} = object
`num`*: int
`name`*: string
ToxFriendTyping* {.preservesRecord: "ToxFriendTyping".} = object
`num`*: int
proc `$`*[E](x: ListenOn[E]): string =
`$`(toPreserve(x, E))
proc encode*[E](x: ListenOn[E]): seq[byte] =
encode(toPreserve(x, E))
proc `$`*(x: ToxFriendSend | ToxCoreVersion | ToxFriendLastOnline |
ToxSelfConnectionStatus |
ToxSelfStatus |
BootstrapNode |
ToxSelfStatusMessage |
ToxSelfName |
ToxFriendKey |
ToxSelfAddress |
ToxFriendAdd |
ToxFriendStatusMessage |
ToxFriendName |
ToxFriendTyping): string =
`$`(toPreserve(x))
proc encode*(x: ToxFriendSend | ToxCoreVersion | ToxFriendLastOnline |
ToxSelfConnectionStatus |
ToxSelfStatus |
BootstrapNode |
ToxSelfStatusMessage |
ToxSelfName |
ToxFriendKey |
ToxSelfAddress |
ToxFriendAdd |
ToxFriendStatusMessage |
ToxFriendName |
ToxFriendTyping): seq[byte] =
encode(toPreserve(x))