diff --git a/dagger/bitswap/network.nim b/dagger/bitswap/network.nim index 5a3bbb6d..bdf93eb8 100644 --- a/dagger/bitswap/network.nim +++ b/dagger/bitswap/network.nim @@ -217,6 +217,15 @@ proc broadcastPricing*(network: BitswapNetwork, let message = Message(pricing: PricingMessage.init(pricing)) asyncSpawn network.peers[id].send(message) +proc broadcastPayment*(network: BitswapNetwork, + id: PeerId, + payment: SignedState) = + if id notin network.peers: + return + + let message = Message(payment: StateChannelUpdate.init(payment)) + asyncSpawn network.peers[id].send(message) + proc handlePayment(network: BitswapNetwork, peer: NetworkPeer, payment: SignedState) = diff --git a/tests/dagger/bitswap/testnetwork.nim b/tests/dagger/bitswap/testnetwork.nim index 0dbcad37..ba5bf751 100644 --- a/tests/dagger/bitswap/testnetwork.nim +++ b/tests/dagger/bitswap/testnetwork.nim @@ -238,3 +238,16 @@ suite "Bitswap Network - e2e": network1.broadcastPricing(switch2.peerInfo.peerId, pricing) await done.wait(100.millis) + + test "broadcasts payment": + let payment = SignedState.example + + proc handlePayment(peer: PeerID, received: SignedState) = + check received == payment + done.complete() + + network2.handlers.onPayment = handlePayment + + network1.broadcastPayment(switch2.peerInfo.peerId, payment) + + await done.wait(100.millis)