Compile publisher service and controller in the lifecycle test harness

This commit is contained in:
evgeny committed 2026-10-29 13:34:24 +01:00
1 parent 1beb19a7f8
commit 9166268102
2 files changed
+29 -1

No files matched your search

@@ -9,7 +9,8 @@ kotlin {
"com/utun/chat/data/RouterHostEnvironment.kt", "com/utun/chat/data/RadioHostEnvironment.kt",
"com/utun/chat/data/CallServiceHost.kt", "com/utun/chat/data/CallService.kt", "com/utun/chat/data/CallController.kt",
"com/utun/chat/data/CallState.kt", "com/utun/chat/data/CallAudioRouter.kt", "com/utun/chat/data/CoreActivity.kt",
"com/utun/chat/data/RadioAutoSettings.kt")
"com/utun/chat/data/RadioAutoSettings.kt", "com/utun/chat/data/StreamServiceHost.kt",
"com/utun/chat/data/StreamService.kt", "com/utun/chat/data/StreamController.kt", "com/utun/chat/data/StreamTxStats.kt")
}
}
@@ -0,0 +1,27 @@
package com.utun.chat.data
import android.content.Context
/** Camera/DSP — управляемая граница, настоящие StreamController/StreamService компилируются из приложения. */
data class StreamCaptureConfig(val value: Int = 1)
typealias RadioCompressorSettings = Any
class StreamPreview { var closed = false; fun close() { closed = true } }
class StreamCaptureEngine(context: Context, val id: Long, group: Long, val config: StreamCaptureConfig, microphone: Boolean,
preview: StreamPreview, initialAudioCompressor: RadioCompressorSettings,
private val ready: (StreamCaptureConfig, Boolean) -> Unit, failure: (String) -> Unit) {
companion object { var nextFailures = emptySet<String>(); val created = mutableListOf<StreamCaptureEngine>() }
init { created.add(this) }
var failures = nextFailures
var started = false
var stopped = false
var stops = 0
var audioCompressorSettings = initialAudioCompressor
fun start() { started = true; check("start" !in failures); ready(config, false) }
fun stop(): Boolean {
stops++; check("stop" !in failures)
if ("pending" in failures) return false
stopped = true; check("stop after" !in failures); return true
}
fun change(config: StreamCaptureConfig) { check("change" !in failures); ready(config, false) }
fun setAudioEnabled(enabled: Boolean): Boolean { check("audio" !in failures); return "audio reject" !in failures }
}