summaryrefslogtreecommitdiffhomepage
path: root/ui/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'ui/src/main')
-rw-r--r--ui/src/main/java/com/wireguard/android/util/AsyncWorker.java66
-rw-r--r--ui/src/main/java/com/wireguard/android/util/AsyncWorker.kt43
2 files changed, 43 insertions, 66 deletions
diff --git a/ui/src/main/java/com/wireguard/android/util/AsyncWorker.java b/ui/src/main/java/com/wireguard/android/util/AsyncWorker.java
deleted file mode 100644
index 461e2b64..00000000
--- a/ui/src/main/java/com/wireguard/android/util/AsyncWorker.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright © 2017-2019 WireGuard LLC. All Rights Reserved.
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package com.wireguard.android.util;
-
-import android.os.Handler;
-
-import com.wireguard.util.NonNullForAll;
-
-import java.util.concurrent.Executor;
-
-import java9.util.concurrent.CompletableFuture;
-import java9.util.concurrent.CompletionStage;
-
-/**
- * Helper class for running asynchronous tasks and ensuring they are completed on the main thread.
- */
-
-@NonNullForAll
-public class AsyncWorker {
- private final Executor executor;
- private final Handler handler;
-
- public AsyncWorker(final Executor executor, final Handler handler) {
- this.executor = executor;
- this.handler = handler;
- }
-
- public CompletionStage<Void> runAsync(final AsyncRunnable<?> runnable) {
- final CompletableFuture<Void> future = new CompletableFuture<>();
- executor.execute(() -> {
- try {
- runnable.run();
- handler.post(() -> future.complete(null));
- } catch (final Throwable t) {
- handler.post(() -> future.completeExceptionally(t));
- }
- });
- return future;
- }
-
- public <T> CompletionStage<T> supplyAsync(final AsyncSupplier<T, ?> supplier) {
- final CompletableFuture<T> future = new CompletableFuture<>();
- executor.execute(() -> {
- try {
- final T result = supplier.get();
- handler.post(() -> future.complete(result));
- } catch (final Throwable t) {
- handler.post(() -> future.completeExceptionally(t));
- }
- });
- return future;
- }
-
- @FunctionalInterface
- public interface AsyncRunnable<E extends Throwable> {
- void run() throws E;
- }
-
- @FunctionalInterface
- public interface AsyncSupplier<T, E extends Throwable> {
- T get() throws E;
- }
-}
diff --git a/ui/src/main/java/com/wireguard/android/util/AsyncWorker.kt b/ui/src/main/java/com/wireguard/android/util/AsyncWorker.kt
new file mode 100644
index 00000000..fd5eee2f
--- /dev/null
+++ b/ui/src/main/java/com/wireguard/android/util/AsyncWorker.kt
@@ -0,0 +1,43 @@
+/*
+ * Copyright © 2017-2020 WireGuard LLC. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.wireguard.android.util
+
+import android.os.Handler
+import java.util.concurrent.Executor
+import java9.util.concurrent.CompletableFuture
+import java9.util.concurrent.CompletionStage
+
+/**
+ * Helper class for running asynchronous tasks and ensuring they are completed on the main thread.
+ */
+
+class AsyncWorker(private val executor: Executor, private val handler: Handler) {
+
+ fun runAsync(run: () -> Unit): CompletionStage<Void> {
+ val future = CompletableFuture<Void>()
+ executor.execute {
+ try {
+ run()
+ handler.post { future.complete(null) }
+ } catch (t: Throwable) {
+ handler.post { future.completeExceptionally(t) }
+ }
+ }
+ return future
+ }
+
+ fun <T> supplyAsync(get: () -> T?): CompletionStage<T> {
+ val future = CompletableFuture<T>()
+ executor.execute {
+ try {
+ val result = get()
+ handler.post { future.complete(result) }
+ } catch (t: Throwable) {
+ handler.post { future.completeExceptionally(t) }
+ }
+ }
+ return future
+ }
+}