# Class type Uq_ssl.ssl_multiplex_controller

    class type ssl_multiplex_controller = object .. end

The `ssl_multiplex_controller` is an extended multiplex controller which can also control SSL handshakes.

Important note: SSL/TLS does not support half-open connections. When one party closes the connection, the other party must immediately close the connection, too, throwing away any pending writes. See RFC 2246.
Inherits

- `Uq_engines.multiplex_controller`

    method ssl_socket : Ssl.socket

    method ssl_socket_state : [ `Clean | `Client | `Server | `Unclean | `Unset ]

Returns the socket state:

- ``Unset`: A fresh socket
- ``Client`: A socket playing the SSL client role
- ``Server`: A socket playing the SSL server role
- ``Unclean`: The socket state is unclean. The socket is no longer usable.
- ``Clean`: The SSL connection has been cleanly shut down.

    method ssl_connecting : bool

Whether the initial SSL handshake is in progress that makes this socket a client.

    method ssl_accepting : bool

Whether the initial SSL handshake is in progress that makes this socket a server.

    method start_ssl_connecting : when_done:(exn option -> unit) -> unit -> unit

Makes the socket an SSL client socket by initiating the handshake. The `when_done` callback is invoked when the handshake is done.

One can neither read nor write before that.

    method start_ssl_accepting : when_done:(exn option -> unit) -> unit -> unit

Makes the socket an SSL server socket by initiating the handshake. The `when_done` callback is invoked when the handshake is done.

One can neither read nor write before that.