handle exception and remove unnecessary async

This commit is contained in:
Diego 2024-01-16 13:33:42 +01:00
parent f682bb9171
commit abe8c2489e
No known key found for this signature in database
GPG Key ID: C9DAC9BF68D1F806
2 changed files with 14 additions and 8 deletions

View File

@ -335,8 +335,8 @@ proc canAskIWant*(p: PubSubPeer, msgId: MessageId): bool =
return true
return false
proc getMessage(rpcMessageQueue: RpcMessageQueue, p: PubSubPeer): Future[Opt[seq[byte]]] {.async.} =
var m = await rpcMessageQueue.getPriorityMessage()
proc getMessage(rpcMessageQueue: RpcMessageQueue, p: PubSubPeer): Opt[seq[byte]] =
var m = rpcMessageQueue.getPriorityMessage()
if m.isSome():
when defined(libp2p_expensive_metrics):
libp2p_gossipsub_priority_queue_size.dec(labelValues = [$p.peerId])
@ -344,7 +344,7 @@ proc getMessage(rpcMessageQueue: RpcMessageQueue, p: PubSubPeer): Future[Opt[seq
libp2p_gossipsub_priority_queue_size.dec(labelValues = [p.getAgent()])
return m
else:
m = await rpcMessageQueue.getNonPriorityMessage()
m = rpcMessageQueue.getNonPriorityMessage()
if m.isSome():
when defined(libp2p_expensive_metrics):
libp2p_gossipsub_non_priority_queue_size.dec(labelValues = [$p.peerId])
@ -356,7 +356,7 @@ proc getMessage(rpcMessageQueue: RpcMessageQueue, p: PubSubPeer): Future[Opt[seq
proc processMessages(p: PubSubPeer, queue: RpcMessageQueue) {.async.} =
while true:
let m = await queue.getMessage(p)
let m = queue.getMessage(p)
m.withValue(msg):
if p.sendConn == nil:
# Wait for a send conn to be setup. `connectOnce` will

View File

@ -29,16 +29,22 @@ proc new*(T: typedesc[RpcMessageQueue]): T =
nonPriorityQueue: newAsyncQueue[seq[byte]]()
)
proc getPriorityMessage*(rpcMessageQueue: RpcMessageQueue): Future[Opt[seq[byte]]] {.async.} =
proc getPriorityMessage*(rpcMessageQueue: RpcMessageQueue): Opt[seq[byte]] =
return
if not rpcMessageQueue.priorityQueue.empty():
Opt.some(rpcMessageQueue.priorityQueue.getNoWait())
try:
Opt.some(rpcMessageQueue.priorityQueue.getNoWait())
except AsyncQueueEmptyError:
Opt.none(seq[byte])
else:
Opt.none(seq[byte])
proc getNonPriorityMessage*(rpcMessageQueue: RpcMessageQueue): Future[Opt[seq[byte]]] {.async.} =
proc getNonPriorityMessage*(rpcMessageQueue: RpcMessageQueue): Opt[seq[byte]] =
return
if not rpcMessageQueue.nonPriorityQueue.empty():
Opt.some(rpcMessageQueue.nonPriorityQueue.getNoWait())
try:
Opt.some(rpcMessageQueue.nonPriorityQueue.getNoWait())
except AsyncQueueEmptyError:
Opt.none(seq[byte])
else:
Opt.none(seq[byte])