@@ -44,8 +44,8 @@ import kotlinx.coroutines.flow.onEach
4444import kotlinx.coroutines.flow.sample
4545import kotlinx.coroutines.launch
4646import kotlinx.coroutines.runBlocking
47- import kotlinx.datetime .Clock
48- import kotlinx.datetime .Instant
47+ import kotlin.time .Clock
48+ import kotlin.time .Instant
4949import nestdrop.QueueType
5050import nestdrop.deck.OSCQueueUpdate
5151import java.net.InetAddress
@@ -78,9 +78,10 @@ val serializer = OSCSerializerAndParserBuilder().also { serializer ->
7878// serializer.registerArgumentHandler(CustomAwtColorArgumentHandler.INSTANCE)
7979}
8080
81-
8281val nestdropSendChannel = Channel <OSCPacket >(Channel .BUFFERED )
8382
83+ val copySendChannel = Channel <OSCPacket >(Channel .BUFFERED )
84+
8485val nestdropSendAddress = MutableStateFlow (
8586 InetSocketAddress (
8687 InetAddress .getLoopbackAddress(), // InetAddress.getByName("127.0.0.1"),
@@ -93,6 +94,12 @@ val nestdropListenAddress = MutableStateFlow(
9394 8001
9495 )
9596)
97+ val copyToAddress = MutableStateFlow (
98+ InetSocketAddress (
99+ InetAddress .getLoopbackAddress(), // InetAddress.getByAddress(byteArrayOf(127, 0, 0, 1)),
100+ 8008
101+ )
102+ )
96103
97104suspend fun runNestDropSend () {
98105 nestdropSendAddress.collectLatest { address ->
@@ -115,6 +122,28 @@ suspend fun runNestDropSend() {
115122 }
116123}
117124
125+
126+ suspend fun runCopySend () {
127+ copyToAddress.collectLatest { address ->
128+ coroutineScope {
129+ val port = OSCPortOut (serializer, address)
130+ port.connect()
131+ logger.debug { " constructed OSC port" }
132+ for (oscPacket in copySendChannel) {
133+ try {
134+ // logger.debug { "ND OUT: ${oscPacket.stringify()}" }
135+ port.send(oscPacket)
136+ } catch (e: Exception ) {
137+ logger.error(e) {}
138+ }
139+ }
140+ logger.error { " port closed" }
141+ port.close()
142+ }
143+
144+ }
145+ }
146+
118147suspend fun nestdropPortSend (packet : OSCMessage ) {
119148 nestdropSendChannel.send(packet)
120149}
@@ -264,6 +293,7 @@ suspend fun startNestdropOSC() {
264293 }
265294 .addPacketListener(
266295 object : OSCPacketListener {
296+
267297 val receivingSyncedValues = OscSynced .syncedValues
268298 .filterIsInstance<OscSynced .Receiving <* >>()
269299 .filter { it.receive && it.target == OscSynced .Target .Nestdrop }
@@ -310,6 +340,7 @@ suspend fun startNestdropOSC() {
310340 logger.debug { " ND IN: ${message.stringify()} " }
311341 }
312342 syncedValue.onMessageEvent(message)
343+ copySendChannel.send(message)
313344 }
314345 }
315346 }
@@ -322,7 +353,7 @@ suspend fun startNestdropOSC() {
322353 }
323354 }
324355 )
325- .addPacketListener(debugListener)
356+ // .addPacketListener(debugListener)
326357 .build()
327358 .also {
328359 logger.info { " start listening on $address " }
0 commit comments