diff --git a/waku/protocol/v2/standard_setup.nim b/waku/protocol/v2/standard_setup.nim new file mode 100644 index 000000000..10007015e --- /dev/null +++ b/waku/protocol/v2/standard_setup.nim @@ -0,0 +1,50 @@ +# compile time options here +const + libp2p_secure {.strdefine.} = "" + +import + options, tables, + libp2p/[switch, peer, peerinfo, connection, multiaddress, crypto/crypto], + libp2p/transports/[transport, tcptransport], + libp2p/muxers/[muxer, mplex/mplex, mplex/types], + libp2p/protocols/[identify, secure/secure], + libp2p/protocols/pubsub/[pubsub, gossipsub, floodsub] + +when libp2p_secure == "noise": + import libp2p/protocols/secure/noise +else: + import libp2p/protocols/secure/secio + +export + switch, peer, peerinfo, connection, multiaddress, crypto + +proc newStandardSwitch*(privKey = none(PrivateKey), + address = MultiAddress.init("/ip4/127.0.0.1/tcp/0"), + triggerSelf = false, + gossip = false): Switch = + proc createMplex(conn: Connection): Muxer = + result = newMplex(conn) + + let + seckey = privKey.get(otherwise = PrivateKey.random(ECDSA)) + peerInfo = PeerInfo.init(seckey, [address]) + mplexProvider = newMuxerProvider(createMplex, MplexCodec) + transports = @[Transport(newTransport(TcpTransport))] + muxers = {MplexCodec: mplexProvider}.toTable + identify = newIdentify(peerInfo) + when libp2p_secure == "noise": + let secureManagers = {NoiseCodec: newNoise(seckey).Secure}.toTable + else: + let secureManagers = {SecioCodec: newSecio(seckey).Secure}.toTable + let pubSub = if gossip: + PubSub newPubSub(GossipSub, peerInfo, triggerSelf) + else: + # Creating switch from generate node + PubSub newPubSub(FloodSub, peerInfo, triggerSelf) + + result = newSwitch(peerInfo, + transports, + identify, + muxers, + secureManagers = secureManagers, + pubSub = some(pubSub)) diff --git a/waku/protocol/v2/utils.nim b/waku/protocol/v2/utils.nim new file mode 100644 index 000000000..1ce52a08f --- /dev/null +++ b/waku/protocol/v2/utils.nim @@ -0,0 +1,15 @@ +import chronos +import standard_setup +export standard_setup + +proc generateNodes*(num: Natural, gossip: bool = false): seq[Switch] = + for i in 0..