You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
TCPSocket.open is a thing, but there is no equivalent to SSLSocket.open.
This becomes a tricky problem to work around, often requiring overloading in #initialize to handle the different cases. The main cases are:
Make a new socket and connect to this hostname (should be .open).
Make a new socket with the given file descriptor or some other specific situation (should be .new).
This issue becomes a problem when making wrappers. Because in your own #initialize you need to detect the intent of the user. I'm not sure if there is an alternative or not.
So, ideally, we simply add an alias SSLSocket.open is identical to SSLSocket.new. But, for the purposes such as HTTP.rb, we expect that to use socket_class.open rather than socket_class.new.
The text was updated successfully, but these errors were encountered:
For more details see socketry/async-io#12 which shows why this is a problem, specifically the implicit implementation of #initialize which has to handle both the "public interface" of SSLSocket as well as the internal wrapper state.
TCPSocket.open
is a thing, but there is no equivalent toSSLSocket.open
.This becomes a tricky problem to work around, often requiring overloading in
#initialize
to handle the different cases. The main cases are:Make a new socket and connect to this hostname (should be
.open
).Make a new socket with the given file descriptor or some other specific situation (should be
.new
).This issue becomes a problem when making wrappers. Because in your own
#initialize
you need to detect the intent of the user. I'm not sure if there is an alternative or not.socketry/async-io#13
So, ideally, we simply add an alias
SSLSocket.open
is identical toSSLSocket.new
. But, for the purposes such asHTTP.rb
, we expect that to usesocket_class.open
rather thansocket_class.new
.The text was updated successfully, but these errors were encountered: