Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 82291c9e authored by Xiao Ma's avatar Xiao Ma Committed by android-build-merger
Browse files

Merge "Separate the timeout behavior from PacketRetransmittingState class."...

Merge "Separate the timeout behavior from PacketRetransmittingState class." am: 940b8967 am: df9aab85
am: 178df026

Change-Id: I74b7471689177e9fd45485f4b3d47badd61e09de
parents 72799378 178df026
Loading
Loading
Loading
Loading
+44 −19
Original line number Original line Diff line number Diff line
@@ -829,6 +829,42 @@ public class DhcpClient extends StateMachine {
                (leaseTimeMillis > 0) ? SystemClock.elapsedRealtime() + leaseTimeMillis : 0;
                (leaseTimeMillis > 0) ? SystemClock.elapsedRealtime() + leaseTimeMillis : 0;
    }
    }


    abstract class TimeoutState extends LoggingState {
        protected int mTimeout = 0;

        @Override
        public void enter() {
            super.enter();
            maybeInitTimeout();
        }

        @Override
        public boolean processMessage(Message message) {
            super.processMessage(message);
            switch (message.what) {
                case CMD_TIMEOUT:
                    timeout();
                    return HANDLED;
                default:
                    return NOT_HANDLED;
            }
        }

        @Override
        public void exit() {
            super.exit();
            mTimeoutAlarm.cancel();
        }

        protected abstract void timeout();
        private void maybeInitTimeout() {
            if (mTimeout > 0) {
                long alarmTime = SystemClock.elapsedRealtime() + mTimeout;
                mTimeoutAlarm.schedule(alarmTime);
            }
        }
    }

    /**
    /**
     * Retransmits packets using jittered exponential backoff with an optional timeout. Packet
     * Retransmits packets using jittered exponential backoff with an optional timeout. Packet
     * transmission is triggered by CMD_KICK, which is sent by an AlarmManager alarm. If a subclass
     * transmission is triggered by CMD_KICK, which is sent by an AlarmManager alarm. If a subclass
@@ -840,22 +876,22 @@ public class DhcpClient extends StateMachine {
     * packet needs to be transmitted, and receivePacket, which is triggered by CMD_RECEIVED_PACKET
     * packet needs to be transmitted, and receivePacket, which is triggered by CMD_RECEIVED_PACKET
     * sent by the receive thread. They may also set mTimeout and implement timeout.
     * sent by the receive thread. They may also set mTimeout and implement timeout.
     */
     */
    abstract class PacketRetransmittingState extends LoggingState {
    abstract class PacketRetransmittingState extends TimeoutState {

        private int mTimer;
        private int mTimer;
        protected int mTimeout = 0;


        @Override
        @Override
        public void enter() {
        public void enter() {
            super.enter();
            super.enter();
            initTimer();
            initTimer();
            maybeInitTimeout();
            sendMessage(CMD_KICK);
            sendMessage(CMD_KICK);
        }
        }


        @Override
        @Override
        public boolean processMessage(Message message) {
        public boolean processMessage(Message message) {
            super.processMessage(message);
            if (super.processMessage(message) == HANDLED) {
                return HANDLED;
            }

            switch (message.what) {
            switch (message.what) {
                case CMD_KICK:
                case CMD_KICK:
                    sendPacket();
                    sendPacket();
@@ -864,9 +900,6 @@ public class DhcpClient extends StateMachine {
                case CMD_RECEIVED_PACKET:
                case CMD_RECEIVED_PACKET:
                    receivePacket((DhcpPacket) message.obj);
                    receivePacket((DhcpPacket) message.obj);
                    return HANDLED;
                    return HANDLED;
                case CMD_TIMEOUT:
                    timeout();
                    return HANDLED;
                default:
                default:
                    return NOT_HANDLED;
                    return NOT_HANDLED;
            }
            }
@@ -876,11 +909,10 @@ public class DhcpClient extends StateMachine {
        public void exit() {
        public void exit() {
            super.exit();
            super.exit();
            mKickAlarm.cancel();
            mKickAlarm.cancel();
            mTimeoutAlarm.cancel();
        }
        }


        abstract protected boolean sendPacket();
        protected abstract boolean sendPacket();
        abstract protected void receivePacket(DhcpPacket packet);
        protected abstract void receivePacket(DhcpPacket packet);
        protected void timeout() {}
        protected void timeout() {}


        protected void initTimer() {
        protected void initTimer() {
@@ -903,13 +935,6 @@ public class DhcpClient extends StateMachine {
                mTimer = MAX_TIMEOUT_MS;
                mTimer = MAX_TIMEOUT_MS;
            }
            }
        }
        }

        protected void maybeInitTimeout() {
            if (mTimeout > 0) {
                long alarmTime = SystemClock.elapsedRealtime() + mTimeout;
                mTimeoutAlarm.schedule(alarmTime);
            }
        }
    }
    }


    class ObtainingConfigurationState extends LoggingState {
    class ObtainingConfigurationState extends LoggingState {
@@ -1167,7 +1192,7 @@ public class DhcpClient extends StateMachine {
            startNewTransaction();
            startNewTransaction();
        }
        }


        abstract protected Inet4Address packetDestination();
        protected abstract Inet4Address packetDestination();


        protected boolean sendPacket() {
        protected boolean sendPacket() {
            return sendRequestPacket(
            return sendRequestPacket(