diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-01-07 12:21:25 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-04-16 16:06:00 +0000 |
| commit | 9d3d0aa6982c638b38591b937d3b28b013c9766f (patch) | |
| tree | abbf8f9d4f39822b9aa4b6a9bc6cf3b431b7b385 /android/src | |
| parent | 21c86e53ed33f96d933e6c49e88969f899250dd8 (diff) | |
| download | mullvadvpn-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.kt | 38 |
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() + } + } + } +} |
