aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/app/src/main/java/com/wireguard/android/util/Topic.java
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-06-05 01:49:54 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2018-06-05 02:02:09 +0200
commit27072972ab944467bf7286afe4bfd89a4b795753 (patch)
tree54f8cba070fe72a4ba96d61bade23f434a894f98 /app/src/main/java/com/wireguard/android/util/Topic.java
parentMainActivity: style (diff)
downloadwireguard-android-27072972ab944467bf7286afe4bfd89a4b795753.tar.xz
wireguard-android-27072972ab944467bf7286afe4bfd89a4b795753.zip
DarkMode: move to shared preferences listener
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to '')
-rw-r--r--app/src/main/java/com/wireguard/android/util/Topic.java109
1 files changed, 0 insertions, 109 deletions
diff --git a/app/src/main/java/com/wireguard/android/util/Topic.java b/app/src/main/java/com/wireguard/android/util/Topic.java
deleted file mode 100644
index 6d8080cf..00000000
--- a/app/src/main/java/com/wireguard/android/util/Topic.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright © 2017 John Wu <topjohnwu@gmail.com>
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-package com.wireguard.android.util;
-
-import java.lang.ref.WeakReference;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.List;
-
-public class Topic {
-
- private static final int NON_INIT = 0;
- private static final int PENDING = 1;
- private static final int PUBLISHED = 2;
-
- private int state = NON_INIT;
- private List<WeakReference<Subscriber>> subscribers;
- private Object[] results;
-
- public Topic() {
- subscribers = new SyncArrayList<>();
- }
-
- public synchronized void subscribe(final Subscriber sub) {
- subscribers.add(new WeakReference<>(sub));
- }
-
- public synchronized void unsubscribe() {
- subscribers = new SyncArrayList<>();
- }
-
- public synchronized void unsubscribe(final Subscriber sub) {
- List<WeakReference<Subscriber>> subs = subscribers;
- subscribers = new ArrayList<>();
- for (final WeakReference<Subscriber> subscriber : subs) {
- if (subscriber.get() != null && subscriber.get() != sub)
- subscribers.add(subscriber);
- }
- }
-
- public void reset() {
- state = NON_INIT;
- results = null;
- }
-
- public boolean isPublished() {
- return state == PUBLISHED;
- }
-
- public void publish() {
- publish(true);
- }
-
- public void publish(boolean record, Object... results) {
- if (record)
- state = PUBLISHED;
- this.results = results;
- // Snapshot
- List<WeakReference<Subscriber>> subs = subscribers;
- for (final WeakReference<Subscriber> subscriber : subs) {
- if (subscriber != null && subscriber.get() != null)
- subscriber.get().onTopicPublished(this);
- }
- }
-
- public Object[] getResults() {
- return results;
- }
-
- public boolean isPending() {
- return state == PENDING;
- }
-
- public void setPending() {
- state = PENDING;
- }
-
- public interface Subscriber {
- default void subscribeTopics() {
- for (final Topic topic : getSubscription()) {
- if (topic.isPublished()) {
- onTopicPublished(topic);
- }
- topic.subscribe(this);
- }
- }
- default void unsubscribeTopics() {
- for (final Topic event : getSubscription()) {
- event.unsubscribe(this);
- }
- }
- void onTopicPublished(Topic topic);
- Topic[] getSubscription();
- }
-
- private static class SyncArrayList<E> extends ArrayList<E> {
- @Override
- public synchronized boolean add(final E e) {
- return super.add(e);
- }
- }
-}