Beispiel #1
0
        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);
        }