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 }