Microsoft.Protocols.TestTools.StackSdk.RemoteDesktop.Rdpeudp.RdpeudpServerSocket.ExpectSynPacket C# (CSharp) Method

ExpectSynPacket() public method

Expect a Syn Packet
public ExpectSynPacket ( System.TimeSpan timeout ) : RdpeudpPacket
timeout System.TimeSpan
return RdpeudpPacket
        public RdpeudpPacket ExpectSynPacket(TimeSpan timeout)
        {
            if (Connected) return null;
            DateTime endtime = DateTime.Now + timeout;
            while (DateTime.Now < endtime)
            {
                lock (unProcessedPacketBuffer)
                {
                    for (int i=0; i < unProcessedPacketBuffer.Count; i++)
                    {
                        RdpeudpPacket eudpPacket = unProcessedPacketBuffer[i];
                        RDPUDP_FLAG expectFlag = RDPUDP_FLAG.RDPUDP_FLAG_SYN;
                        if (this.TransMode == TransportMode.Lossy)
                        {
                            expectFlag |= RDPUDP_FLAG.RDPUDP_FLAG_SYNLOSSY;
                        }
                        if (eudpPacket.fecHeader.uFlags.HasFlag(expectFlag))
                        {
                            unProcessedPacketBuffer.RemoveAt(i);

                            // Analyse the SYN packet.
                            ProcessSynPacket(eudpPacket);

                            return eudpPacket;
                        }
                    }

                }
                // If not receive a Packet, wait a while
                Thread.Sleep(RdpeudpSocketConfig.ReceivingInterval);
            }
            return null;
        }