good morning!!!!

Skip to content
Snippets Groups Projects
net_api.go 1.54 KiB
Newer Older
  • Learn to ignore specific revisions
  • Evgeny Danilenko's avatar
    Evgeny Danilenko committed
    package commands
    
    import (
    	"context"
    
    Alex Sharov's avatar
    Alex Sharov committed
    	"github.com/ledgerwatch/turbo-geth/common/hexutil"
    
    Alex Sharov's avatar
    Alex Sharov committed
    	"github.com/ledgerwatch/turbo-geth/core"
    
    // NetAPI the interface for the net_ RPC commands
    
    Evgeny Danilenko's avatar
    Evgeny Danilenko committed
    type NetAPI interface {
    
    	Listening(_ context.Context) (bool, error)
    	Version(_ context.Context) (string, error)
    	PeerCount(_ context.Context) (hexutil.Uint, error)
    
    // NetAPIImpl data structure to store things needed for net_ commands
    
    Evgeny Danilenko's avatar
    Evgeny Danilenko committed
    type NetAPIImpl struct {
    
    Alex Sharov's avatar
    Alex Sharov committed
    	ethBackend core.ApiBackend
    
    // NewNetAPIImpl returns NetAPIImplImpl instance
    
    Alex Sharov's avatar
    Alex Sharov committed
    func NewNetAPIImpl(eth core.ApiBackend) *NetAPIImpl {
    
    Evgeny Danilenko's avatar
    Evgeny Danilenko committed
    	return &NetAPIImpl{
    		ethBackend: eth,
    	}
    }
    
    Alex Sharov's avatar
    Alex Sharov committed
    
    
    // Listening implements net_listening. Returns true if client is actively listening for network connections.
    // TODO: Remove hard coded value
    
    func (api *NetAPIImpl) Listening(_ context.Context) (bool, error) {
    	return true, nil
    }
    
    
    // Version implements net_version. Returns the current network id.
    
    Alex Sharov's avatar
    Alex Sharov committed
    func (api *NetAPIImpl) Version(ctx context.Context) (string, error) {
    
    	if api.ethBackend == nil {
    		// We're running in --chaindata mode or otherwise cannot get the backend
    		return "", fmt.Errorf(NotAvailableChainData, "net_version")
    	}
    
    
    Alex Sharov's avatar
    Alex Sharov committed
    	res, err := api.ethBackend.NetVersion(ctx)
    
    	if err != nil {
    		return "", err
    	}
    
    	return strconv.FormatUint(res, 10), nil
    }
    
    
    // PeerCount implements net_peerCount. Returns number of peers currently connected to the client.
    // TODO: This routine currently returns a hard coded value of '25'
    
    Alex Sharov's avatar
    Alex Sharov committed
    func (api *NetAPIImpl) PeerCount(_ context.Context) (hexutil.Uint, error) {
    	return hexutil.Uint(25), nil
    }