Beispiel #1
0
    /**
     * Aplica round-robin: por cada enlace de entrada (cada cliente conectado), lee
     * un paquete (si puede), y lo procesa o lo agrega al Demultiplexer.
     */
    protected void RequestHandler()
    {
        IPEndPoint anyLink = new IPEndPoint(IPAddress.Any, 0);

        System.Random random = new System.Random();
        while (!config.OnExit())
        {
            byte [] payload = local.Receive(anyLink);
            if (payload != null && config.packetLossRatio <= random.NextDouble())
            {
                Packet packet = new Packet(payload);
                lagSimulator.Write(packet, timestamp);
            }
            Packet futurePacket = lagSimulator.Read(timestamp);
            if (futurePacket != null)
            {
                input.Write(futurePacket);
            }
        }
    }