diff --git a/examples/tutorial_4_gossipsub.nim b/examples/tutorial_4_gossipsub.nim index 69caa709e1..957776e377 100644 --- a/examples/tutorial_4_gossipsub.nim +++ b/examples/tutorial_4_gossipsub.nim @@ -75,9 +75,7 @@ proc oneNode(node: Node, rng: ref HmacDrbgContext) {.async.} = # This procedure will handle one of the node of the network node.gossip.addValidator( ["metrics"], - proc( - topic: string, message: Message - ): Future[ValidationResult] {.async: (raises: []).} = + proc(topic: string, message: Message): Future[ValidationResult] {.async.} = let decoded = MetricList.decode(message.data) if decoded.isErr: return ValidationResult.Reject @@ -94,7 +92,7 @@ proc oneNode(node: Node, rng: ref HmacDrbgContext) {.async.} = if node.hostname == "John": node.gossip.subscribe( "metrics", - proc(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc(topic: string, data: seq[byte]) {.async.} = let m = MetricList.decode(data).expect("metric can be decoded") echo m , diff --git a/examples/tutorial_6_game.nim b/examples/tutorial_6_game.nim index 9260ab74c8..996494b266 100644 --- a/examples/tutorial_6_game.nim +++ b/examples/tutorial_6_game.nim @@ -194,7 +194,7 @@ proc networking(g: Game) {.async.} = gossip.subscribe( "/tron/matchmaking", - proc(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc(topic: string, data: seq[byte]) {.async.} = # If we are still looking for an opponent, # try to match anyone broadcasting its address if g.peerFound.finished or g.hasCandidate: diff --git a/libp2p/protocols/pubsub/pubsub.nim b/libp2p/protocols/pubsub/pubsub.nim index 868285f926..6a3b76c08c 100644 --- a/libp2p/protocols/pubsub/pubsub.nim +++ b/libp2p/protocols/pubsub/pubsub.nim @@ -128,11 +128,11 @@ type PeerMessageDecodeError* = object of CatchableError TopicHandler* {.public.} = - proc(topic: string, data: seq[byte]): Future[void] {.gcsafe, async: (raises: []).} + proc(topic: string, data: seq[byte]): Future[void] {.gcsafe, raises: [].} ValidatorHandler* {.public.} = proc( topic: string, message: Message - ): Future[ValidationResult] {.gcsafe, async: (raises: []).} + ): Future[ValidationResult] {.gcsafe, raises: [].} TopicPair* = tuple[topic: string, handler: TopicHandler] diff --git a/tests/commoninterop.nim b/tests/commoninterop.nim index eb3a1d9c9d..49059cde26 100644 --- a/tests/commoninterop.nim +++ b/tests/commoninterop.nim @@ -69,7 +69,7 @@ proc testPubSubDaemonPublish( var finished = false var times = 0 - proc nativeHandler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc nativeHandler(topic: string, data: seq[byte]) {.async.} = let smsg = string.fromBytes(data) check smsg == pubsubData times.inc() @@ -146,7 +146,7 @@ proc testPubSubNodePublish( result = true # don't cancel subscription discard await daemonNode.pubsubSubscribe(testTopic, pubsubHandler) - proc nativeHandler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc nativeHandler(topic: string, data: seq[byte]) {.async.} = discard pubsub.subscribe(testTopic, nativeHandler) diff --git a/tests/pubsub/testfloodsub.nim b/tests/pubsub/testfloodsub.nim index 215a9b4612..899c558f0b 100644 --- a/tests/pubsub/testfloodsub.nim +++ b/tests/pubsub/testfloodsub.nim @@ -45,7 +45,7 @@ suite "FloodSub": asyncTest "FloodSub basic publish/subscribe A -> B": var completionFut = newFuture[bool]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" completionFut.complete(true) @@ -77,7 +77,7 @@ suite "FloodSub": asyncTest "FloodSub basic publish/subscribe B -> A": var completionFut = newFuture[bool]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" completionFut.complete(true) @@ -102,7 +102,7 @@ suite "FloodSub": asyncTest "FloodSub validation should succeed": var handlerFut = newFuture[bool]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" handlerFut.complete(true) @@ -120,7 +120,7 @@ suite "FloodSub": var validatorFut = newFuture[bool]() proc validator( topic: string, message: Message - ): Future[ValidationResult] {.async: (raises: []).} = + ): Future[ValidationResult] {.async.} = check topic == "foobar" validatorFut.complete(true) result = ValidationResult.Accept @@ -135,7 +135,7 @@ suite "FloodSub": await allFuturesThrowing(nodesFut) asyncTest "FloodSub validation should fail": - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check false # if we get here, it should fail let @@ -151,7 +151,7 @@ suite "FloodSub": var validatorFut = newFuture[bool]() proc validator( topic: string, message: Message - ): Future[ValidationResult] {.async: (raises: []).} = + ): Future[ValidationResult] {.async.} = validatorFut.complete(true) result = ValidationResult.Reject @@ -165,7 +165,7 @@ suite "FloodSub": asyncTest "FloodSub validation one fails and one succeeds": var handlerFut = newFuture[bool]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foo" handlerFut.complete(true) @@ -183,7 +183,7 @@ suite "FloodSub": proc validator( topic: string, message: Message - ): Future[ValidationResult] {.async: (raises: []).} = + ): Future[ValidationResult] {.async.} = if topic == "foo": result = ValidationResult.Accept else: @@ -210,7 +210,7 @@ suite "FloodSub": futs[i] = ( fut, ( - proc(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" inc counter[] if counter[] == runs - 1: @@ -257,7 +257,7 @@ suite "FloodSub": futs[i] = ( fut, ( - proc(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" inc counter[] if counter[] == runs - 1: @@ -305,7 +305,7 @@ suite "FloodSub": asyncTest "FloodSub message size validation": var messageReceived = 0 - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check data.len < 50 inc(messageReceived) @@ -343,7 +343,7 @@ suite "FloodSub": asyncTest "FloodSub message size validation 2": var messageReceived = 0 - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = inc(messageReceived) let diff --git a/tests/pubsub/testgossipinternal.nim b/tests/pubsub/testgossipinternal.nim index b47a44be53..45d82cffe6 100644 --- a/tests/pubsub/testgossipinternal.nim +++ b/tests/pubsub/testgossipinternal.nim @@ -36,9 +36,7 @@ suite "GossipSub internal": asyncTest "subscribe/unsubscribeAll": let gossipSub = TestGossipSub.init(newStandardSwitch()) - proc handler( - topic: string, data: seq[byte] - ): Future[void] {.gcsafe, async: (raises: []).} = + proc handler(topic: string, data: seq[byte]): Future[void] {.gcsafe, raises: [].} = discard let topic = "foobar" @@ -670,7 +668,7 @@ suite "GossipSub internal": proc handler(peer: PubSubPeer, data: seq[byte]) {.async: (raises: []).} = check false - proc handler2(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler2(topic: string, data: seq[byte]) {.async.} = discard let topic = "foobar" @@ -771,10 +769,10 @@ suite "GossipSub internal": var receivedMessages = new(HashSet[seq[byte]]) - proc handlerA(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handlerA(topic: string, data: seq[byte]) {.async.} = receivedMessages[].incl(data) - proc handlerB(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handlerB(topic: string, data: seq[byte]) {.async.} = discard nodes[0].subscribe("foobar", handlerA) diff --git a/tests/pubsub/testgossipsub.nim b/tests/pubsub/testgossipsub.nim index 52d5e66f22..6613018c79 100644 --- a/tests/pubsub/testgossipsub.nim +++ b/tests/pubsub/testgossipsub.nim @@ -54,7 +54,7 @@ suite "GossipSub": asyncTest "GossipSub validation should succeed": var handlerFut = newFuture[bool]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" handlerFut.complete(true) @@ -78,7 +78,7 @@ suite "GossipSub": var validatorFut = newFuture[bool]() proc validator( topic: string, message: Message - ): Future[ValidationResult] {.async: (raises: []).} = + ): Future[ValidationResult] {.async.} = check topic == "foobar" validatorFut.complete(true) result = ValidationResult.Accept @@ -93,7 +93,7 @@ suite "GossipSub": await allFuturesThrowing(nodesFut.concat()) asyncTest "GossipSub validation should fail (reject)": - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check false # if we get here, it should fail let @@ -119,7 +119,7 @@ suite "GossipSub": var validatorFut = newFuture[bool]() proc validator( topic: string, message: Message - ): Future[ValidationResult] {.async: (raises: []).} = + ): Future[ValidationResult] {.async.} = result = ValidationResult.Reject validatorFut.complete(true) @@ -133,7 +133,7 @@ suite "GossipSub": await allFuturesThrowing(nodesFut.concat()) asyncTest "GossipSub validation should fail (ignore)": - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check false # if we get here, it should fail let @@ -159,7 +159,7 @@ suite "GossipSub": var validatorFut = newFuture[bool]() proc validator( topic: string, message: Message - ): Future[ValidationResult] {.async: (raises: []).} = + ): Future[ValidationResult] {.async.} = result = ValidationResult.Ignore validatorFut.complete(true) @@ -174,7 +174,7 @@ suite "GossipSub": asyncTest "GossipSub validation one fails and one succeeds": var handlerFut = newFuture[bool]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foo" handlerFut.complete(true) @@ -192,7 +192,7 @@ suite "GossipSub": var passed, failed: Future[bool] = newFuture[bool]() proc validator( topic: string, message: Message - ): Future[ValidationResult] {.async: (raises: []).} = + ): Future[ValidationResult] {.async.} = result = if topic == "foo": passed.complete(true) @@ -226,7 +226,7 @@ suite "GossipSub": sendCounter = 0 validatedCounter = 0 - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = discard proc onRecv(peer: PubSubPeer, msgs: var RPCMsg) = @@ -254,7 +254,7 @@ suite "GossipSub": proc validator( topic: string, message: Message - ): Future[ValidationResult] {.async: (raises: []).} = + ): Future[ValidationResult] {.async.} = result = if topic == "foo": ValidationResult.Accept else: ValidationResult.Reject nodes[1].addValidator("foo", "bar", validator) @@ -279,7 +279,7 @@ suite "GossipSub": asyncTest "GossipSub unsub - resub faster than backoff": var handlerFut = newFuture[bool]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" handlerFut.complete(true) @@ -311,7 +311,7 @@ suite "GossipSub": var validatorFut = newFuture[bool]() proc validator( topic: string, message: Message - ): Future[ValidationResult] {.async: (raises: []).} = + ): Future[ValidationResult] {.async.} = check topic == "foobar" validatorFut.complete(true) result = ValidationResult.Accept @@ -326,7 +326,7 @@ suite "GossipSub": await allFuturesThrowing(nodesFut.concat()) asyncTest "e2e - GossipSub should add remote peer topic subscriptions": - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = discard let @@ -352,7 +352,7 @@ suite "GossipSub": await allFuturesThrowing(nodesFut.concat()) asyncTest "e2e - GossipSub should add remote peer topic subscriptions if both peers are subscribed": - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = discard let @@ -395,7 +395,7 @@ suite "GossipSub": asyncTest "e2e - GossipSub send over fanout A -> B": var passed = newFuture[void]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" passed.complete() @@ -443,7 +443,7 @@ suite "GossipSub": asyncTest "e2e - GossipSub send over fanout A -> B for subscribed topic": var passed = newFuture[void]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" passed.complete() @@ -487,7 +487,7 @@ suite "GossipSub": asyncTest "e2e - GossipSub send over mesh A -> B": var passed: Future[bool] = newFuture[bool]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" passed.complete(true) @@ -542,14 +542,14 @@ suite "GossipSub": var aReceived = 0 cReceived = 0 - proc handlerA(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handlerA(topic: string, data: seq[byte]) {.async.} = inc aReceived check aReceived < 2 - proc handlerB(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handlerB(topic: string, data: seq[byte]) {.async.} = discard - proc handlerC(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handlerC(topic: string, data: seq[byte]) {.async.} = inc cReceived check cReceived < 2 cRelayed.complete() @@ -565,7 +565,7 @@ suite "GossipSub": proc slowValidator( topic: string, message: Message - ): Future[ValidationResult] {.async: (raises: []).} = + ): Future[ValidationResult] {.async.} = try: await cRelayed # Empty A & C caches to detect duplicates @@ -601,7 +601,7 @@ suite "GossipSub": asyncTest "e2e - GossipSub send over floodPublish A -> B": var passed: Future[bool] = newFuture[bool]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" passed.complete(true) @@ -646,7 +646,7 @@ suite "GossipSub": await allFuturesThrowing(nodes.mapIt(it.switch.stop())) proc connectNodes(nodes: seq[PubSub], target: PubSub) {.async.} = - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" for node in nodes: @@ -659,7 +659,7 @@ suite "GossipSub": numPeersFirstMsg: int, numPeersSecondMsg: int, ) {.async.} = - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" block setup: @@ -724,9 +724,7 @@ suite "GossipSub": var handler: TopicHandler closureScope: var peerName = $dialer.peerInfo.peerId - handler = proc( - topic: string, data: seq[byte] - ) {.async: (raises: []), closure.} = + handler = proc(topic: string, data: seq[byte]) {.async, closure.} = seen.mgetOrPut(peerName, 0).inc() check topic == "foobar" if not seenFut.finished() and seen.len >= runs: @@ -774,9 +772,7 @@ suite "GossipSub": var handler: TopicHandler capture dialer, i: var peerName = $dialer.peerInfo.peerId - handler = proc( - topic: string, data: seq[byte] - ) {.async: (raises: []), closure.} = + handler = proc(topic: string, data: seq[byte]) {.async, closure.} = try: if peerName notin seen: seen[peerName] = 0 @@ -819,7 +815,7 @@ suite "GossipSub": # PX to A & C # # C sent his SPR, not A - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = discard # not used in this test let @@ -888,13 +884,13 @@ suite "GossipSub": ) let bFinished = newFuture[void]() - proc handlerA(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handlerA(topic: string, data: seq[byte]) {.async.} = discard - proc handlerB(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handlerB(topic: string, data: seq[byte]) {.async.} = bFinished.complete() - proc handlerC(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handlerC(topic: string, data: seq[byte]) {.async.} = doAssert false nodes[0].subscribe("foobar", handlerA) @@ -953,10 +949,10 @@ suite "GossipSub": nodes[1].switch.peerInfo.peerId, nodes[1].switch.peerInfo.addrs ) - proc handlerA(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handlerA(topic: string, data: seq[byte]) {.async.} = discard - proc handlerB(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handlerB(topic: string, data: seq[byte]) {.async.} = discard nodes[0].subscribe("foobar", handlerA) @@ -1003,10 +999,10 @@ suite "GossipSub": ) let bFinished = newFuture[void]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = discard - proc handlerB(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handlerB(topic: string, data: seq[byte]) {.async.} = bFinished.complete() nodeA.subscribe("foobar", handler) @@ -1046,7 +1042,7 @@ suite "GossipSub": await subscribeNodes(nodes) - proc handle(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handle(topic: string, data: seq[byte]) {.async.} = discard let gossip0 = GossipSub(nodes[0]) @@ -1177,7 +1173,7 @@ suite "GossipSub": let topic = "foobar" proc execValidator( topic: string, message: messages.Message - ): Future[ValidationResult] {.async: (raises: [], raw: true).} = + ): Future[ValidationResult] {.async: (raw: true).} = let res = newFuture[ValidationResult]() res.complete(ValidationResult.Reject) res @@ -1223,7 +1219,7 @@ suite "GossipSub": node1.switch.peerInfo.peerId, node1.switch.peerInfo.addrs ) - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = discard node0.subscribe("foobar", handler) diff --git a/tests/pubsub/testgossipsub2.nim b/tests/pubsub/testgossipsub2.nim index edf3a9ff99..4878b90931 100644 --- a/tests/pubsub/testgossipsub2.nim +++ b/tests/pubsub/testgossipsub2.nim @@ -65,7 +65,7 @@ suite "GossipSub": var handler: TopicHandler closureScope: var peerName = $dialer.peerInfo.peerId - handler = proc(topic: string, data: seq[byte]) {.async: (raises: []).} = + handler = proc(topic: string, data: seq[byte]) {.async, closure.} = seen.mgetOrPut(peerName, 0).inc() info "seen up", count = seen.len check topic == "foobar" @@ -96,7 +96,7 @@ suite "GossipSub": asyncTest "GossipSub invalid topic subscription": var handlerFut = newFuture[bool]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" handlerFut.complete(true) @@ -152,7 +152,7 @@ suite "GossipSub": # DO NOT SUBSCRIBE, CONNECTION SHOULD HAPPEN ### await subscribeNodes(nodes) - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = discard nodes[1].subscribe("foobar", handler) @@ -184,11 +184,11 @@ suite "GossipSub": ) var handlerFut = newFuture[void]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" handlerFut.complete() - proc noop(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc noop(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" nodes[0].subscribe("foobar", noop) @@ -228,7 +228,7 @@ suite "GossipSub": GossipSub(nodes[1]).parameters.graylistThreshold = 100000 var handlerFut = newFuture[void]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" handlerFut.complete() @@ -272,9 +272,7 @@ suite "GossipSub": var handler: TopicHandler closureScope: var peerName = $dialer.peerInfo.peerId - handler = proc( - topic: string, data: seq[byte] - ) {.async: (raises: []), closure.} = + handler = proc(topic: string, data: seq[byte]) {.async, closure.} = seen.mgetOrPut(peerName, 0).inc() check topic == "foobar" if not seenFut.finished() and seen.len >= runs: @@ -326,7 +324,7 @@ suite "GossipSub": # Adding again subscriptions - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = check topic == "foobar" for i in 0 ..< runs: @@ -362,7 +360,7 @@ suite "GossipSub": nodesFut = await allFinished(nodes[0].switch.start(), nodes[1].switch.start()) var handlerFut = newFuture[void]() - proc handler(topic: string, data: seq[byte]) {.async: (raises: []).} = + proc handler(topic: string, data: seq[byte]) {.async.} = handlerFut.complete() await subscribeNodes(nodes)