private void FinishSend(object sender, SocketAsyncEventArgs e) { var session = e.UserToken as TcpSession ?? throw new ArgumentNullException(nameof(e.UserToken)); var sentEventArgs = new DataSentEventArgs(session, new ArraySegment <byte>(e.Buffer, e.Offset, e.BytesTransferred)); OnDataSent(sentEventArgs); session.OnDataSent(sentEventArgs); e.Completed -= FinishSend; e.SetBuffer(null, 0, 0); e.UserToken = null; socketEventPool.CheckIn(e); }
protected virtual void OnDataSent(DataSentEventArgs e) { DataSent?.Invoke(this, e); }
internal virtual void OnDataSent(DataSentEventArgs e) => DataSent?.Invoke(this, e);