minor: Added TCPSocket Class w/ pool accessor
Sockets now know what pool they were checked out from SSLSocket updated as well
This commit is contained in:
parent
379c831b8b
commit
93b2f3da9b
|
@ -61,6 +61,7 @@ require 'mongo/util/pool'
|
||||||
require 'mongo/util/pool_manager'
|
require 'mongo/util/pool_manager'
|
||||||
require 'mongo/util/server_version'
|
require 'mongo/util/server_version'
|
||||||
require 'mongo/util/ssl_socket'
|
require 'mongo/util/ssl_socket'
|
||||||
|
require 'mongo/util/tcp_socket'
|
||||||
require 'mongo/util/uri_parser'
|
require 'mongo/util/uri_parser'
|
||||||
|
|
||||||
require 'mongo/collection'
|
require 'mongo/collection'
|
||||||
|
|
|
@ -537,7 +537,7 @@ module Mongo
|
||||||
if @ssl
|
if @ssl
|
||||||
@socket_class = Mongo::SSLSocket
|
@socket_class = Mongo::SSLSocket
|
||||||
else
|
else
|
||||||
@socket_class = ::TCPSocket
|
@socket_class = Mongo::TCPSocket
|
||||||
end
|
end
|
||||||
|
|
||||||
# Authentication objects
|
# Authentication objects
|
||||||
|
|
|
@ -167,6 +167,7 @@ module Mongo
|
||||||
begin
|
begin
|
||||||
socket = self.connection.socket_class.new(@host, @port)
|
socket = self.connection.socket_class.new(@host, @port)
|
||||||
socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
|
socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
|
||||||
|
socket.pool = self
|
||||||
rescue => ex
|
rescue => ex
|
||||||
socket.close if socket
|
socket.close if socket
|
||||||
raise ConnectionFailure, "Failed to connect to host #{@host} and port #{@port}: #{ex}"
|
raise ConnectionFailure, "Failed to connect to host #{@host} and port #{@port}: #{ex}"
|
||||||
|
|
|
@ -7,6 +7,8 @@ module Mongo
|
||||||
# mirroring Ruby's TCPSocket, vis., TCPSocket#send and TCPSocket#read.
|
# mirroring Ruby's TCPSocket, vis., TCPSocket#send and TCPSocket#read.
|
||||||
class SSLSocket
|
class SSLSocket
|
||||||
|
|
||||||
|
attr_accessor :pool
|
||||||
|
|
||||||
def initialize(host, port)
|
def initialize(host, port)
|
||||||
@socket = ::TCPSocket.new(host, port)
|
@socket = ::TCPSocket.new(host, port)
|
||||||
@ssl = OpenSSL::SSL::SSLSocket.new(@socket)
|
@ssl = OpenSSL::SSL::SSLSocket.new(@socket)
|
||||||
|
@ -33,6 +35,5 @@ module Mongo
|
||||||
def close
|
def close
|
||||||
@ssl.close
|
@ssl.close
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
module Mongo
|
||||||
|
class TCPSocket < ::TCPSocket
|
||||||
|
attr_accessor :pool
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue