require 'openssl' module LightIO::Library module OpenSSL module SSL class SSLSocket include Base include LightIO::Wrap::IOWrapper mock ::OpenSSL::SSL::SSLSocket prepend LightIO::Library::IO::IOMethods wrap_blocking_methods :connect, :accept def initialize(io, *args) if io.is_a?(LightIO::Library::IO) @_wrapped_socket = io io = io.send(:light_io_raw_obj) end super(io, *args) end def accept_nonblock socket = @obj.accept_nonblock(*args) socket.is_a?(Symbol) ? socket : self.class._wrap(socket) end def to_io @_wrapped_socket || @obj.io end alias io to_io end end end end