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  }