Move ipv4Int to top level

pull/1684/head
bemusementpark 7 months ago
parent fdf8f4170b
commit 3bc0ce539a

@ -12,14 +12,9 @@ import org.session.libsignal.utilities.ThreadUtils
import java.io.File import java.io.File
import java.io.FileOutputStream import java.io.FileOutputStream
import java.io.FileReader import java.io.FileReader
import java.util.SortedMap
import java.util.TreeMap import java.util.TreeMap
class IP2Country private constructor(private val context: Context) { private fun ipv4Int(ip: String): Int {
private val pathsBuiltEventReceiver: BroadcastReceiver
val countryNamesCache = mutableMapOf<String, String>()
private fun Ipv4Int(ip: String): Int {
var result = 0L var result = 0L
var currentValue = 0L var currentValue = 0L
var octetIndex = 0 var octetIndex = 0
@ -41,13 +36,17 @@ class IP2Country private constructor(private val context: Context) {
return result.toInt() return result.toInt()
} }
class IP2Country private constructor(private val context: Context) {
private val pathsBuiltEventReceiver: BroadcastReceiver
val countryNamesCache = mutableMapOf<String, String>()
private val ipv4ToCountry: TreeMap<Int, Int?> by lazy { private val ipv4ToCountry: TreeMap<Int, Int?> by lazy {
val file = loadFile("geolite2_country_blocks_ipv4.csv") val file = loadFile("geolite2_country_blocks_ipv4.csv")
CSVReader(FileReader(file.absoluteFile)).use { csv -> CSVReader(FileReader(file.absoluteFile)).use { csv ->
csv.skip(1) csv.skip(1)
csv.asSequence().associateTo(TreeMap()) { cols -> csv.asSequence().associateTo(TreeMap()) { cols ->
Ipv4Int(cols[0]).toInt() to cols[1].toIntOrNull() ipv4Int(cols[0]).toInt() to cols[1].toIntOrNull()
} }
} }
} }
@ -114,7 +113,7 @@ class IP2Country private constructor(private val context: Context) {
// return early if cached // return early if cached
countryNamesCache[ip]?.let { return it } countryNamesCache[ip]?.let { return it }
val ipInt = Ipv4Int(ip) val ipInt = ipv4Int(ip)
val bestMatchCountry = ipv4ToCountry.floorEntry(ipInt)?.let { (_, code) -> val bestMatchCountry = ipv4ToCountry.floorEntry(ipInt)?.let { (_, code) ->
if (code != null) { if (code != null) {
countryToNames[code] countryToNames[code]

Loading…
Cancel
Save