36 lines
899 B
Nim
Raw Normal View History

2025-02-05 16:06:04 +01:00
import pkg/stew/byteutils
import pkg/stew/endians2
import pkg/questionable
import pkg/questionable/results
2025-02-07 14:51:03 +01:00
import pkg/codexdht
2025-02-07 16:19:26 +01:00
import pkg/chronos
import pkg/libp2p
2025-02-05 16:06:04 +01:00
type NodeEntry* = object
2025-02-07 14:51:03 +01:00
id*: NodeId
2025-02-07 16:19:26 +01:00
lastVisit*: uint64
2025-02-05 16:06:04 +01:00
proc `$`*(entry: NodeEntry): string =
2025-02-07 16:19:26 +01:00
$entry.id & ":" & $entry.lastVisit
proc toBytes*(entry: NodeEntry): seq[byte] =
var buffer = initProtoBuffer()
buffer.write(1, $entry.id)
buffer.write(2, entry.lastVisit)
buffer.finish()
return buffer.buffer
proc fromBytes*(_: type NodeEntry, data: openArray[byte]): ?!NodeEntry =
var
buffer = initProtoBuffer(data)
idStr: string
lastVisit: uint64
if buffer.getField(1, idStr).isErr:
return failure("Unable to decode `idStr`")
if buffer.getField(2, lastVisit).isErr:
return failure("Unable to decode `lastVisit`")
return success(NodeEntry(id: UInt256.fromHex(idStr), lastVisit: lastVisit))