Clase: Mongo::Socket::TCP Privado
- 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. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
Envoltorio para sockets TCP.
Resumen constante
Constantes heredadas de Mongo::Socket
SSL_ERROR, TIMEOUT_ERROR, TIMEOUT_PACK, WRITE_CHUNK_SIZE
Colapso delresumen de atributos de instancia
-
#host ⇒ String
solo lectura
privada
Host El host al que conectarse.
-
#port ⇒ Integer
solo lectura
privada
Puerto El puerto al que conectarse.
Atributos heredados de Mongo::Socket
#familia, #opciones, #socket, #tiempo de espera
Colapso del resumen del método de instancia
-
#¡Conectar! ⇒ TCP
privada
Establece una conexión de socket.
- #conectar_con_tiempo_de_espera(sockaddr, tiempo_de_espera_de_conexión) ⇒ Objeto privada
- #connect_without_timeout(sockaddr) ⇒ Objeto privada
-
#inicializar(host, puerto, tiempo de espera, familia, opciones = {}) ⇒ TCP
constructor
privada
Inicializa un nuevo socket TCP.
Métodos heredados de Mongo::Socket
#vivo?, #cerrado, #conectable?, #dirección_de_conexión, #generación_de_conexión, #fin_de?, #obtiene, #monitorear?, #tubería, #leer, #byte_de_lectura, #resumen, #escribir
Detalles del constructor
#inicializar(host, puerto, tiempo de espera, familia, opciones = {}) ⇒ 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, 'Sedebe especificar la familia' end Super(tiempo de espera, ) @host, @puerto = host, Puerto @familia = familia @socket = ::Enchufe.Nuevo(familia, CORRIENTE DE CALCETINES, 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.
Devuelve host El host al que conectarse.
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 muta el objeto configurando el socket internamente.
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! Socket.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1) sockaddr = ::Enchufe.pack_sockaddr_in(Puerto, host) tiempo de espera de conexión = [:tiempo de espera de conexión] excepciones de mapa hacer Si tiempo de espera de conexión && tiempo de espera de conexión != 0 conectar_con_tiempo_de_espera(sockaddr, tiempo de espera de conexión) else conectar_sin_tiempo_de_espera(sockaddr) end end yo end |
#conectar_con_tiempo_de_espera(sockaddr, tiempo_de_espera_de_conexión) ⇒ 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, tiempo de espera de conexión) Si tiempo de espera de conexión < = 0 propagar Error::Error de tiempo de espera del socket, "Elsocket tardó más de #{connect_timeout} segundos enconectarse" end fecha tope = Utils.monotonic_time + tiempo de espera de conexión begin Socket.conectar_sin_bloqueo(sockaddr) rescate IO::EsperaEscribible select_timeout = fecha tope - Utils.monotonic_time Si select_timeout < = 0 propagar Error::Error de tiempo de espera del socket, "Elsocket tardó más de #{connect_timeout} segundos enconectarse" end Si IO.Seleccione(nulo, [Socket], nulo, select_timeout) reintentar else Socket.cerrar propagar Error::Error de tiempo de espera del socket, "Elsocket tardó más de #{connect_timeout} segundos enconectarse" end rescate Errno::EISCONN # El socket 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 conectar_sin_tiempo_de_espera(sockaddr) Socket.Conectar(sockaddr) end |