diff --git a/examples/poc_gossipsub.nim b/examples/poc_gossipsub.nim index 84fe7dc..c339d90 100644 --- a/examples/poc_gossipsub.nim +++ b/examples/poc_gossipsub.nim @@ -9,6 +9,7 @@ import protocols/pubsub/pubsubpeer, protocols/pubsub/rpc/messages, ] +import ./poc_gossipsub_utils type Node = tuple[switch: Switch, gossip: GossipSub, mix: MixProtocol, id: int] diff --git a/examples/poc_gossipsub_repeated_runs.nim b/examples/poc_gossipsub_repeated_runs.nim index 2281d81..cb132cd 100644 --- a/examples/poc_gossipsub_repeated_runs.nim +++ b/examples/poc_gossipsub_repeated_runs.nim @@ -9,6 +9,7 @@ import protocols/pubsub/pubsubpeer, protocols/pubsub/rpc/messages, ] +import ./poc_gossipsub_utils type Node = tuple[switch: Switch, gossip: GossipSub, mix: MixProtocol, id: int] diff --git a/mix/entry_connection_callbacks.nim b/examples/poc_gossipsub_utils.nim similarity index 52% rename from mix/entry_connection_callbacks.nim rename to examples/poc_gossipsub_utils.nim index 1b10208..fbf3bc0 100644 --- a/mix/entry_connection_callbacks.nim +++ b/examples/poc_gossipsub_utils.nim @@ -1,20 +1,8 @@ -# TODO: this file should likely become mix.nim in the root of the project - -import chronos, chronicles, results import std/[sequtils, sets] -import libp2p/[multiaddress, protocols/pubsub/pubsubpeer, switch] -import ./[entry_connection, mix_protocol] +import libp2p/[protocols/pubsub/pubsubpeer, switch] const D* = 4 # No. of peers to forward to -proc toConnection*( - srcMix: MixProtocol, - destPeerId: PeerId, - destForwardToAddr: Opt[MultiAddress], - codec: string, -): Connection {.gcsafe, raises: [].} = - MixEntryConnection.new(srcMix, destPeerId, destForwardToAddr, codec) - proc mixPeerSelection*( allPeers: HashSet[PubSubPeer], directPeers: HashSet[PubSubPeer], diff --git a/mix.nim b/mix.nim index 4e99349..6736d3d 100644 --- a/mix.nim +++ b/mix.nim @@ -1,11 +1,9 @@ import results -import ./mix/[entry_connection_callbacks, mix_protocol, mix_node] +import ./mix/[mix_protocol, mix_node, entry_connection] export results -export D export toConnection -export mixPeerSelection export MixProtocolID export MixProtocol export initializeMixNodes diff --git a/mix/entry_connection.nim b/mix/entry_connection.nim index 7c41dea..067bb1c 100644 --- a/mix/entry_connection.nim +++ b/mix/entry_connection.nim @@ -1,4 +1,4 @@ -import hashes, chronos, stew/byteutils, results +import hashes, chronos, stew/byteutils, results, chronicles import libp2p/stream/connection import ./mix_protocol from fragmentation import dataSize @@ -138,3 +138,11 @@ proc new*( return T.new(srcMix, destPeerId, destForwardToAddr, codec, sendDialerFunc) + +proc toConnection*( + srcMix: MixProtocol, + destPeerId: PeerId, + destForwardToAddr: Opt[MultiAddress], + codec: string, +): Connection {.gcsafe, raises: [].} = + MixEntryConnection.new(srcMix, destPeerId, destForwardToAddr, codec) diff --git a/mix/utils.nim b/mix/utils.nim index e4c6986..ffc783b 100644 --- a/mix/utils.nim +++ b/mix/utils.nim @@ -2,7 +2,7 @@ import results, strutils import stew/base58 import ./config -const multiAddrLen = 39 +const peerIdByteLen = 39 proc bytesToUInt16*(data: openArray[byte]): Result[uint16, string] = if len(data) != 2: @@ -37,8 +37,8 @@ proc extractPeerId(parts: seq[string], index: int): Result[seq[byte], string] = return err("Peer ID must be exactly 53 characters") try: let peerIdBytes = Base58.decode(peerIdBase58) - if peerIdBytes.len != multiAddrLen: - return err("Peer ID must be exactly " & $multiAddrLen & " bytes") + if peerIdBytes.len != peerIdByteLen: + return err("Peer ID must be exactly " & $peerIdByteLen & " bytes") return ok(peerIdBytes) except Base58Error: return err("Invalid Peer ID") @@ -135,9 +135,9 @@ proc bytesToMultiAddr*(bytes: openArray[byte]): Result[string, string] = let peerId1 = "/p2p/" & Base58.encode(bytes[7 ..< 46]) - let peerId2Bytes = bytes[7 + multiAddrLen ..< 7 + (multiAddrLen * 2)] + let peerId2Bytes = bytes[7 + peerIdByteLen ..< 7 + (peerIdByteLen * 2)] let peerId2 = - if peerId2Bytes != newSeq[byte](multiAddrLen): + if peerId2Bytes != newSeq[byte](peerIdByteLen): "/p2p-circuit/p2p/" & Base58.encode(peerId2Bytes) else: ""