Just some Kotlinx coroutines extensions for java.nio.channels.Asynchronous* classes.
Published to the Maven Central repository.
Gradle snippet,
repositories {
mavenCentral()
}
dependencies {
implementation "io.github.agcom:knio2:0.4.1"
}Suspending extension functions for following classes,
AsynchronousByteChannelAsynchronousSocketChannelAsynchronousFileChannelAsynchronousServerSocketChannel
The functions are named after their original name plus
awaitsuffix.importio.github.agcom.knio2.*importjava.nio.ByteBufferimportjava.nio.channels.AsynchronousSocketChannelsuspendfunmain() { val socket:AsynchronousSocketChannel=TODO().apply { connectAwait(TODO()) // connectAwait } ByteBuffer.allocate(TODO()).let { socket.readAwait(it) // readAwait } socket.writeAwait(Charsets.US_ASCII.encode("Hello world")) // writeAwait }
I add what I need. Make sure you do it too 😃.
If you only want Kotlinx coroutines IO, prefer its native libraries instead of Java ports. You can find them on Awesome Kotlin.
This is a temporary project and may deprecate in favor of better asynchronous IO solutions with Kotlinx coroutines. For example, the Kotlinx IO, which is kinda in development now.