public new void Dispose() { if (!IsDisposed()) { SendPacket packet = mPacket; mPacket = null; SendDelivery delivery = mDelivery; mDelivery = null; Sender sender = mSender; mSender = null; if (packet != null && delivery != null) { if (mCursor < mTotal) { packet.EndPacket(); packet.SetSuccess(false); delivery.PostSendProgress(packet, 1); } } if (sender != null) { sender.Dispose(); } try { SetBuffer(null, 0, 0); } catch (Exception) { } // Clear while (mQueue.TryDequeue(out packet)) { } base.Dispose(); } }
/// <summary> /// Send next packet /// </summary> private void SendNext() { SendPacket packet = mPacket; mPacket = null; // Notify if (packet != null) { // Set Status mStatus = mCursor == mTotal; // End packet.SetSuccess(mStatus); packet.EndPacket(); // Post End mCursor = mTotal; NotifyProgress(); } // Take a request from the queue. mSending = mQueue.TryDequeue(out packet); if (mSending && packet != null) { // Cancel if (packet.IsCanceled()) { SendNext(); } else { // Set Packet mPacket = packet; // Start Send SendHead(); } } }
public void PostSendEnd(SendPacket entity, bool isSuccess) { entity.SetSuccess(isSuccess); PostSend(new SendDeliveryRunnable(entity, 0, true)); }
public void PostSendEnd(SendPacket entity, bool isSuccess) { entity.SetSuccess(isSuccess); mPoster.Execute(new SendDeliveryRunnable(entity, null, true)); }