Exemple #1
0
        public PacketStream GetNextStreamDirection()
        {
            if (curDirection == PacketDirection.PACKET_DIRECTION_INCOMING)
            {
                curDirection = PacketDirection.PACKET_DIRECTION_OUTGOING;
            }
            else if (curDirection == PacketDirection.PACKET_DIRECTION_OUTGOING)
            {
                curDirection = PacketDirection.PACKET_DIRECTION_INCOMING;
            }
            else if (curDirection == PacketDirection.PACKET_DIRECTION_INVALID)
            {
                IPPacket pktIn = null, pktOut = null;

                if (streamIn.Packets.Count > 0)
                {
                    pktIn = streamIn.Packets[0];

                    if (streamOut.Packets.Count > 0)
                    {
                        pktOut = streamOut.Packets[0];

                        // FIXME: is this check correct for the earliest packet?
                        if (pktIn.CompareTo(pktOut) < 0)
                        {
                            curDirection = PacketDirection.PACKET_DIRECTION_INCOMING;
                        }
                        else
                        {
                            curDirection = PacketDirection.PACKET_DIRECTION_OUTGOING;
                        }
                    }
                }

                if (curDirection == PacketDirection.PACKET_DIRECTION_INVALID)
                {
                    if (pktIn != null)
                    {
                        curDirection = PacketDirection.PACKET_DIRECTION_INCOMING;
                    }
                    else
                    {
                        curDirection = PacketDirection.PACKET_DIRECTION_OUTGOING;
                    }
                }
            }

            if (curDirection == PacketDirection.PACKET_DIRECTION_INCOMING)
            {
                return(streamIn);
            }
            else
            {
                return(streamOut);
            }
        }