mirror of
https://github.com/codex-storage/nim-codex-dht.git
synced 2025-02-09 18:43:43 +00:00
moving encode and decode to the same level
This commit is contained in:
parent
043f195e19
commit
6dcdaf6173
@ -24,11 +24,8 @@ proc addProviderLocal(p: ProvidersProtocol, cId: NodeId, prov: PeerRecord) =
|
|||||||
trace "adding provider to local db", n=p.discovery.localNode, cId, prov
|
trace "adding provider to local db", n=p.discovery.localNode, cId, prov
|
||||||
p.providers.mgetOrPut(cId, @[]).add(prov)
|
p.providers.mgetOrPut(cId, @[]).add(prov)
|
||||||
|
|
||||||
proc recvAddProvider(p: ProvidersProtocol, nodeId: NodeId, payload: openArray[byte])
|
proc recvAddProvider(p: ProvidersProtocol, nodeId: NodeId, msg: AddProviderMessage)
|
||||||
{.raises: [Defect].} =
|
{.raises: [Defect].} =
|
||||||
#TODO: add checks, add signed version
|
|
||||||
let msg = AddProviderMessage.decode(payload).get()
|
|
||||||
trace "<<< add_provider ", src = nodeId, dst = p.discovery.localNode.id, cid = msg.cId, prov=msg.prov
|
|
||||||
p.addProviderLocal(msg.cId, msg.prov)
|
p.addProviderLocal(msg.cId, msg.prov)
|
||||||
#TODO: check that CID is reasonably close to our NodeID
|
#TODO: check that CID is reasonably close to our NodeID
|
||||||
|
|
||||||
@ -38,7 +35,12 @@ const
|
|||||||
proc registerAddProvider(p: ProvidersProtocol) =
|
proc registerAddProvider(p: ProvidersProtocol) =
|
||||||
proc handler(protocol: TalkProtocol, request: seq[byte], fromId: NodeId, fromUdpAddress: Address): seq[byte]
|
proc handler(protocol: TalkProtocol, request: seq[byte], fromId: NodeId, fromUdpAddress: Address): seq[byte]
|
||||||
{.gcsafe, raises: [Defect].} =
|
{.gcsafe, raises: [Defect].} =
|
||||||
recvAddProvider(p, fromId, request)
|
trace "<<< add_provider ", src = nodeId, dst = p.discovery.localNode.id, cid = msg.cId, prov=msg.prov
|
||||||
|
#TODO: add checks, add signed version
|
||||||
|
let msg = AddProviderMessage.decode(request).get()
|
||||||
|
|
||||||
|
recvAddProvider(p, fromId, msg)
|
||||||
|
|
||||||
@[] # talk requires a response
|
@[] # talk requires a response
|
||||||
|
|
||||||
let protocol = TalkProtocol(protocolHandler: handler)
|
let protocol = TalkProtocol(protocolHandler: handler)
|
||||||
@ -122,25 +124,25 @@ proc getProviders*(
|
|||||||
#
|
#
|
||||||
trace "getProviders collected: ", result
|
trace "getProviders collected: ", result
|
||||||
|
|
||||||
proc recvGetProviders(p: ProvidersProtocol, nodeId: NodeId, payload: openArray[byte]) : ProvidersMessage
|
proc recvGetProviders(p: ProvidersProtocol, nodeId: NodeId, msg: GetProvidersMessage) : ProvidersMessage
|
||||||
{.raises: [Defect].} =
|
{.raises: [Defect].} =
|
||||||
trace "recvGetProviders"
|
|
||||||
let msg = GetProvidersMessage.decode(payload).get()
|
|
||||||
trace "<<< get_providers ", src = nodeId, dst = p.discovery.localNode.id, cid = msg.cId
|
|
||||||
#TODO: add checks, add signed version
|
#TODO: add checks, add signed version
|
||||||
let provs = p.providers.getOrDefault(msg.cId)
|
let provs = p.providers.getOrDefault(msg.cId)
|
||||||
|
|
||||||
trace "providers:", provs
|
trace "providers:", provs
|
||||||
|
|
||||||
##TODO: handle multiple messages
|
##TODO: handle multiple messages
|
||||||
ProvidersMessage(total: 1, provs: provs)
|
ProvidersMessage(total: 1, provs: provs)
|
||||||
|
|
||||||
|
|
||||||
proc registerGetProviders(p: ProvidersProtocol) =
|
proc registerGetProviders(p: ProvidersProtocol) =
|
||||||
proc handler(protocol: TalkProtocol, request: seq[byte], fromId: NodeId, fromUdpAddress: Address): seq[byte]
|
proc handler(protocol: TalkProtocol, request: seq[byte], fromId: NodeId, fromUdpAddress: Address): seq[byte]
|
||||||
{.gcsafe, raises: [Defect].} =
|
{.gcsafe, raises: [Defect].} =
|
||||||
let returnMsg = recvGetProviders(p, fromId, request)
|
trace "<<< get_providers ", src = nodeId, dst = p.discovery.localNode.id, cid = msg.cId
|
||||||
|
let msg = GetProvidersMessage.decode(request).get()
|
||||||
|
|
||||||
|
let returnMsg = recvGetProviders(p, fromId, msg)
|
||||||
trace "returnMsg", returnMsg
|
trace "returnMsg", returnMsg
|
||||||
returnMsg.encode() # TODO: response
|
|
||||||
|
returnMsg.encode()
|
||||||
|
|
||||||
let protocol = TalkProtocol(protocolHandler: handler)
|
let protocol = TalkProtocol(protocolHandler: handler)
|
||||||
discard p.discovery.registerTalkProtocol(protoIdGetProviders, protocol) #TODO: handle error
|
discard p.discovery.registerTalkProtocol(protoIdGetProviders, protocol) #TODO: handle error
|
||||||
|
Loading…
x
Reference in New Issue
Block a user