класс OpenSSL::SSL::SSLServer
SSLServer представляет собой сокет TCP/IP-сервера с использованием Secure Sockets Layer.
Атрибуты
start_immediately[RW]
Если true, то accept работает точно так же, как TCPServer#accept
Общедоступные методы класса
# File ext/openssl/lib/openssl/ssl.rb, line 491
def initialize(svr, ctx)
@svr = svr
@ctx = ctx
unless ctx.session_id_context
# see #6137 - session id may not exceed 32 bytes
prng = ::Random.new($0.hash)
session_id = prng.bytes(16).unpack('H*')[0]
@ctx.session_id_context = session_id
end
@start_immediately = true
end Создаёт новый экземпляр SSLServer.
-
srv — экземпляр
TCPServer. -
ctx — экземпляр
OpenSSL::SSL::SSLContext.
Общедоступные методы экземпляра
# File ext/openssl/lib/openssl/ssl.rb, line 519
def accept
# Socket#accept returns [socket, addrinfo].
# TCPServer#accept returns a socket.
# The following comma strips addrinfo.
sock, = @svr.accept
begin
ssl = OpenSSL::SSL::SSLSocket.new(sock, @ctx)
ssl.sync_close = true
ssl.accept if @start_immediately
ssl
rescue Exception => ex
if ssl
ssl.close
else
sock.close
end
raise ex
end
end Работает аналогично TCPServer#accept.
# File ext/openssl/lib/openssl/ssl.rb, line 540 def close @svr.close end
Подробности см. в IO#close.
# File ext/openssl/lib/openssl/ssl.rb, line 509 def listen(backlog=Socket::SOMAXCONN) @svr.listen(backlog) end
Подробности см. в TCPServer#listen.
# File ext/openssl/lib/openssl/ssl.rb, line 514 def shutdown(how=Socket::SHUT_RDWR) @svr.shutdown(how) end
Подробности см. в BasicSocket#shutdown.
Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.