private void ReceiveEntity(byte[] buffer, int offset, int count) { // Set len mSurplusLen -= count; ReceivePacket packet = mReceivePacket; if (packet != null) { packet.Write(buffer, offset, count); // Notity progress float len = packet.GetLength(); float progress = (len - mSurplusLen) / len; // Post Callback ReceiveDelivery delivery = mReceiveDelivery; if (IsNotifyProgress(progress)) { // Notify if (delivery != null) { delivery.PostReceiveProgress(packet, mProgress); } } if (mSurplusLen <= 0) { // End packet.EndPacket(); // Notify if (delivery != null) { delivery.PostReceiveEnd(packet, mStatus); } // Set Null mReceivePacket = null; } } // Receive next entity ReceiveAsync(mSurplusLen); }
public new void Dispose() { if (!IsDisposed()) { mParser = null; ReceivePacket packet = mReceivePacket; mReceivePacket = null; Receiver receiver = mReceiver; mReceiver = null; ReceiveDelivery receiveDelivery = mReceiveDelivery; mReceiveDelivery = null; if (packet != null && receiveDelivery != null) { if (mSurplusLen > 0) { packet.EndPacket(); receiveDelivery.PostReceiveEnd(packet, false); } } BlinkDelivery blinkDelay = mBlinkDelivery; mBlinkDelivery = null; if (blinkDelay != null) { blinkDelay.PostBlinkDisconnect(); } if (receiver != null) { receiver.Dispose(); } SetBuffer(null, 0, 0); base.Dispose(); } }