summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-01-07 12:21:25 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-04-16 16:06:00 +0000
commit9d3d0aa6982c638b38591b937d3b28b013c9766f (patch)
treeabbf8f9d4f39822b9aa4b6a9bc6cf3b431b7b385 /android/src
parent21c86e53ed33f96d933e6c49e88969f899250dd8 (diff)
downloadmullvadvpn-9d3d0aa6982c638b38591b937d3b28b013c9766f.tar.xz
mullvadvpn-9d3d0aa6982c638b38591b937d3b28b013c9766f.zip
Create new service side `RelayListListener`
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/RelayListListener.kt38
1 files changed, 38 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/RelayListListener.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/RelayListListener.kt
new file mode 100644
index 0000000000..866ffe46c8
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/RelayListListener.kt
@@ -0,0 +1,38 @@
+package net.mullvad.mullvadvpn.service.endpoint
+
+import net.mullvad.mullvadvpn.model.RelayList
+import net.mullvad.mullvadvpn.service.MullvadDaemon
+
+class RelayListListener(endpoint: ServiceEndpoint) {
+ val daemon = endpoint.intermittentDaemon
+
+ var relayList: RelayList? = null
+ private set
+
+ init {
+ daemon.registerListener(this) { newDaemon ->
+ newDaemon?.let { daemon ->
+ setUpListener(daemon)
+ fetchInitialRelayList(daemon)
+ }
+ }
+ }
+
+ fun onDestroy() {
+ daemon.unregisterListener(this)
+ }
+
+ private fun setUpListener(daemon: MullvadDaemon) {
+ daemon.onRelayListChange = { relayLocations ->
+ relayList = relayLocations
+ }
+ }
+
+ private fun fetchInitialRelayList(daemon: MullvadDaemon) {
+ synchronized(this) {
+ if (relayList == null) {
+ relayList = daemon.getRelayLocations()
+ }
+ }
+ }
+}