Exemplo n.º 1
0
        internal int RejectRequests(bool supportsFastPeer, List <int> amAllowedFastPieces)
        {
            lock (SendQueue) {
                int rejectedCount = 0;
                for (int i = 0; i < SendQueue.Count; i++)
                {
                    if (!(SendQueue[i] is PieceMessage msg))
                    {
                        continue;
                    }

                    // If the peer doesn't support fast peer, then we will never requeue the message
                    if (!(supportsFastPeer && ClientEngine.SupportsFastPeer))
                    {
                        SendQueue.RemoveAt(i);
                        i--;
                        rejectedCount++;
                        continue;
                    }

                    // If the peer supports fast peer, queue the message if it is an AllowedFast piece
                    // Otherwise send a reject message for the piece
                    if (amAllowedFastPieces.Contains(msg.PieceIndex))
                    {
                        continue;
                    }
                    else
                    {
                        rejectedCount++;
                        SendQueue[i] = new RejectRequestMessage(msg);
                    }
                }
                return(rejectedCount);
            }
        }
Exemplo n.º 2
0
 protected virtual void HandleRejectRequestMessage(PeerId id, RejectRequestMessage message)
 {
     id.TorrentManager.PieceManager.Picker.CancelRequest(id, message.PieceIndex, message.StartOffset, message.RequestLength);
 }
Exemplo n.º 3
0
 void peer_RejectRequestMessageReceived(object sender, RejectRequestMessage e)
 {
     ShowMessage("{0}:Received {1}", sender, e);
 }
Exemplo n.º 4
0
 protected virtual void HandleRejectRequestMessage(PeerId id, RejectRequestMessage message)
 {
     Manager.PieceManager.RequestRejected(id, new BlockInfo(message.PieceIndex, message.StartOffset, message.RequestLength));
 }
Exemplo n.º 5
0
 protected virtual void HandleRejectRequestMessage(PeerId id, RejectRequestMessage message)
 {
     id.TorrentManager.PieceManager.Picker.CancelRequest(id, message.PieceIndex, message.StartOffset,
                                                         message.RequestLength);
 }
Exemplo n.º 6
0
        /// <summary>
        /// Send reject request message asynchronously
        /// </summary>
        /// <param name="index">the index of piece</param>
        /// <param name="begin">the begin of piece</param>
        /// <param name="length">the length of piece</param>
        public void SendRejectRequestMessageAsync(int index, int begin, int length)
        {
            RejectRequestMessage message = new RejectRequestMessage(index, begin, length);

            SendMessageAsync(message);
        }