private void beginFlush_Completed(object sender, SocketAsyncEventArgs e) { SocketFlushAsyncResult flushAsyncResult = e.UserToken as SocketFlushAsyncResult; flushAsyncResult.UpdateStatusToComplete(); flushAsyncResult.NotifyCallbackWhenAvailable(); if (e.SocketError != SocketError.Success) { throw new TTransportException(TTransportException.ExceptionType.Unknown, e.SocketError.ToString()); } }
public override IAsyncResult BeginFlush(AsyncCallback callback, object state, uint seqID) { byte[] data = outputStream.Value.ToArray(); m_StreamPool.Enqueue(outputStream.Value); outputStream.Value = null; SocketFlushAsyncResult flushAsyncResult = new SocketFlushAsyncResult(callback, state); flushAsyncResult.SeqID = seqID; m_Socket.SendAsync(data); flushAsyncResult.UpdateStatusToComplete(); flushAsyncResult.NotifyCallbackWhenAvailable(); LogService.Logger.Log(LogService.LogType.LT_DEBUG, "socket flushed"); return(flushAsyncResult); }
public override IAsyncResult BeginFlush(AsyncCallback callback, object state, UInt32 seqID) { // Extract request and reset buffer byte[] data = outputStream.Value.ToArray(); m_StreamPool.Enqueue(outputStream.Value); outputStream.Value = null; SocketFlushAsyncResult flushAsyncResult = new SocketFlushAsyncResult(callback, state); flushAsyncResult.SeqID = seqID; SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs(); socketEventArg.UserToken = flushAsyncResult; socketEventArg.Completed += beginFlush_Completed; socketEventArg.SetBuffer(data, 0, data.Length); s_IoWriteTaskFactory.StartNew(() => { socket.SendAsync(socketEventArg); }); return(flushAsyncResult); }