in server/bazelrunner/src/main/kotlin/org/jetbrains/bazel/bazelrunner/outputs/OutputProcessor.kt [33:58]
protected fun start(inputStream: InputStream, vararg handlers: OutputHandler) {
val runnable =
Runnable {
try {
BufferedReader(InputStreamReader(inputStream, Charsets.UTF_8)).use { reader ->
var prevLine: String? = null
while (!Thread.currentThread().isInterrupted) {
val line = reader.readLine() ?: return@Runnable
if (line == prevLine) continue
prevLine = line
if (isRunning()) {
handlers.forEach { it.onNextLine(line) }
} else {
break
}
}
}
} catch (e: IOException) {
if (Thread.currentThread().isInterrupted) return@Runnable
throw RuntimeException(e)
}
}
executorService.submit(runnable).also { runningProcessors.add(it) }
}