Exemplo n.º 1
0
        public Bytes[] ReadV()
        {
            if (tcpSession.CurrentState < TcpState.ESTABLISHED)
            {
                state = State.Closed;
                return(null); // connection closed
            }

            Bytes[] data = tcpSession.ReadV();

            if (data == null)
            {
                if (tcpSession.CurrentState != TcpState.ESTABLISHED)
                {
                    state = State.Closed;
                    return(null); // connection closed
                }
                else
                {
                    // Must be in the ROReadResult state. Here, there is
                    // no ConnectionClosed message.
                    state = State.Zombie;
                    return(null); // no more data -> Zombie
                }
            }
            else
            {
                if (tcpSession.AckNow == true)
                {
                    tcpSession.SendPacket(TcpFlags.ACK, false);
                }
                return(data);
            }
        }