fix(android): preserve measured profiles in member address details
This commit is contained in:
1 parent
3f7cfe1c86
commit
cb8e654639
3 files changed
+38
-20
No files matched your search
@@ -99,13 +99,22 @@ data class MemberDetail(val nodeId: Long, val name: String = "",
|
||||
val inviterId: Long? = null, val inviterName: String = "")
|
||||
|
||||
data class MemberAddr(val family: Int = 0, val protocol: String = "", val address: String = "",
|
||||
val port: Int = 0, val socketId: Int = 0, val addrType: Int = 0, val rtt: Int = 0) {
|
||||
val roleLabelRes: Int get() = when (addrType) {
|
||||
0 -> R.string.address_local; 1 -> R.string.address_public
|
||||
2 -> R.string.address_nat_eim; 3 -> R.string.address_nat_dependent
|
||||
4 -> R.string.address_nat_unknown; 6 -> R.string.address_nat_eim_unverified
|
||||
5 -> R.string.address_contact; else -> R.string.address_unknown
|
||||
}
|
||||
val port: Int = 0, val socketId: Int = 0, val addrType: Int = 0, val rtt: Int = 0,
|
||||
val natMapping: Int = 0, val natInbound: Int = 0, val natSource: Int = 0) {
|
||||
val natLabelRes: Int get() = natProfileLabelRes(natMapping, natInbound, natSource)
|
||||
}
|
||||
|
||||
// Происхождение адреса не определяет NAT: результат берём из измеренного профиля сокета.
|
||||
private fun natProfileLabelRes(mapping: Int, inbound: Int, source: Int): Int = when {
|
||||
source == 0 -> R.string.socket_nat_unmeasured
|
||||
mapping == 1 && inbound == 1 -> R.string.socket_no_nat_open
|
||||
mapping == 1 && inbound == 2 -> R.string.socket_no_nat_filtered
|
||||
mapping == 1 -> R.string.socket_no_nat
|
||||
mapping == 2 && inbound == 1 -> R.string.socket_eim_open
|
||||
mapping == 2 && inbound == 2 -> R.string.socket_eim_filtered
|
||||
mapping == 2 -> R.string.address_nat_eim_unverified
|
||||
mapping == 3 -> R.string.address_nat_dependent
|
||||
else -> R.string.address_nat_unknown
|
||||
}
|
||||
|
||||
data class LinkStatus(val linkId: Int = 0, val localFamily: Int = 0, val localAddr: String = "", val localPort: Int = 0,
|
||||
@@ -127,15 +136,7 @@ data class LocalSocketState(
|
||||
val natMapping: Int = 0, val natInbound: Int = 0, val natSource: Int = 0,
|
||||
val externalIp: String = "", val externalPort: Int = 0
|
||||
) {
|
||||
val natLabelRes: Int get() = when {
|
||||
natSource == 0 -> R.string.socket_nat_unmeasured
|
||||
natMapping == 1 -> R.string.socket_no_nat
|
||||
natMapping == 2 && natInbound == 1 -> R.string.socket_eim_open
|
||||
natMapping == 2 && natInbound == 2 -> R.string.socket_eim_filtered
|
||||
natMapping == 2 -> R.string.address_nat_eim_unverified
|
||||
natMapping == 3 -> R.string.address_nat_dependent
|
||||
else -> R.string.address_nat_unknown
|
||||
}
|
||||
val natLabelRes: Int get() = natProfileLabelRes(natMapping, natInbound, natSource)
|
||||
val stateLabel: String get() = AppLanguage.text(when (state) {
|
||||
2 -> R.string.connection_up; 1 -> R.string.connection_connecting; else -> R.string.connection_down
|
||||
})
|
||||
@@ -488,7 +489,10 @@ class ChatRepository {
|
||||
port = a.optInt("po", 0),
|
||||
socketId = a.optInt("si", 0),
|
||||
addrType = a.optInt("at", 0),
|
||||
rtt = a.optInt("rt", 0)
|
||||
rtt = a.optInt("rt", 0),
|
||||
natMapping = a.getInt("nmapping"),
|
||||
natInbound = a.getInt("ninbound"),
|
||||
natSource = a.getInt("nsource")
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user