eth:
- NodeInfo, PeerInfo types, PeersInfo(), NodeInfo() in eth/backend to support node admin IF - start net only if MaxPeers > 0, close extraDb in Stop() - defer s.extraDb.Close()
This commit is contained in:
parent
e150832734
commit
8ad0f1b8a3
@ -219,6 +219,64 @@ func New(config *Config) (*Ethereum, error) {
|
|||||||
return eth, nil
|
return eth, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type NodeInfo struct {
|
||||||
|
Name string
|
||||||
|
NodeUrl string
|
||||||
|
NodeID string
|
||||||
|
IP string
|
||||||
|
DiscPort int // UDP listening port for discovery protocol
|
||||||
|
TCPPort int // TCP listening port for RLPx
|
||||||
|
Td string
|
||||||
|
ListenAddr string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Ethereum) NodeInfo() *NodeInfo {
|
||||||
|
node := s.net.Self()
|
||||||
|
|
||||||
|
return &NodeInfo{
|
||||||
|
Name: s.Name(),
|
||||||
|
NodeUrl: node.String(),
|
||||||
|
NodeID: node.ID.String(),
|
||||||
|
IP: node.IP.String(),
|
||||||
|
DiscPort: node.DiscPort,
|
||||||
|
TCPPort: node.TCPPort,
|
||||||
|
ListenAddr: s.net.ListenAddr,
|
||||||
|
Td: s.ChainManager().Td().String(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type PeerInfo struct {
|
||||||
|
ID string
|
||||||
|
Name string
|
||||||
|
Caps string
|
||||||
|
RemoteAddress string
|
||||||
|
LocalAddress string
|
||||||
|
}
|
||||||
|
|
||||||
|
func newPeerInfo(peer *p2p.Peer) *PeerInfo {
|
||||||
|
var caps []string
|
||||||
|
for _, cap := range peer.Caps() {
|
||||||
|
caps = append(caps, cap.String())
|
||||||
|
}
|
||||||
|
return &PeerInfo{
|
||||||
|
ID: peer.ID().String(),
|
||||||
|
Name: peer.Name(),
|
||||||
|
Caps: strings.Join(caps, ", "),
|
||||||
|
RemoteAddress: peer.RemoteAddr().String(),
|
||||||
|
LocalAddress: peer.LocalAddr().String(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// PeersInfo returns an array of PeerInfo objects describing connected peers
|
||||||
|
func (s *Ethereum) PeersInfo() (peersinfo []*PeerInfo) {
|
||||||
|
for _, peer := range s.net.Peers() {
|
||||||
|
if peer != nil {
|
||||||
|
peersinfo = append(peersinfo, newPeerInfo(peer))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Ethereum) ResetWithGenesisBlock(gb *types.Block) {
|
func (s *Ethereum) ResetWithGenesisBlock(gb *types.Block) {
|
||||||
s.chainManager.ResetWithGenesisBlock(gb)
|
s.chainManager.ResetWithGenesisBlock(gb)
|
||||||
s.pow.UpdateCache(true)
|
s.pow.UpdateCache(true)
|
||||||
@ -251,6 +309,7 @@ func (s *Ethereum) StateDb() ethutil.Database { return s.stateDb }
|
|||||||
func (s *Ethereum) ExtraDb() ethutil.Database { return s.extraDb }
|
func (s *Ethereum) ExtraDb() ethutil.Database { return s.extraDb }
|
||||||
func (s *Ethereum) IsListening() bool { return true } // Always listening
|
func (s *Ethereum) IsListening() bool { return true } // Always listening
|
||||||
func (s *Ethereum) PeerCount() int { return s.net.PeerCount() }
|
func (s *Ethereum) PeerCount() int { return s.net.PeerCount() }
|
||||||
|
func (s *Ethereum) PeerInfo() int { return s.net.PeerCount() }
|
||||||
func (s *Ethereum) Peers() []*p2p.Peer { return s.net.Peers() }
|
func (s *Ethereum) Peers() []*p2p.Peer { return s.net.Peers() }
|
||||||
func (s *Ethereum) MaxPeers() int { return s.net.MaxPeers }
|
func (s *Ethereum) MaxPeers() int { return s.net.MaxPeers }
|
||||||
func (s *Ethereum) Version() string { return s.version }
|
func (s *Ethereum) Version() string { return s.version }
|
||||||
@ -262,9 +321,11 @@ func (s *Ethereum) Start() error {
|
|||||||
ProtocolVersion: ProtocolVersion,
|
ProtocolVersion: ProtocolVersion,
|
||||||
})
|
})
|
||||||
|
|
||||||
err := s.net.Start()
|
if s.net.MaxPeers > 0 {
|
||||||
if err != nil {
|
err := s.net.Start()
|
||||||
return err
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start services
|
// Start services
|
||||||
@ -311,6 +372,7 @@ func (s *Ethereum) Stop() {
|
|||||||
// Close the database
|
// Close the database
|
||||||
defer s.blockDb.Close()
|
defer s.blockDb.Close()
|
||||||
defer s.stateDb.Close()
|
defer s.stateDb.Close()
|
||||||
|
defer s.extraDb.Close()
|
||||||
|
|
||||||
s.txSub.Unsubscribe() // quits txBroadcastLoop
|
s.txSub.Unsubscribe() // quits txBroadcastLoop
|
||||||
s.blockSub.Unsubscribe() // quits blockBroadcastLoop
|
s.blockSub.Unsubscribe() // quits blockBroadcastLoop
|
||||||
|
Loading…
Reference in New Issue
Block a user