コード例 #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());
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }