kaspad/rpc/handle_get_peer_addresses.go
stasatdaglabs 3d45c8de50
[NOD-1130] Integrate RPC with the new architecture (#807)
* [NOD-1130] Delete rpcadapters.go.

* [NOD-1130] Delete p2p. Move rpc to top level.

* [NOD-1130] Remove DAGParams from rpcserverConfig.

* [NOD-1130] Remove rpcserverPeer, rpcserverConnManager, rpcserverSyncManager, and rpcserverConfig.

* [NOD-1130] Remove wallet RPC commands.

* [NOD-1130] Remove wallet RPC commands.

* [NOD-1130] Remove connmgr and peer.

* [NOD-1130] Move rpcmodel into rpc.

* [NOD-1130] Implement ConnectionCount.

* [NOD-1130] Remove ping and node RPC commands.

* [NOD-1130] Dummify handleGetNetTotals.

* [NOD-1130] Add NetConnection to Peer.

* [NOD-1130] Fix merge errors.

* [NOD-1130] Implement Peers.

* [NOD-1130] Fix HandleGetConnectedPeerInfo.

* [NOD-1130] Fix SendRawTransaction.

* [NOD-1130] Rename addManualNode to connect and removeManualNode to disconnect.

* [NOD-1130] Add a stub for AddBlock.

* [NOD-1130] Fix tests.

* [NOD-1130] Replace half-baked contents of RemoveConnection with a stub.

* [NOD-1130] Fix merge errors.

* [NOD-1130] Make golint happy.

* [NOD-1130] Get rid of something weird.

* [NOD-1130] Rename minerClient back to client.

* [NOD-1130] Add a few fields to GetConnectedPeerInfoResult.

* [NOD-1130] Rename oneTry to isPermanent.

* [NOD-1130] Implement ConnectionCount in NetAdapter.

* [NOD-1130] Move RawMempoolVerbose out of mempool.

* [NOD-1130] Move isSynced into the mining package.

* [NOD-1130] Fix a compilation error.

* [NOD-1130] Make golint happy.

* [NOD-1130] Fix merge errors.
2020-07-22 10:26:39 +03:00

58 lines
1.9 KiB
Go

package rpc
import "github.com/kaspanet/kaspad/rpc/model"
// handleGetPeerAddresses handles getPeerAddresses commands.
func handleGetPeerAddresses(s *Server, cmd interface{}, closeChan <-chan struct{}) (interface{}, error) {
peersState, err := s.addressManager.PeersStateForSerialization()
if err != nil {
return nil, err
}
rpcPeersState := model.GetPeerAddressesResult{
Version: peersState.Version,
Key: peersState.Key,
Addresses: make([]*model.GetPeerAddressesKnownAddressResult, len(peersState.Addresses)),
NewBuckets: make(map[string]*model.GetPeerAddressesNewBucketResult),
NewBucketFullNodes: model.GetPeerAddressesNewBucketResult{},
TriedBuckets: make(map[string]*model.GetPeerAddressesTriedBucketResult),
TriedBucketFullNodes: model.GetPeerAddressesTriedBucketResult{},
}
for i, addr := range peersState.Addresses {
rpcPeersState.Addresses[i] = &model.GetPeerAddressesKnownAddressResult{
Addr: addr.Addr,
Src: addr.Src,
SubnetworkID: addr.SubnetworkID,
Attempts: addr.Attempts,
TimeStamp: addr.TimeStamp,
LastAttempt: addr.LastAttempt,
LastSuccess: addr.LastSuccess,
}
}
for subnetworkID, bucket := range peersState.NewBuckets {
rpcPeersState.NewBuckets[subnetworkID] = &model.GetPeerAddressesNewBucketResult{}
for i, addr := range bucket {
rpcPeersState.NewBuckets[subnetworkID][i] = addr
}
}
for i, addr := range peersState.NewBucketFullNodes {
rpcPeersState.NewBucketFullNodes[i] = addr
}
for subnetworkID, bucket := range peersState.TriedBuckets {
rpcPeersState.TriedBuckets[subnetworkID] = &model.GetPeerAddressesTriedBucketResult{}
for i, addr := range bucket {
rpcPeersState.TriedBuckets[subnetworkID][i] = addr
}
}
for i, addr := range peersState.TriedBucketFullNodes {
rpcPeersState.TriedBucketFullNodes[i] = addr
}
return rpcPeersState, nil
}