feat(sidecar): Main entry point binding the gRPC server to 127.0.0.1

This commit is contained in:
pj committed 2026-04-18 00:02:10 +07:00
1 parent 125a060a69
commit fc209aaeb2
1 file changed
+51 -2
@@ -1,5 +1,54 @@
package dev.uatu.sidecar
fun main() {
println("uatu-sidecar stub: gRPC server lands in task #10")
import io.grpc.Server
import io.grpc.netty.shaded.io.grpc.netty.NettyServerBuilder
import java.net.InetSocketAddress
import java.util.concurrent.CountDownLatch
class SidecarServer(
private val port: Int,
private val service: DriverService,
) {
private var grpcServer: Server? = null
private val shutdownLatch = CountDownLatch(1)
fun start(): Int {
val server = NettyServerBuilder.forAddress(InetSocketAddress("127.0.0.1", port))
.addService(service)
.build()
server.start()
grpcServer = server
Runtime.getRuntime().addShutdownHook(Thread {
stop()
})
return server.port
}
fun awaitTermination() {
shutdownLatch.await()
}
fun stop() {
grpcServer?.shutdown()
shutdownLatch.countDown()
}
}
fun main(arguments: Array<String>) {
val port = arguments.indexOf("--port").let { index ->
if (index >= 0 && index + 1 < arguments.size) arguments[index + 1].toInt() else 0
}
val platform = arguments.indexOf("--platform").let { index ->
if (index >= 0 && index + 1 < arguments.size) arguments[index + 1] else "android"
}
val serial = arguments.indexOf("--serial").let { index ->
if (index >= 0 && index + 1 < arguments.size) arguments[index + 1] else null
}
val service = DriverService(platform = platform, serial = serial)
val server = SidecarServer(port, service)
val boundPort = server.start()
println("uatu-sidecar listening on 127.0.0.1:$boundPort platform=$platform")
System.out.flush()
server.awaitTermination()
}