05 / START SMALL
One interface. One implementation.
Register the implementation once. The generated descriptor connects both sides while the runtime takes responsibility for delivery and operations.
JVM + macOS ARM64Kotlin MultiplatformCoroutines + Flow
GreeterSystem.kt ready
interface IGreeter : IService {
suspend fun greet(request: GreetRequest): GreetResponse
}
class Greeter : IGreeter {
override suspend fun greet(request: GreetRequest) =
GreetResponse("Hello, ${request.name}")
}
val host = Host.default(name = "Greeter")
host.registerService<IGreeter> { Greeter() }
.start()
val greeter = RSocketProxyFactory
.forHost(host)
.create<IGreeter>()