diff --git a/gossip_tracer.go b/gossip_tracer.go index d1fe5a0..f9d0406 100644 --- a/gossip_tracer.go +++ b/gossip_tracer.go @@ -159,6 +159,9 @@ func (gt *gossipTracer) Leave(topic string) {} func (gt *gossipTracer) Graft(p peer.ID, topic string) {} func (gt *gossipTracer) Prune(p peer.ID, topic string) {} func (gt *gossipTracer) DuplicateMessage(msg *Message) {} +func (gt *gossipTracer) RecvRPC(rpc *RPC) {} +func (gt *gossipTracer) SendRPC(rpc *RPC, p peer.ID) {} +func (gt *gossipTracer) DropRPC(rpc *RPC, p peer.ID) {} func (gt *gossipTracer) ThrottlePeer(p peer.ID) { gt.Lock() diff --git a/peer_gater.go b/peer_gater.go index db181e1..6907d13 100644 --- a/peer_gater.go +++ b/peer_gater.go @@ -362,6 +362,9 @@ func (pg *peerGater) AcceptFrom(p peer.ID) AcceptStatus { return AcceptControl } +// -- RawTracer interface methods +var _ RawTracer = (*peerGater)(nil) + // tracer interface func (pg *peerGater) AddPeer(p peer.ID, proto protocol.ID) { pg.Lock() @@ -440,3 +443,9 @@ func (pg *peerGater) DuplicateMessage(msg *Message) { } func (pg *peerGater) ThrottlePeer(p peer.ID) {} + +func (pg *peerGater) RecvRPC(rpc *RPC) {} + +func (pg *peerGater) SendRPC(rpc *RPC, p peer.ID) {} + +func (pg *peerGater) DropRPC(rpc *RPC, p peer.ID) {} diff --git a/score.go b/score.go index 74d38f4..2e552fc 100644 --- a/score.go +++ b/score.go @@ -819,6 +819,12 @@ func (ps *peerScore) DuplicateMessage(msg *Message) { func (ps *peerScore) ThrottlePeer(p peer.ID) {} +func (ps *peerScore) RecvRPC(rpc *RPC) {} + +func (ps *peerScore) SendRPC(rpc *RPC, p peer.ID) {} + +func (ps *peerScore) DropRPC(rpc *RPC, p peer.ID) {} + // message delivery records func (d *messageDeliveries) getRecord(id string) *deliveryRecord { rec, ok := d.records[id] diff --git a/tag_tracer.go b/tag_tracer.go index 2d0f19c..b196957 100644 --- a/tag_tracer.go +++ b/tag_tracer.go @@ -251,5 +251,8 @@ func (t *tagTracer) RejectMessage(msg *Message, reason string) { } } -func (t *tagTracer) RemovePeer(peer.ID) {} -func (gt *tagTracer) ThrottlePeer(p peer.ID) {} +func (t *tagTracer) RemovePeer(peer.ID) {} +func (t *tagTracer) ThrottlePeer(p peer.ID) {} +func (t *tagTracer) RecvRPC(rpc *RPC) {} +func (t *tagTracer) SendRPC(rpc *RPC, p peer.ID) {} +func (t *tagTracer) DropRPC(rpc *RPC, p peer.ID) {} diff --git a/trace.go b/trace.go index 3ee4bb6..c11424b 100644 --- a/trace.go +++ b/trace.go @@ -48,6 +48,12 @@ type RawTracer interface { DuplicateMessage(msg *Message) // ThrottlePeer is invoked when a peer is throttled by the peer gater. ThrottlePeer(p peer.ID) + // RecvRPC is invoked when an incoming RPC is received. + RecvRPC(rpc *RPC) + // SendRPC is invoked when a RPC is sent. + SendRPC(rpc *RPC, p peer.ID) + // DropRPC is invoked when an outbound RPC is dropped, typically because of a queue full. + DropRPC(rpc *RPC, p peer.ID) } // pubsub tracer details @@ -243,6 +249,10 @@ func (t *pubsubTracer) RecvRPC(rpc *RPC) { return } + for _, tr := range t.raw { + tr.RecvRPC(rpc) + } + if t.tracer == nil { return } @@ -266,6 +276,10 @@ func (t *pubsubTracer) SendRPC(rpc *RPC, p peer.ID) { return } + for _, tr := range t.raw { + tr.SendRPC(rpc, p) + } + if t.tracer == nil { return } @@ -289,6 +303,10 @@ func (t *pubsubTracer) DropRPC(rpc *RPC, p peer.ID) { return } + for _, tr := range t.raw { + tr.DropRPC(rpc, p) + } + if t.tracer == nil { return }