public CreateDeepCopy ( ) : |
||
return |
public ServerAsyncEventArgs CreateDeepCopy()
{
var e2 = EventArgsManager.Get();
e2.CopyAddressesFrom(this);
e2.offsetOffset = offsetOffset;
e2.count = count;
e2.AllocateBuffer();
e2.bytesTransferred = bytesTransferred;
e2.UserTokenForSending = UserTokenForSending;
System.Buffer.BlockCopy(Buffer, Offset, e2.Buffer, e2.Offset, e2.Count);
return e2;
}
private ArraySegment <byte> Detach(ref ServerAsyncEventArgs e, int size) { ServerAsyncEventArgs serverAsyncEventArgs = null; if (e.BytesTransferred > size) { serverAsyncEventArgs = e.CreateDeepCopy(); } ArraySegment <byte> result = e.DetachBuffer(); EventArgsManager.Put(ref e); if (serverAsyncEventArgs != null) { e = serverAsyncEventArgs; } return(result); }