switch to deque

This commit is contained in:
Tanguy 2023-03-14 15:41:17 +01:00
parent 20ea5b5a40
commit 129e54a70b
No known key found for this signature in database
GPG Key ID: 7DD8EC6B6CE6C45E
3 changed files with 9 additions and 10 deletions

View File

@ -12,7 +12,7 @@ when (NimMajor, NimMinor) < (1, 4):
else: else:
{.push raises: [].} {.push raises: [].}
import std/[tables, sequtils, sets, algorithm] import std/[tables, sequtils, sets, algorithm, deques]
import chronos, chronicles, metrics import chronos, chronicles, metrics
import "."/[types, scoring] import "."/[types, scoring]
import ".."/[pubsubpeer, peertable, timedcache, mcache, floodsub, pubsub] import ".."/[pubsubpeer, peertable, timedcache, mcache, floodsub, pubsub]
@ -625,10 +625,9 @@ proc onHeartbeat(g: GossipSub) {.raises: [Defect].} =
# reset IHAVE cap # reset IHAVE cap
block: block:
for peer in g.peers.values: for peer in g.peers.values:
if peer.sentIHaves.len >= g.parameters.historyLength: peer.sentIHaves.addFirst(default(HashSet[MessageId]))
peer.sentIHaves = default(HashSet[MessageId]) & peer.sentIHaves[0..^2] if peer.sentIHaves.len > g.parameters.historyLength:
else: discard peer.sentIHaves.popLast()
peer.sentIHaves.insert(default(HashSet[MessageId]), 0)
peer.iHaveBudget = IHavePeerBudget peer.iHaveBudget = IHavePeerBudget
var meshMetrics = MeshMetrics() var meshMetrics = MeshMetrics()

View File

@ -12,7 +12,7 @@ when (NimMajor, NimMinor) < (1, 4):
else: else:
{.push raises: [].} {.push raises: [].}
import std/[sequtils, strutils, tables, hashes, options, sets] import std/[sequtils, strutils, tables, hashes, options, sets, deques]
import stew/results import stew/results
import chronos, chronicles, nimcrypto/sha2, metrics import chronos, chronicles, nimcrypto/sha2, metrics
import rpc/[messages, message, protobuf], import rpc/[messages, message, protobuf],
@ -62,7 +62,7 @@ type
observers*: ref seq[PubSubObserver] # ref as in smart_ptr observers*: ref seq[PubSubObserver] # ref as in smart_ptr
score*: float64 score*: float64
sentIHaves*: seq[HashSet[MessageId]] sentIHaves*: Deque[HashSet[MessageId]]
iHaveBudget*: int iHaveBudget*: int
maxMessageSize: int maxMessageSize: int
appScore*: float64 # application specific score appScore*: float64 # application specific score
@ -301,12 +301,12 @@ proc new*(
codec: string, codec: string,
maxMessageSize: int): T = maxMessageSize: int): T =
T( result = T(
getConn: getConn, getConn: getConn,
onEvent: onEvent, onEvent: onEvent,
codec: codec, codec: codec,
peerId: peerId, peerId: peerId,
sentIHaves: newSeq[HashSet[MessageId]](1),
connectedFut: newFuture[void](), connectedFut: newFuture[void](),
maxMessageSize: maxMessageSize maxMessageSize: maxMessageSize
) )
result.sentIHaves.addFirst(default(HashSet[MessageId]))

View File

@ -2,7 +2,7 @@ include ../../libp2p/protocols/pubsub/gossipsub
{.used.} {.used.}
import options import std/[options, deques]
import stew/byteutils import stew/byteutils
import ../../libp2p/builders import ../../libp2p/builders
import ../../libp2p/errors import ../../libp2p/errors