Clase: Mongo::Socket::TCP Privada
- Hereda:
-
Mongo::Socket
- Objeto
- Mongo::Socket
- Mongo::Socket::TCP
- Definido en:
- lib/mongo/socket/tcp.rb
Overview
Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.
Contenedor para sockets TCP.
Resumen constante
Constantes heredadas de Mongo::Socket
SSL_ERROR, TIMEOUT_ERROR, TIMEOUT_PACK, WRITE_CHUNK_SIZE
Resumen de atributos de la instancia colapsar
-
#host ⇒ String
Solo lectura
privado
Host El host al que conectarse.
-
#port ⇒ Integer
Solo lectura
privado
Puerto El puerto al que conectarse.
Atributos heredados de Mongo::Socket
#familia, #opciones, #socket, #timeout
Resumen del método de instancia colapsar
-
#¡Conectar! ⇒ TCP
privado
Establece una conexión de socket.
- #connect_with_timeout(sockaddr, connect_timeout) ⇒ objeto privado
- #connect_without_timeout(sockaddr) ⇒ Objeto privado
-
#initialize(host, port, timeout, family, options = {}) ⇒ TCP
constructor
privado
Inicializa un nuevo socket TCP.
Métodos heredados de Mongo::Socket
#alive?, #close, #connectable?, #connection_address, #connection_generation, #eof?, #gets, #supervisar?, #pipe, #read, #readbyte, #summary, #guardar
Detalles del constructor
#initialize(host, port, timeout, family, options = {}) ⇒ TCP
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Inicializa un nuevo socket TCP.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# Archivo 'lib/mongo/socket/tcp.rb', línea 48 def inicializar(host, Puerto, tiempo de espera, familia, = {}) si familia.nil? propagar ArgumentError, 'la familia debe especificarse' end super(tiempo de espera, ) @host, @puerto = host, Puerto @familia = familia @socket = ::Socket.Nuevo(familia, SOCK_STREAM, 0) begin (@socket) ¡conectar! rescate @socket.Cerrar propagar end end |
Detalles de los atributos de instancia
#host ⇒ Cadena (solo lectura)
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Retorna host El host al que conectar.
66 67 68 |
# Archivo 'lib/mongo/socket/tcp.rb', línea 66 def host @host end |
#puerto ⇒ Entero (solo lectura)
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve puerto El puerto al que conectarse.
69 70 71 |
# Archivo 'lib/mongo/socket/tcp.rb', línea 69 def Puerto @puerto end |
Detalles del método de instancia
#¡Conectar! ⇒ TCP
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Este método modifica el objeto al establecer internamente el socket.
Establece una conexión de socket.
83 84 85 86 87 88 89 90 91 92 93 94 95 |
# Archivo 'lib/mongo/socket/tcp.rb', línea 83 def ¡conectar! enchufe.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1) sockaddr = ::Socket.pack_sockaddr_in(Puerto, host) conectar_timeout = [:tiempo de espera de conexión] map_exceptions hacer si conectar_timeout && conectar_timeout != 0 conectar_con_tiempo_de_espera(sockaddr, conectar_timeout) else connect_without_timeout(sockaddr) end end sí mismo end |
#connect_with_timeout(sockaddr, connect_timeout) ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# Archivo 'lib/mongo/socket/tcp.rb', línea 103 def conectar_con_tiempo_de_espera(sockaddr, conectar_timeout) si conectar_timeout <= 0 propagar Error::SocketTimeoutError, "El socket tardó #{connect_timeout} segundos en conectar" end fecha límite = Utils.monotonic_time + conectar_timeout begin enchufe.conectar_sin_bloqueo(sockaddr) rescate IO::Espera escribible select_timeout = fecha límite - Utils.monotonic_time si select_timeout <= 0 propagar Error::SocketTimeoutError, "El socket tardó #{connect_timeout} segundos en conectar" end si IO.Seleccionar(nulo, [enchufe], nulo, select_timeout) reintentar else enchufe.Cerrar propagar Error::SocketTimeoutError, "El socket tardó #{connect_timeout} segundos en conectar" end rescate Errno::EISCONN # El conector está conectado, no hay nada más que hacer end end |
#conectar_sin_tiempo_de_espera(sockaddr) ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
98 99 100 |
# Archivo 'lib/mongo/socket/tcp.rb', línea 98 def connect_without_timeout(sockaddr) enchufe.Conectar(sockaddr) end |