Add passing the VPN connection status when rebinding to the service

This commit is contained in:
albexk 2023-12-05 16:10:29 +03:00
parent 5835a756ce
commit dc6e3ec53b
8 changed files with 65 additions and 28 deletions

View file

@ -1,5 +1,6 @@
package org.amnezia.vpn.protocol
// keep synchronized with client/platforms/android/android_controller.h ConnectionState
enum class ProtocolState {
CONNECTED,
CONNECTING,

View file

@ -2,19 +2,19 @@ package org.amnezia.vpn.protocol
import android.os.Bundle
private const val IS_CONNECTED_KEY = "isConnected"
private const val STATE_KEY = "state"
@Suppress("DataClassPrivateConstructor")
data class Status private constructor(
val isConnected: Boolean = false
val state: ProtocolState
) {
private constructor(builder: Builder) : this(builder.isConnected)
private constructor(builder: Builder) : this(builder.state)
class Builder {
var isConnected: Boolean = false
lateinit var state: ProtocolState
private set
fun setConnected(isConnected: Boolean) = apply { this.isConnected = isConnected }
fun setState(state: ProtocolState) = apply { this.state = state }
fun build(): Status = Status(this)
}
@ -24,11 +24,11 @@ data class Status private constructor(
}
}
fun Bundle.putStatus(statistics: Status) {
putBoolean(IS_CONNECTED_KEY, statistics.isConnected)
fun Bundle.putStatus(status: Status) {
putInt(STATE_KEY, status.state.ordinal)
}
fun Bundle.getStatus(): Status =
Status.build {
setConnected(getBoolean(IS_CONNECTED_KEY))
setState(ProtocolState.entries[getInt(STATE_KEY)])
}