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 }