github.com/ari-anchor/sei-tendermint@v0.0.0-20230519144642-dc826b7b56bb/internal/rpc/core/net.go (about)

     1  package core
     2  
     3  import (
     4  	"context"
     5  	"errors"
     6  	"fmt"
     7  
     8  	"github.com/ari-anchor/sei-tendermint/rpc/coretypes"
     9  )
    10  
    11  // NetInfo returns network info.
    12  // More: https://docs.tendermint.com/master/rpc/#/Info/net_info
    13  func (env *Environment) NetInfo(ctx context.Context) (*coretypes.ResultNetInfo, error) {
    14  	peerList := env.PeerManager.Peers()
    15  
    16  	peers := make([]coretypes.Peer, 0, len(peerList))
    17  	peerConnections := make([]coretypes.PeerConnection, 0, len(peerList))
    18  	for _, peer := range peerList {
    19  		addrs := env.PeerManager.Addresses(peer)
    20  		if len(addrs) == 0 {
    21  			continue
    22  		}
    23  
    24  		peers = append(peers, coretypes.Peer{
    25  			ID:  peer,
    26  			URL: addrs[0].String(),
    27  		})
    28  		peerConnections = append(peerConnections, coretypes.PeerConnection{
    29  			ID:    peer,
    30  			State: env.PeerManager.State(peer),
    31  			Score: env.PeerManager.Score(peer),
    32  		})
    33  	}
    34  
    35  	return &coretypes.ResultNetInfo{
    36  		Listening:       env.IsListening,
    37  		Listeners:       env.Listeners,
    38  		NPeers:          len(peers),
    39  		Peers:           peers,
    40  		PeerConnections: peerConnections,
    41  	}, nil
    42  }
    43  
    44  // Genesis returns genesis file.
    45  // More: https://docs.tendermint.com/master/rpc/#/Info/genesis
    46  func (env *Environment) Genesis(ctx context.Context) (*coretypes.ResultGenesis, error) {
    47  	if len(env.genChunks) > 1 {
    48  		return nil, errors.New("genesis response is large, please use the genesis_chunked API instead")
    49  	}
    50  
    51  	return &coretypes.ResultGenesis{Genesis: env.GenDoc}, nil
    52  }
    53  
    54  func (env *Environment) GenesisChunked(ctx context.Context, req *coretypes.RequestGenesisChunked) (*coretypes.ResultGenesisChunk, error) {
    55  	if env.genChunks == nil {
    56  		return nil, fmt.Errorf("service configuration error, genesis chunks are not initialized")
    57  	}
    58  
    59  	if len(env.genChunks) == 0 {
    60  		return nil, fmt.Errorf("service configuration error, there are no chunks")
    61  	}
    62  
    63  	id := int(req.Chunk)
    64  
    65  	if id > len(env.genChunks)-1 {
    66  		return nil, fmt.Errorf("there are %d chunks, %d is invalid", len(env.genChunks)-1, id)
    67  	}
    68  
    69  	return &coretypes.ResultGenesisChunk{
    70  		TotalChunks: len(env.genChunks),
    71  		ChunkNumber: id,
    72  		Data:        env.genChunks[id],
    73  	}, nil
    74  }