summaryrefslogtreecommitdiffhomepage
path: root/ui/src/main/java/com/wireguard/android/BootShutdownReceiver.kt
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2020-03-26 01:55:44 -0600
committerJason A. Donenfeld <Jason@zx2c4.com>2020-03-26 01:55:44 -0600
commit85dd303c88f636024ce8b32e17ff76bcb3a19911 (patch)
tree4608314368a6b72262c1f97b67bd5b1d25d9a6eb /ui/src/main/java/com/wireguard/android/BootShutdownReceiver.kt
parent2958144fd0082489a996fbc7a11572f3edbe42eb (diff)
ui: root: rewrite in kotlin
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'ui/src/main/java/com/wireguard/android/BootShutdownReceiver.kt')
-rw-r--r--ui/src/main/java/com/wireguard/android/BootShutdownReceiver.kt34
1 files changed, 34 insertions, 0 deletions
diff --git a/ui/src/main/java/com/wireguard/android/BootShutdownReceiver.kt b/ui/src/main/java/com/wireguard/android/BootShutdownReceiver.kt
new file mode 100644
index 00000000..e9759143
--- /dev/null
+++ b/ui/src/main/java/com/wireguard/android/BootShutdownReceiver.kt
@@ -0,0 +1,34 @@
+/*
+ * Copyright © 2017-2019 WireGuard LLC. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.wireguard.android
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.util.Log
+import com.wireguard.android.backend.Backend
+import com.wireguard.android.backend.WgQuickBackend
+import com.wireguard.android.util.ExceptionLoggers
+
+class BootShutdownReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context, intent: Intent) {
+ Application.getBackendAsync().thenAccept { backend: Backend? ->
+ if (backend !is WgQuickBackend) return@thenAccept
+ val action = intent.action ?: return@thenAccept
+ val tunnelManager = Application.getTunnelManager()
+ if (Intent.ACTION_BOOT_COMPLETED == action) {
+ Log.i(TAG, "Broadcast receiver restoring state (boot)")
+ tunnelManager.restoreState(false).whenComplete(ExceptionLoggers.D)
+ } else if (Intent.ACTION_SHUTDOWN == action) {
+ Log.i(TAG, "Broadcast receiver saving state (shutdown)")
+ tunnelManager.saveState()
+ }
+ }
+ }
+
+ companion object {
+ private val TAG = "WireGuard/" + BootShutdownReceiver::class.java.simpleName
+ }
+}