MonoTorrent.Client.ConnectionManager.ProcessQueue C# (CSharp) Метод

ProcessQueue() приватный Метод

private ProcessQueue ( MonoTorrent.Client.PeerId id ) : void
id MonoTorrent.Client.PeerId The peer whose message queue you want to start processing
Результат void
        internal void ProcessQueue(PeerId id)
        {
            if (id.QueueLength == 0)
            {
                id.ProcessingQueue = false;
                return;
            }

            PeerMessage msg = id.Dequeue();
            if (msg is PieceMessage)
            {
                using (ManualResetEvent handle = new ManualResetEvent(false)) {
                    PieceMessage pm = (PieceMessage)msg;
                    pm.Data = BufferManager.EmptyBuffer;
                    ClientEngine.BufferManager.GetBuffer(ref pm.Data, pm.ByteLength);
                    engine.DiskManager.QueueRead(id.TorrentManager, pm.StartOffset + ((long) pm.PieceIndex * id.TorrentManager.Torrent.PieceLength), pm.Data, pm.RequestLength, delegate
                    {
                        handle.Set();
                    });
                    handle.WaitOne();
                    id.PiecesSent++;
                }
            }
            try
            {
                SendMessage(id, msg, this.messageSentCallback);
            }
            catch (Exception e)
            {
                CleanupSocket(id, "Exception calling SendMessage: " + e.Message);
            }
        }

Usage Example

Пример #1
0
 internal void Enqueue(PeerMessage msg)
 {
     sendQueue.Add(msg);
     if (!ProcessingQueue)
     {
         ProcessingQueue = true;
         ConnectionManager.ProcessQueue(this);
     }
 }
All Usage Examples Of MonoTorrent.Client.ConnectionManager::ProcessQueue