github.com/ethereum-optimism/optimism@v1.7.2/op-node/p2p/rpc_client.go (about) 1 package p2p 2 3 import ( 4 "context" 5 "net" 6 7 "github.com/libp2p/go-libp2p/core/peer" 8 9 "github.com/ethereum/go-ethereum/p2p/enode" 10 "github.com/ethereum/go-ethereum/rpc" 11 ) 12 13 var NamespaceRPC = "opp2p" 14 15 type Client struct { 16 c *rpc.Client 17 } 18 19 var _ API = (*Client)(nil) 20 21 func NewClient(c *rpc.Client) *Client { 22 return &Client{c: c} 23 } 24 25 func prefixRPC(method string) string { 26 return NamespaceRPC + "_" + method 27 } 28 29 func (c *Client) Self(ctx context.Context) (*PeerInfo, error) { 30 var out *PeerInfo 31 err := c.c.CallContext(ctx, &out, prefixRPC("self")) 32 return out, err 33 } 34 35 func (c *Client) Peers(ctx context.Context, connected bool) (*PeerDump, error) { 36 var out *PeerDump 37 err := c.c.CallContext(ctx, &out, prefixRPC("peers"), connected) 38 return out, err 39 } 40 41 func (c *Client) PeerStats(ctx context.Context) (*PeerStats, error) { 42 var out *PeerStats 43 err := c.c.CallContext(ctx, &out, prefixRPC("peerStats")) 44 return out, err 45 } 46 47 func (c *Client) DiscoveryTable(ctx context.Context) ([]*enode.Node, error) { 48 var out []*enode.Node 49 err := c.c.CallContext(ctx, &out, prefixRPC("discoveryTable")) 50 return out, err 51 } 52 53 func (c *Client) BlockPeer(ctx context.Context, p peer.ID) error { 54 return c.c.CallContext(ctx, nil, prefixRPC("blockPeer"), p) 55 } 56 57 func (c *Client) UnblockPeer(ctx context.Context, p peer.ID) error { 58 return c.c.CallContext(ctx, nil, prefixRPC("unblockPeer"), p) 59 } 60 61 func (c *Client) ListBlockedPeers(ctx context.Context) ([]peer.ID, error) { 62 var out []peer.ID 63 err := c.c.CallContext(ctx, &out, prefixRPC("listBlockedPeers")) 64 return out, err 65 } 66 67 func (c *Client) BlockAddr(ctx context.Context, ip net.IP) error { 68 return c.c.CallContext(ctx, nil, prefixRPC("blockAddr"), ip) 69 } 70 71 func (c *Client) UnblockAddr(ctx context.Context, ip net.IP) error { 72 return c.c.CallContext(ctx, nil, prefixRPC("unblockAddr"), ip) 73 } 74 75 func (c *Client) ListBlockedAddrs(ctx context.Context) ([]net.IP, error) { 76 var out []net.IP 77 err := c.c.CallContext(ctx, &out, prefixRPC("listBlockedAddrs")) 78 return out, err 79 } 80 81 func (c *Client) BlockSubnet(ctx context.Context, ipnet *net.IPNet) error { 82 return c.c.CallContext(ctx, nil, prefixRPC("blockSubnet"), ipnet) 83 } 84 85 func (c *Client) UnblockSubnet(ctx context.Context, ipnet *net.IPNet) error { 86 return c.c.CallContext(ctx, nil, prefixRPC("unblockSubnet"), ipnet) 87 } 88 89 func (c *Client) ListBlockedSubnets(ctx context.Context) ([]*net.IPNet, error) { 90 var out []*net.IPNet 91 err := c.c.CallContext(ctx, &out, prefixRPC("listBlockedSubnets")) 92 return out, err 93 } 94 95 func (c *Client) ProtectPeer(ctx context.Context, p peer.ID) error { 96 return c.c.CallContext(ctx, nil, prefixRPC("protectPeer"), p) 97 } 98 99 func (c *Client) UnprotectPeer(ctx context.Context, p peer.ID) error { 100 return c.c.CallContext(ctx, nil, prefixRPC("unprotectPeer"), p) 101 } 102 103 func (c *Client) ConnectPeer(ctx context.Context, addr string) error { 104 return c.c.CallContext(ctx, nil, prefixRPC("connectPeer"), addr) 105 } 106 107 func (c *Client) DisconnectPeer(ctx context.Context, id peer.ID) error { 108 return c.c.CallContext(ctx, nil, prefixRPC("disconnectPeer"), id) 109 }