mirror of
https://github.com/logos-messaging/go-libp2p-pubsub.git
synced 2026-01-04 22:03:07 +00:00
Add Function to Enable Application Layer to Send Direct Control Messages (#562)
### PR Description This PR addresses https://github.com/libp2p/go-libp2p-pubsub/issues/561; i.e., adding a new `SendControl` function to the `GossipSubRouter`. This will allow the application layer to send direct control messages to peers, facilitating finer-grained testing.
This commit is contained in:
parent
f71345c1ec
commit
c06df2f9a3
17
gossipsub.go
17
gossipsub.go
@ -2121,6 +2121,23 @@ func (gs *GossipSubRouter) WithDefaultTagTracer() Option {
|
||||
return WithRawTracer(gs.tagTracer)
|
||||
}
|
||||
|
||||
// SendControl dispatches the given set of control messages to the given peer.
|
||||
// The control messages are sent as a single RPC, with the given (optional) messages.
|
||||
// Args:
|
||||
//
|
||||
// p: the peer to send the control messages to.
|
||||
// ctl: the control messages to send.
|
||||
// msgs: the messages to send in the same RPC (optional).
|
||||
// The control messages are piggybacked on the messages.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// nothing.
|
||||
func (gs *GossipSubRouter) SendControl(p peer.ID, ctl *pb.ControlMessage, msgs ...*pb.Message) {
|
||||
out := rpcWithControl(msgs, ctl.Ihave, ctl.Iwant, ctl.Graft, ctl.Prune, ctl.Idontwant)
|
||||
gs.sendRPC(p, out, false)
|
||||
}
|
||||
|
||||
func peerListToMap(peers []peer.ID) map[peer.ID]struct{} {
|
||||
pmap := make(map[peer.ID]struct{})
|
||||
for _, p := range peers {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user