mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-03-30 15:08:33 +00:00

* [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.
61 lines
1.5 KiB
Go
61 lines
1.5 KiB
Go
package flowcontext
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/netadapter"
|
|
"github.com/kaspanet/kaspad/netadapter/id"
|
|
"github.com/kaspanet/kaspad/protocol/common"
|
|
peerpkg "github.com/kaspanet/kaspad/protocol/peer"
|
|
"github.com/kaspanet/kaspad/wire"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
// NetAdapter returns the net adapter that is associated to the flow context.
|
|
func (f *FlowContext) NetAdapter() *netadapter.NetAdapter {
|
|
return f.netAdapter
|
|
}
|
|
|
|
// AddToPeers marks this peer as ready and adds it to the ready peers list.
|
|
func (f *FlowContext) AddToPeers(peer *peerpkg.Peer) error {
|
|
f.peersMutex.RLock()
|
|
defer f.peersMutex.RUnlock()
|
|
|
|
if _, ok := f.peers[peer.ID()]; ok {
|
|
return errors.Wrapf(common.ErrPeerWithSameIDExists, "peer with ID %s already exists", peer.ID())
|
|
}
|
|
|
|
f.peers[peer.ID()] = peer
|
|
return nil
|
|
}
|
|
|
|
// readyPeerIDs returns the peer IDs of all the ready peers.
|
|
func (f *FlowContext) readyPeerIDs() []*id.ID {
|
|
f.peersMutex.RLock()
|
|
defer f.peersMutex.RUnlock()
|
|
peerIDs := make([]*id.ID, len(f.peers))
|
|
i := 0
|
|
for peerID := range f.peers {
|
|
peerIDs[i] = peerID
|
|
i++
|
|
}
|
|
return peerIDs
|
|
}
|
|
|
|
// Broadcast broadcast the given message to all the ready peers.
|
|
func (f *FlowContext) Broadcast(message wire.Message) error {
|
|
return f.netAdapter.Broadcast(f.readyPeerIDs(), message)
|
|
}
|
|
|
|
// Peers returns the currently active peers
|
|
func (f *FlowContext) Peers() []*peerpkg.Peer {
|
|
f.peersMutex.RLock()
|
|
defer f.peersMutex.RUnlock()
|
|
|
|
peers := make([]*peerpkg.Peer, len(f.peers))
|
|
i := 0
|
|
for _, peer := range f.peers {
|
|
peers[i] = peer
|
|
i++
|
|
}
|
|
return peers
|
|
}
|