diff --git a/gossipsub.go b/gossipsub.go index dcc5d193..222c71ae 100644 --- a/gossipsub.go +++ b/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 {