SuperSocket.SocketEngine.AsyncSocketSession.ProcessReceive C# (CSharp) Method

ProcessReceive() public method

public ProcessReceive ( SocketAsyncEventArgs e ) : void
e System.Net.Sockets.SocketAsyncEventArgs
return void
        public void ProcessReceive(SocketAsyncEventArgs e)
        {
            var state = e.UserToken as SaeState;

            if (!ProcessCompleted(e))
            {
                e.UserToken = null;
                m_SaePoolForReceive.Return(state);
                OnReceiveError(CloseReason.ClientClosing);
                return;
            }

            OnReceiveEnded();

            var result = ProcessReceivedData(new ArraySegment<byte>(e.Buffer, e.Offset, e.BytesTransferred), state);

            if (result.State == ProcessState.Cached)
            {
                e.UserToken = null;
                var newState = m_SaePoolForReceive.Get();
                e = newState.Sae;
                e.UserToken = newState;
                newState.SocketSession = this;
            }

            //read the next block of data sent from the client
            StartReceive(e);
        }