mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
node: rm duplicate code
Signed-off-by: tmelhao <tmelhao@gmail.com>
This commit is contained in:
parent
ba2dd9385c
commit
18fd7a8d48
1 changed files with 9 additions and 36 deletions
45
node/api.go
45
node/api.go
|
|
@ -55,54 +55,27 @@ type adminAPI struct {
|
||||||
// AddPeer requests connecting to a remote node, and also maintaining the new
|
// AddPeer requests connecting to a remote node, and also maintaining the new
|
||||||
// connection at all times, even reconnecting if it is lost.
|
// connection at all times, even reconnecting if it is lost.
|
||||||
func (api *adminAPI) AddPeer(url string) (bool, error) {
|
func (api *adminAPI) AddPeer(url string) (bool, error) {
|
||||||
// Make sure the server is running, fail otherwise
|
return api.handlePeer(url, func(server *p2p.Server, node *enode.Node) { server.AddPeer(node) })
|
||||||
server := api.node.Server()
|
|
||||||
if server == nil {
|
|
||||||
return false, ErrNodeStopped
|
|
||||||
}
|
|
||||||
// Try to add the url as a static peer and return
|
|
||||||
node, err := enode.Parse(enode.ValidSchemes, url)
|
|
||||||
if err != nil {
|
|
||||||
return false, fmt.Errorf("invalid enode: %v", err)
|
|
||||||
}
|
|
||||||
server.AddPeer(node)
|
|
||||||
return true, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemovePeer disconnects from a remote node if the connection exists
|
// RemovePeer disconnects from a remote node if the connection exists
|
||||||
func (api *adminAPI) RemovePeer(url string) (bool, error) {
|
func (api *adminAPI) RemovePeer(url string) (bool, error) {
|
||||||
// Make sure the server is running, fail otherwise
|
return api.handlePeer(url, func(server *p2p.Server, node *enode.Node) { server.RemovePeer(node) })
|
||||||
server := api.node.Server()
|
|
||||||
if server == nil {
|
|
||||||
return false, ErrNodeStopped
|
|
||||||
}
|
|
||||||
// Try to remove the url as a static peer and return
|
|
||||||
node, err := enode.Parse(enode.ValidSchemes, url)
|
|
||||||
if err != nil {
|
|
||||||
return false, fmt.Errorf("invalid enode: %v", err)
|
|
||||||
}
|
|
||||||
server.RemovePeer(node)
|
|
||||||
return true, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddTrustedPeer allows a remote node to always connect, even if slots are full
|
// AddTrustedPeer allows a remote node to always connect, even if slots are full
|
||||||
func (api *adminAPI) AddTrustedPeer(url string) (bool, error) {
|
func (api *adminAPI) AddTrustedPeer(url string) (bool, error) {
|
||||||
// Make sure the server is running, fail otherwise
|
return api.handlePeer(url, func(server *p2p.Server, node *enode.Node) { server.AddTrustedPeer(node) })
|
||||||
server := api.node.Server()
|
|
||||||
if server == nil {
|
|
||||||
return false, ErrNodeStopped
|
|
||||||
}
|
|
||||||
node, err := enode.Parse(enode.ValidSchemes, url)
|
|
||||||
if err != nil {
|
|
||||||
return false, fmt.Errorf("invalid enode: %v", err)
|
|
||||||
}
|
|
||||||
server.AddTrustedPeer(node)
|
|
||||||
return true, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemoveTrustedPeer removes a remote node from the trusted peer set, but it
|
// RemoveTrustedPeer removes a remote node from the trusted peer set, but it
|
||||||
// does not disconnect it automatically.
|
// does not disconnect it automatically.
|
||||||
func (api *adminAPI) RemoveTrustedPeer(url string) (bool, error) {
|
func (api *adminAPI) RemoveTrustedPeer(url string) (bool, error) {
|
||||||
|
return api.handlePeer(url, func(server *p2p.Server, node *enode.Node) { server.RemoveTrustedPeer(node) })
|
||||||
|
}
|
||||||
|
|
||||||
|
// handlePeer trys to add or remove a peer with the given handler
|
||||||
|
func (api *adminAPI) handlePeer(url string, handler func(*p2p.Server, *enode.Node)) (bool, error) {
|
||||||
// Make sure the server is running, fail otherwise
|
// Make sure the server is running, fail otherwise
|
||||||
server := api.node.Server()
|
server := api.node.Server()
|
||||||
if server == nil {
|
if server == nil {
|
||||||
|
|
@ -112,7 +85,7 @@ func (api *adminAPI) RemoveTrustedPeer(url string) (bool, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("invalid enode: %v", err)
|
return false, fmt.Errorf("invalid enode: %v", err)
|
||||||
}
|
}
|
||||||
server.RemoveTrustedPeer(node)
|
handler(server, node)
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue