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); }
private ArraySegment <byte> Detach(ref ServerAsyncEventArgs e, int size) { ServerAsyncEventArgs copy = null; if (e.BytesTransferred > size) { copy = e.CreateDeepCopy(); } var result = e.DetachBuffer(); EventArgsManager.Put(ref e); if (copy != null) { e = copy; } return(result); }
private ArraySegment <byte> Dettach(Storage storage) { switch (storage) { case Storage.E1: return(e1.DetachBuffer()); case Storage.Buffer1: return(buffer1.Detach()); case Storage.Buffer2: return(buffer2.Detach()); case Storage.None: return(new ArraySegment <byte>()); default: throw new ArgumentException(); } }
private ArraySegment<byte> Detach(ref ServerAsyncEventArgs e, int size) { ServerAsyncEventArgs copy = null; if (e.BytesTransferred > size) copy = e.CreateDeepCopy(); var result = e.DetachBuffer(); EventArgsManager.Put(ref e); if (copy != null) e = copy; return result; }