C# Класс BitSharper.PeerGroup

Maintain a number of connections to peers.
PeerGroup tries to maintain a constant number of connections to a set of distinct peers. Each peer runs a network listener in its own thread. When a connection is lost, a new peer will be tried after a delay as long as the number of connections less than the maximum.

Connections are made to addresses from a provided list. When that list is exhausted, we start again from the head of the list.

The PeerGroup can broadcast a transaction to the currently connected set of peers. It can also handle download of the block chain from peers, restarting the process when peers die. @author [email protected] (Miron Cuperman a.k.a devrandom)

Показать файл Открыть проект Примеры использования класса

Открытые методы

Метод Описание
AddAddress ( PeerAddress peerAddress ) : void

Add an address to the list of potential peers to connect to.

AddPeerDiscovery ( IPeerDiscovery peerDiscovery ) : void

Add addresses from a discovery source to the list of potential peers to connect to.

BroadcastTransaction ( Transaction tx ) : bool

Broadcast a transaction to all connected peers.

DownloadBlockChain ( ) : void

Download the block chain from peers.

This method wait until the download is complete. "Complete" is defined as downloading from at least one peer all the blocks that are in that peer's inventory.

PeerGroup ( IBlockStore blockStore, NetworkParameters @params, BlockChain chain ) : System

Creates a PeerGroup with the given parameters and a default 5 second connection timeout.

PeerGroup ( IBlockStore blockStore, NetworkParameters @params, BlockChain chain, int connectionDelayMillis ) : System

Creates a PeerGroup with the given parameters. The connectionDelayMillis parameter controls how long the PeerGroup will wait between attempts to connect to nodes or read from any added peer discovery sources.

Run ( ) : void

Repeatedly get the next peer address from the inactive queue and try to connect.

We can be terminated with Thread.interrupt. When an interrupt is received, we will ask the executor to shutdown and ask each peer to disconnect. At that point no threads or network connections will be active.

Start ( ) : void

Starts the background thread that makes connections.

StartBlockChainDownload ( IPeerEventListener listener ) : void

Start downloading the block chain from the first available peer.

If no peers are currently connected, the download will be started once a peer starts. If the peer dies, the download will resume with another peer.

Stop ( ) : void

Stop this PeerGroup.

The peer group will be asynchronously shut down. After it is shut down all peers will be disconnected and no threads will be running.

Защищенные методы

Метод Описание
HandleNewPeer ( Peer peer ) : void
HandlePeerDeath ( Peer peer ) : void

Приватные методы

Метод Описание
DiscoverPeers ( ) : void
StartBlockChainDownloadFromPeer ( Peer peer ) : void
TryNextPeer ( ) : void

Try connecting to a peer. If we exceed the number of connections, delay and try again.

Описание методов

AddAddress() публичный Метод

Add an address to the list of potential peers to connect to.
public AddAddress ( PeerAddress peerAddress ) : void
peerAddress PeerAddress
Результат void

AddPeerDiscovery() публичный Метод

Add addresses from a discovery source to the list of potential peers to connect to.
public AddPeerDiscovery ( IPeerDiscovery peerDiscovery ) : void
peerDiscovery IPeerDiscovery
Результат void

BroadcastTransaction() публичный Метод

Broadcast a transaction to all connected peers.
public BroadcastTransaction ( Transaction tx ) : bool
tx Transaction
Результат bool

DownloadBlockChain() публичный Метод

Download the block chain from peers.
This method wait until the download is complete. "Complete" is defined as downloading from at least one peer all the blocks that are in that peer's inventory.
public DownloadBlockChain ( ) : void
Результат void

HandleNewPeer() защищенный Метод

protected HandleNewPeer ( Peer peer ) : void
peer Peer
Результат void

HandlePeerDeath() защищенный Метод

protected HandlePeerDeath ( Peer peer ) : void
peer Peer
Результат void

PeerGroup() публичный Метод

Creates a PeerGroup with the given parameters and a default 5 second connection timeout.
public PeerGroup ( IBlockStore blockStore, NetworkParameters @params, BlockChain chain ) : System
blockStore IBlockStore
@params NetworkParameters
chain BlockChain
Результат System

PeerGroup() публичный Метод

Creates a PeerGroup with the given parameters. The connectionDelayMillis parameter controls how long the PeerGroup will wait between attempts to connect to nodes or read from any added peer discovery sources.
public PeerGroup ( IBlockStore blockStore, NetworkParameters @params, BlockChain chain, int connectionDelayMillis ) : System
blockStore IBlockStore
@params NetworkParameters
chain BlockChain
connectionDelayMillis int
Результат System

Run() публичный Метод

Repeatedly get the next peer address from the inactive queue and try to connect.
We can be terminated with Thread.interrupt. When an interrupt is received, we will ask the executor to shutdown and ask each peer to disconnect. At that point no threads or network connections will be active.
public Run ( ) : void
Результат void

Start() публичный Метод

Starts the background thread that makes connections.
public Start ( ) : void
Результат void

StartBlockChainDownload() публичный Метод

Start downloading the block chain from the first available peer.
If no peers are currently connected, the download will be started once a peer starts. If the peer dies, the download will resume with another peer.
public StartBlockChainDownload ( IPeerEventListener listener ) : void
listener IPeerEventListener A listener for chain download events, may not be null.
Результат void

Stop() публичный Метод

Stop this PeerGroup.
The peer group will be asynchronously shut down. After it is shut down all peers will be disconnected and no threads will be running.
public Stop ( ) : void
Результат void