github.com/ethereum-optimism/optimism@v1.7.2/op-node/p2p/gating/metrics.go (about)

     1  package gating
     2  
     3  import (
     4  	"github.com/libp2p/go-libp2p/core/network"
     5  	"github.com/libp2p/go-libp2p/core/peer"
     6  	"github.com/multiformats/go-multiaddr"
     7  )
     8  
     9  type ConnectionGaterMetrics interface {
    10  	RecordDial(allow bool)
    11  	RecordAccept(allow bool)
    12  }
    13  
    14  type MeteredConnectionGater struct {
    15  	BlockingConnectionGater
    16  	m ConnectionGaterMetrics
    17  }
    18  
    19  func AddMetering(gater BlockingConnectionGater, m ConnectionGaterMetrics) *MeteredConnectionGater {
    20  	return &MeteredConnectionGater{BlockingConnectionGater: gater, m: m}
    21  }
    22  
    23  func (g *MeteredConnectionGater) InterceptPeerDial(p peer.ID) (allow bool) {
    24  	allow = g.BlockingConnectionGater.InterceptPeerDial(p)
    25  	g.m.RecordDial(allow)
    26  	return allow
    27  }
    28  
    29  func (g *MeteredConnectionGater) InterceptAddrDial(id peer.ID, ma multiaddr.Multiaddr) (allow bool) {
    30  	allow = g.BlockingConnectionGater.InterceptAddrDial(id, ma)
    31  	g.m.RecordDial(allow)
    32  	return allow
    33  }
    34  
    35  func (g *MeteredConnectionGater) InterceptAccept(mas network.ConnMultiaddrs) (allow bool) {
    36  	allow = g.BlockingConnectionGater.InterceptAccept(mas)
    37  	g.m.RecordAccept(allow)
    38  	return allow
    39  }
    40  
    41  func (g *MeteredConnectionGater) InterceptSecured(dir network.Direction, id peer.ID, mas network.ConnMultiaddrs) (allow bool) {
    42  	allow = g.BlockingConnectionGater.InterceptSecured(dir, id, mas)
    43  	g.m.RecordAccept(allow)
    44  	return allow
    45  }