
commonJvmMain.com.ditchoom.socket.nio.ByteBufferClientSocket.kt Maven / Gradle / Ivy
package com.ditchoom.socket.nio
import com.ditchoom.buffer.JvmBuffer
import com.ditchoom.socket.ClientSocket
import com.ditchoom.socket.nio.util.aClose
import com.ditchoom.socket.nio.util.localAddressOrNull
import java.net.InetSocketAddress
import java.nio.channels.NetworkChannel
import kotlin.time.Duration
abstract class ByteBufferClientSocket : ClientSocket {
protected lateinit var socket: T
override fun isOpen() =
try {
socket.isOpen
} catch (e: Throwable) {
false
}
override suspend fun localPort(): Int = (socket.localAddressOrNull() as? InetSocketAddress)?.port ?: -1
abstract suspend fun read(
buffer: JvmBuffer,
timeout: Duration,
): Int
override suspend fun close() {
socket.aClose()
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy