def self.try_convert(socket, convert_io = true)
case socket
when Celluloid::IO::Socket, Celluloid::IO::SSLServer
socket
when ::TCPServer
TCPServer.new(socket)
when ::TCPSocket
TCPSocket.new(socket)
when ::UDPSocket
UDPSocket.new(socket)
when ::UNIXServer
UNIXServer.new(socket)
when ::UNIXSocket
UNIXSocket.new(socket)
when OpenSSL::SSL::SSLServer
SSLServer.new(socket.to_io, socket.instance_variable_get(:@ctx))
when OpenSSL::SSL::SSLSocket
SSLSocket.new(socket)
else
if convert_io
return try_convert(IO.try_convert(socket), false)
end
nil
end
end