mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-06-04 05:00:02 +00:00
use applyItIf in reliable_channel
This commit is contained in:
parent
ec6a02db7c
commit
41a43174be
@ -144,21 +144,21 @@ proc onMessageSent(self: ReliableChannel, messagingReqId: RequestId) =
|
||||
## the matching `InFlight` segment to `Confirmed` and prunes. The
|
||||
## listener routes every event through here; entries that don't
|
||||
## belong to this channel simply don't match and are no-ops.
|
||||
for i in 0 ..< self.pendingMessagingRequests.len:
|
||||
if self.pendingMessagingRequests[i].segmentSendState == SegmentSendState.InFlight and
|
||||
self.pendingMessagingRequests[i].messagingReqId == some(messagingReqId):
|
||||
self.pendingMessagingRequests[i].segmentSendState = SegmentSendState.Confirmed
|
||||
self.pruneCompletedChannelReqs()
|
||||
return
|
||||
self.pendingMessagingRequests.applyItIf(
|
||||
it.segmentSendState == SegmentSendState.InFlight and
|
||||
it.messagingReqId == some(messagingReqId)
|
||||
):
|
||||
it.segmentSendState = SegmentSendState.Confirmed
|
||||
self.pruneCompletedChannelReqs()
|
||||
|
||||
proc onMessageError(self: ReliableChannel, messagingReqId: RequestId) =
|
||||
## Symmetric to `onMessageSent` but for `MessageErrorEvent`.
|
||||
for i in 0 ..< self.pendingMessagingRequests.len:
|
||||
if self.pendingMessagingRequests[i].segmentSendState == SegmentSendState.InFlight and
|
||||
self.pendingMessagingRequests[i].messagingReqId == some(messagingReqId):
|
||||
self.pendingMessagingRequests[i].segmentSendState = SegmentSendState.Failed
|
||||
self.pruneCompletedChannelReqs()
|
||||
return
|
||||
self.pendingMessagingRequests.applyItIf(
|
||||
it.segmentSendState == SegmentSendState.InFlight and
|
||||
it.messagingReqId == some(messagingReqId)
|
||||
):
|
||||
it.segmentSendState = SegmentSendState.Failed
|
||||
self.pruneCompletedChannelReqs()
|
||||
|
||||
proc onReadyToSend(
|
||||
self: ReliableChannel, msgs: seq[seq[byte]]
|
||||
|
||||
@ -26,7 +26,7 @@ logScope:
|
||||
# This useful util is missing from sequtils, this extends applyIt with predicate...
|
||||
template applyItIf*(varSeq, pred, op: untyped) =
|
||||
for i in low(varSeq) .. high(varSeq):
|
||||
let it {.inject.} = varSeq[i]
|
||||
var it {.inject.} = varSeq[i]
|
||||
if pred:
|
||||
op
|
||||
varSeq[i] = it
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user