aboutsummaryrefslogtreecommitdiff
path: root/src/java/com/android/internal/net/ipsec/ike/AbstractSessionStateMachine.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/com/android/internal/net/ipsec/ike/AbstractSessionStateMachine.java')
-rw-r--r--src/java/com/android/internal/net/ipsec/ike/AbstractSessionStateMachine.java199
1 files changed, 0 insertions, 199 deletions
diff --git a/src/java/com/android/internal/net/ipsec/ike/AbstractSessionStateMachine.java b/src/java/com/android/internal/net/ipsec/ike/AbstractSessionStateMachine.java
deleted file mode 100644
index 82122847..00000000
--- a/src/java/com/android/internal/net/ipsec/ike/AbstractSessionStateMachine.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.internal.net.ipsec.ike;
-
-import static android.net.ipsec.ike.IkeManager.getIkeLog;
-
-import android.os.Looper;
-import android.os.Message;
-import android.util.SparseArray;
-
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.State;
-import com.android.internal.util.StateMachine;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * This class represents the common information of both IkeSessionStateMachine and
- * ChildSessionStateMachine
- */
-abstract class AbstractSessionStateMachine extends StateMachine {
- private static final int CMD_SHARED_BASE = 0;
- protected static final int CMD_CATEGORY_SIZE = 100;
-
- /**
- * Commands of Child local request that will be used in both IkeSessionStateMachine and
- * ChildSessionStateMachine.
- */
- protected static final int CMD_CHILD_LOCAL_REQUEST_BASE = CMD_SHARED_BASE;
-
- @VisibleForTesting
- static final int CMD_LOCAL_REQUEST_CREATE_CHILD = CMD_CHILD_LOCAL_REQUEST_BASE + 1;
-
- @VisibleForTesting
- static final int CMD_LOCAL_REQUEST_DELETE_CHILD = CMD_CHILD_LOCAL_REQUEST_BASE + 2;
-
- @VisibleForTesting
- static final int CMD_LOCAL_REQUEST_REKEY_CHILD = CMD_CHILD_LOCAL_REQUEST_BASE + 3;
-
- /** Timeout commands. */
- protected static final int CMD_TIMEOUT_BASE = CMD_SHARED_BASE + CMD_CATEGORY_SIZE;
- /** Timeout when the remote side fails to send a Rekey-Delete request. */
- @VisibleForTesting static final int TIMEOUT_REKEY_REMOTE_DELETE = CMD_TIMEOUT_BASE + 1;
-
- /** Commands for testing only */
- protected static final int CMD_TEST_BASE = CMD_SHARED_BASE + 2 * CMD_CATEGORY_SIZE;
- /** Force state machine to a target state for testing purposes. */
- @VisibleForTesting static final int CMD_FORCE_TRANSITION = CMD_TEST_BASE + 1;
-
- /** Private commands for subclasses */
- protected static final int CMD_PRIVATE_BASE = CMD_SHARED_BASE + 3 * CMD_CATEGORY_SIZE;
-
- protected static final SparseArray<String> SHARED_CMD_TO_STR;
-
- static {
- SHARED_CMD_TO_STR = new SparseArray<>();
- SHARED_CMD_TO_STR.put(CMD_LOCAL_REQUEST_CREATE_CHILD, "Create Child");
- SHARED_CMD_TO_STR.put(CMD_LOCAL_REQUEST_DELETE_CHILD, "Delete Child");
- SHARED_CMD_TO_STR.put(CMD_LOCAL_REQUEST_REKEY_CHILD, "Rekey Child");
- SHARED_CMD_TO_STR.put(TIMEOUT_REKEY_REMOTE_DELETE, "Timout rekey remote delete");
- SHARED_CMD_TO_STR.put(CMD_FORCE_TRANSITION, "Force transition");
- }
-
- // Use a value greater than the retransmit-failure timeout.
- static final long REKEY_DELETE_TIMEOUT_MS = TimeUnit.SECONDS.toMillis(180L);
-
- private final String mLogTag;
-
- protected AbstractSessionStateMachine(String name, Looper looper) {
- super(name, looper);
- mLogTag = name;
- }
-
- /**
- * Top level state for handling uncaught exceptions for all subclasses.
- *
- * <p>All other state in SessionStateMachine MUST extend this state.
- *
- * <p>Only errors this state should catch are unexpected internal failures. Since this may be
- * run in critical processes, it must never take down the process if it fails
- */
- protected abstract class ExceptionHandlerBase extends State {
- @Override
- public final void enter() {
- try {
- enterState();
- } catch (RuntimeException e) {
- cleanUpAndQuit(e);
- }
- }
-
- @Override
- public final boolean processMessage(Message message) {
- try {
- String cmdName = SHARED_CMD_TO_STR.get(message.what);
- if (cmdName == null) {
- cmdName = getCmdString(message.what);
- }
-
- // Unrecognized message will be logged by super class(Android StateMachine)
- if (cmdName != null) logd("processStateMessage: " + cmdName);
-
- return processStateMessage(message);
- } catch (RuntimeException e) {
- cleanUpAndQuit(e);
- return HANDLED;
- }
- }
-
- @Override
- public final void exit() {
- try {
- exitState();
- } catch (RuntimeException e) {
- cleanUpAndQuit(e);
- }
- }
-
- protected void enterState() {
- // Do nothing. Subclasses MUST override it if they care.
- }
-
- protected boolean processStateMessage(Message message) {
- return NOT_HANDLED;
- }
-
- protected void exitState() {
- // Do nothing. Subclasses MUST override it if they care.
- }
-
- protected abstract void cleanUpAndQuit(RuntimeException e);
-
- protected abstract String getCmdString(int cmd);
- }
-
- @Override
- protected void log(String s) {
- getIkeLog().d(mLogTag, s);
- }
-
- @Override
- protected void logd(String s) {
- getIkeLog().d(mLogTag, s);
- }
-
- protected void logd(String s, Throwable e) {
- getIkeLog().d(mLogTag, s, e);
- }
-
- @Override
- protected void logv(String s) {
- getIkeLog().v(mLogTag, s);
- }
-
- @Override
- protected void logi(String s) {
- getIkeLog().i(mLogTag, s);
- }
-
- protected void logi(String s, Throwable cause) {
- getIkeLog().i(mLogTag, s, cause);
- }
-
- @Override
- protected void logw(String s) {
- getIkeLog().w(mLogTag, s);
- }
-
- @Override
- protected void loge(String s) {
- getIkeLog().e(mLogTag, s);
- }
-
- @Override
- protected void loge(String s, Throwable e) {
- getIkeLog().e(mLogTag, s, e);
- }
-
- protected void logWtf(String s) {
- getIkeLog().wtf(mLogTag, s);
- }
-
- protected void logWtf(String s, Throwable e) {
- getIkeLog().wtf(mLogTag, s, e);
- }
-}