# {'btl': ['23CCEAF4-4B70-1FA0-9D36-2DD4B6B92E68', 'HTC BS', '(null)', '{\n kCBAdvDataIsConnectable = 1;\n kCBAdvDataLocalName = "HTC BS 1B5BE7";\n kCBAdvDataServiceUUIDs = (\n CB00\n );\n kCBAdvDataTimestamp = "608101878.588375";\n kCBAdvDataTxPowerLevel = 4;\n}'], 'seq': 6824} */
| 9 | import java.net.InetAddress |
| 10 | |
| 11 | /* |
| 12 | # {'btl': ['23CCEAF4-4B70-1FA0-9D36-2DD4B6B92E68', 'HTC BS', '(null)', '{\n kCBAdvDataIsConnectable = 1;\n kCBAdvDataLocalName = "HTC BS 1B5BE7";\n kCBAdvDataServiceUUIDs = (\n CB00\n );\n kCBAdvDataTimestamp = "608101878.588375";\n kCBAdvDataTxPowerLevel = 4;\n}'], 'seq': 6824} |
| 13 | */ |
| 14 | class OSCIn(val p: Int) { |
| 15 | |
| 16 | companion object { |
| 17 | val portage = mutableMapOf<Int, OSCPortIn>() |
| 18 | |
| 19 | fun make(p: Int): OSCPortIn = portage.computeIfAbsent(p) { |
| 20 | val o = OSCPortIn(it) |
| 21 | o.startListening() |
| 22 | o |
| 23 | } |
| 24 | } |
| 25 | |
| 26 | val oin = make(p) |
| 27 | |
| 28 | val values = mutableMapOf<String, Any>() |
| 29 | val times = mutableMapOf<String, Long>() |
| 30 | |
| 31 | init { |
| 32 | oin.dispatcher.addListener(object : MessageSelector { |
| 33 | override fun isInfoRequired() = false |
| 34 | override fun matches(p0: OSCMessageEvent?) = true |
| 35 | }) { mess -> |
| 36 | val a = mess.message.address |
| 37 | val b = mess.message.arguments |
| 38 | val t = System.currentTimeMillis() |
| 39 | |
| 40 | RunLoop.main.once { |
| 41 | values[a] = b |
| 42 | times[a] = t |
| 43 | } |
| 44 | } |
| 45 | // oin.startListening() |
| 46 | } |
| 47 | |
| 48 | fun clear(name: String) { |
| 49 | values.remove(name) |
| 50 | times.remove(name) |
| 51 | } |
| 52 | |
| 53 | fun <T> get(name: String, d: Any): T { |
| 54 | return values.getOrDefault(name, d) as T |
| 55 | } |
| 56 | |
| 57 | fun getTime(name: String, d: Any): Long? { |
| 58 | return times.getOrDefault(name, -1L) |
| 59 | } |
| 60 | |
| 61 | } |
no test coverage detected