Socket — Documentation by YARD 0.9.37 (original) (raw)
Class: Mongo::SocketPrivate
Inherits:
Object
- Object
- Mongo::Socket show all
Includes:
Socket::Constants
Defined in:
lib/mongo/socket.rb,
lib/mongo/socket/ssl.rb,
lib/mongo/socket/tcp.rb,
lib/mongo/socket/unix.rb,
lib/mongo/socket/ocsp_cache.rb,
lib/mongo/socket/ocsp_verifier.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Provides additional data around sockets for the driver’s use.
Defined Under Namespace
Modules: OcspCache Classes: OcspVerifier, SSL, TCP, Unix
Constant Summarycollapse
SSL_ERROR =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
Error message for TLS related exceptions.
'MongoDB may not be configured with TLS support'.freeze
TIMEOUT_ERROR =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
Error message for timeouts on socket calls.
'Socket request timed out'.freeze
TIMEOUT_PACK =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
The pack directive for timeouts.
'l_2'.freeze
WRITE_CHUNK_SIZE =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
Write data to the socket in chunks of this size.
65536
Instance Attribute Summary collapse
- #family ⇒ Integer readonly private
Family The type of host family. - #options ⇒ Hash readonly private
The options. - #socket ⇒ Socket readonly private
Socket The wrapped socket. - #timeout ⇒ Float readonly private
Timeout The socket timeout.
Instance Method Summarycollapse
- #alive? ⇒ true, false deprecated private Deprecated.
Use #connectable? on the connection instead. - #close ⇒ true private
Close the socket. - #connectable? ⇒ true deprecated private Deprecated.
- #connection_address ⇒ Address private
Address of the connection that created this socket. - #connection_generation ⇒ Integer private
Generation of the connection (for non-monitoring connections) that created this socket. - #eof? ⇒ Boolean private
Tests if this socket has reached EOF. - #gets(*args) ⇒ Object private
Delegates gets to the underlying socket. - #initialize(timeout, options) ⇒ Socket constructor private
Initializes common socket attributes. - #monitor? ⇒ true | false private
Whether this socket was created by a monitoring connection. - #read(length, socket_timeout: nil, timeout: nil) ⇒ Object private
Will read all data from the socket for the provided number of bytes. - #readbyte ⇒ Object private
Read a single byte from the socket. - #summary ⇒ String private
Human-readable summary of the socket for debugging. - #write(*args, timeout: nil) ⇒ Integer private
Writes data to the socket instance.
Constructor Details
#initialize(timeout, options) ⇒ Socket
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Initializes common socket attributes.
69 70 71 72 | # File 'lib/mongo/socket.rb', line 69 def initialize(timeout, options) @timeout = timeout @options = options end |
---|
Instance Attribute Details
#family ⇒ Integer
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns family The type of host family.
75 76 77 | # File 'lib/mongo/socket.rb', line 75 def family @family end |
---|
#options ⇒ Hash
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns The options.
81 82 83 | # File 'lib/mongo/socket.rb', line 81 def options @options end |
---|
#socket ⇒ Socket
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns socket The wrapped socket.
78 79 80 | # File 'lib/mongo/socket.rb', line 78 def socket @socket end |
---|
#timeout ⇒ Float
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns timeout The socket timeout.
84 85 86 | # File 'lib/mongo/socket.rb', line 84 def timeout @timeout end |
---|
Instance Method Details
#alive? ⇒ true, false
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Deprecated.
Use #connectable? on the connection instead.
Is the socket connection alive?
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | # File 'lib/mongo/socket.rb', line 134 def alive? sock_arr = [ @socket ] if Kernel::select(sock_arr, nil, sock_arr, 0) begin Timeout.timeout(0.1) do eof? end rescue ::Timeout::Error true end else true end end |
---|
#close ⇒ true
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Close the socket.
160 161 162 163 164 165 166 167 168 169 170 | # File 'lib/mongo/socket.rb', line 160 def close begin ::Timeout.timeout(5) do @socket.close end rescue end true end |
---|
#connectable? ⇒ true
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
For backwards compatibility only, do not use.
260 261 262 | # File 'lib/mongo/socket.rb', line 260 def connectable? true end |
---|
#connection_address ⇒ Address
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns Address of the connection that created this socket.
89 90 91 | # File 'lib/mongo/socket.rb', line 89 def connection_address options[:connection_address] end |
---|
#connection_generation ⇒ Integer
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns Generation of the connection (for non-monitoring connections) that created this socket.
97 98 99 | # File 'lib/mongo/socket.rb', line 97 def connection_generation options[:connection_generation] end |
---|
#eof? ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Tests if this socket has reached EOF. Primarily used for liveness checks.
249 250 251 252 253 | # File 'lib/mongo/socket.rb', line 249 def eof? @socket.eof? rescue IOError, SystemCallError true end |
---|
#gets(*args) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Delegates gets to the underlying socket.
182 183 184 185 186 | # File 'lib/mongo/socket.rb', line 182 def gets(*args) map_exceptions do @socket.gets(*args) end end |
---|
#monitor? ⇒ true | false
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns Whether this socket was created by a monitoring connection.
105 106 107 | # File 'lib/mongo/socket.rb', line 105 def monitor? !!options[:monitor] end |
---|
#read(length, socket_timeout: nil, timeout: nil) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Will read all data from the socket for the provided number of bytes. If no data is returned, an exception will be raised.
| 205 206 207 208 209 210 211 212 213 214 | # File 'lib/mongo/socket.rb', line 205 def read(length, socket_timeout: nil, timeout: nil) if !socket_timeout.nil? && !timeout.nil? raise ArgumentError, 'Both timeout and socket_timeout cannot be set' end if !socket_timeout.nil? || timeout.nil? read_without_timeout(length, socket_timeout) else read_with_timeout(length, timeout) end end | | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
#readbyte ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Read a single byte from the socket.
224 225 226 227 228 | # File 'lib/mongo/socket.rb', line 224 def readbyte map_exceptions do @socket.readbyte end end |
---|
#summary ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns Human-readable summary of the socket for debugging.
| 112 113 114 115 116 117 118 119 120 121 122 123 124 | # File 'lib/mongo/socket.rb', line 112 def summary fileno = @socket&.fileno rescue '' || '' if monitor? indicator = if options[:push] 'pm' else 'm' end "#{connection_address};#{indicator};fd=#{fileno}" else "#{connection_address};c:#{connection_generation};fd=#{fileno}" end end | | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
#write(*args, timeout: nil) ⇒ Integer
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Writes data to the socket instance.
240 241 242 243 244 | # File 'lib/mongo/socket.rb', line 240 def write(*args, timeout: nil) map_exceptions do do_write(*args, timeout: timeout) end end |
---|