withStdInOut
expect inline suspend fun withStdInOut(ksrpcEnvironment: KsrpcEnvironment<String>, withConnection: (Connection<String>) -> Unit)
Create a Connection that communicates over the std in/out streams of this process.
Samples
import com.monkopedia.ksrpc.channels.connect
import com.monkopedia.ksrpc.ksrpcEnvironment
import com.monkopedia.ksrpc.serialized
import com.monkopedia.ksrpc.sockets.asConnection
import com.monkopedia.ksrpc.sockets.withStdInOut
import com.monkopedia.ksrpc.toStub
import io.ktor.utils.io.ByteChannel
fun main() {
//sampleStart
val env = ksrpcEnvironment { }
val service = object : GreetingService {
override suspend fun greet(name: String): String = "Hello, $name!"
}
// withStdInOut creates a bidirectional Connection over stdin/stdout.
// This is useful for CLI tools that communicate via pipes.
withStdInOut(env) { connection ->
connection.registerDefault(service.serialized(env))
// Connection stays open until the process ends or the connection closes.
}
//sampleEnd
}actual inline suspend fun withStdInOut(ksrpcEnvironment: KsrpcEnvironment<String>, withConnection: (Connection<String>) -> Unit)
Create a Connection that communicates over the std in/out streams of this process.
actual inline suspend fun withStdInOut(ksrpcEnvironment: KsrpcEnvironment<String>, withConnection: (Connection<String>) -> Unit)
actual inline suspend fun withStdInOut(ksrpcEnvironment: KsrpcEnvironment<String>, withConnection: (Connection<String>) -> Unit)
actual inline suspend fun withStdInOut(ksrpcEnvironment: KsrpcEnvironment<String>, withConnection: (Connection<String>) -> Unit)
Create a Connection that communicates over the std in/out streams of this process.