Universal.Torrent.Client.NetworkIO.FinishReceive C# (CSharp) Method

FinishReceive() private static method

private static FinishReceive ( AsyncIOState data ) : void
data AsyncIOState
return void
        private static void FinishReceive(AsyncIOState data)
        {
            try
            {
                var transferred = (int) data.Transferred;
                if (transferred == 0)
                {
                    data.Callback(false, 0, data.State);
                    TransferCache.Enqueue(data);
                }
                else
                {
                    data.PeerMonitor?.BytesReceived(transferred, data.TransferType);
                    data.ManagerMonitor?.BytesReceived(transferred, data.TransferType);

                    data.Offset += transferred;
                    data.Remaining -= transferred;
                    if (data.Remaining == 0)
                    {
                        data.Callback(true, data.Count, data.State);
                        TransferCache.Enqueue(data);
                    }
                    else
                    {
                        lock (ReceiveQueue)
                            ReceiveOrEnqueue(data);
                    }
                }
            }
            catch
            {
                data.Callback(false, 0, data.State);
                TransferCache.Enqueue(data);
            }
        }