BitSharp.Network.Workers.HeadersRequestWorker.SendGetHeaders C# (CSharp) Méthode

SendGetHeaders() public méthode

public SendGetHeaders ( Peer peer ) : System.Threading.Tasks.Task
peer Peer
Résultat System.Threading.Tasks.Task
        public Task SendGetHeaders(Peer peer)
        {
            if (!IsStarted)
                return Task.CompletedTask;

            var targetChainLocal = this.coreDaemon.TargetChain;
            if (targetChainLocal == null)
                return Task.CompletedTask;

            var blockLocatorHashes = CalculateBlockLocatorHashes(targetChainLocal.Blocks);

            // remove an existing request for this peer if it's stale
            var now = DateTimeOffset.Now;
            DateTimeOffset requestTime;
            if (this.headersRequestsByPeer.TryGetValue(peer, out requestTime)
                && (now - requestTime) > STALE_REQUEST_TIME)
            {
                this.headersRequestsByPeer.TryRemove(peer, out requestTime);
            }

            // determine if a new request can be made
            if (this.headersRequestsByPeer.TryAdd(peer, now))
                // send out the request for headers
                return peer.Sender.SendGetHeaders(blockLocatorHashes, hashStop: UInt256.Zero);
            else
                return Task.CompletedTask;
        }

Usage Example

Exemple #1
0
        private async Task PeerStartup(Peer peer)
        {
            await peer.Sender.RequestKnownAddressesAsync();

            await headersRequestWorker.SendGetHeaders(peer);
        }