private synchronized void processInternalEvent()
    {
        // this is a constraint that prevents an infinite loop
        // Compare between 2 floating point numbers. This might be incorrect
        // for some hardware platform.
        if ( lastUpdateTime_ == GridSim.clock() ) {
            return;
        }

        lastUpdateTime_ = GridSim.clock();

        if (q_.size() == 0) {
            return;
        }
        else if (q_.size() == 1) {
            deque( (Packet) q_.remove(0) );
        }
        else
        {
            deque( (Packet)q_.remove(0) );
            sendInternalEvent(super.delay_ / super.MILLI_SEC);  // delay in ms
        }
    }