KSSLSocketFactory.kt

package org.knio.core.net.ssl

import org.knio.core.net.KSocketFactory
import org.knio.core.context.getKnioContext
import java.io.IOException
import java.net.InetAddress
import java.net.UnknownHostException
import javax.net.ssl.SSLContext
import kotlin.jvm.Throws

interface KSSLSocketFactory: KSocketFactory {

    companion object {

        suspend fun getDefault(): KSSLSocketFactory {
            return KSSLSocketFactoryDefault(
                sslContext = SSLContext.getDefault(),
                context = getKnioContext()
            )
        }
    }

    @Throws(IOException::class)
    override suspend fun createSocket(): KSSLSocket

    @Throws(IOException::class, UnknownHostException::class)
    override suspend fun createSocket(host: String, port: Int): KSSLSocket

    @Throws(IOException::class, UnknownHostException::class)
    override suspend fun createSocket(host: String, port: Int, localHost: InetAddress, localPort: Int): KSSLSocket

    @Throws(IOException::class)
    override suspend fun createSocket(host: InetAddress, port: Int): KSSLSocket

    @Throws(IOException::class)
    override suspend fun createSocket(address: InetAddress, port: Int, localAddress: InetAddress, localPort: Int): KSSLSocket

    @Throws(IOException::class)
    suspend fun getDefaultCipherSuites(): Array<String>

    @Throws(IOException::class)
    suspend fun getSupportedCipherSuites(): Array<String>
}