Clase: Mongo::Socket::TCP Privada
- Hereda:
-
Socket
- Objeto
- 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 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.
Resumen del método de instancia colapsar
-
#¡conecta! ⇒ 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.
Detalles del Constructor
#initialize(host, port, timeout, family, options = {}) ⇒ TCP
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Inicializa un nuevo socket TCP.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# Archivo 'lib/mongo/socket/tcp.rb', línea 45 def inicializar(host, Puerto, tiempo de espera, familia, = {}) propagar ArgumentError, 'la familia debe especificarse' si familia.nil? super(tiempo de espera, ) @host, @port = host, Puerto @family = familia @socket = ::Socket.Nuevo(familia, SOCK_STREAM, 0) begin (@socket) ¡conectar! rescate StandardError @socket.Cerrar propagar end end |
Detalles de atributo de instancias
#host ⇒ String (solo lectura)
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Retorna host El host al que conectar.
62 63 64 |
# Archivo 'lib/mongo/socket/tcp.rb', línea 62 def host @host end |
#puerto ⇒ Entero (solo lectura)
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve el puerto El puerto al que conectarse.
65 66 67 |
# Archivo 'lib/mongo/socket/tcp.rb', línea 65 def Puerto @port end |
Detalles del método de instancia
#¡conecta! ⇒ TCP
Este método es parte de una API privada. Se debe evitar el uso de este método 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.
79 80 81 82 83 84 85 86 87 88 89 90 91 |
# Archivo 'lib/mongo/socket/tcp.rb', línea 79 def ¡conectar! enchufe.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1) sockaddr = ::Socket.pack_sockaddr_in(Puerto, host) conectar_timeout = [timeout_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 es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# Archivo 'lib/mongo/socket/tcp.rb', línea 99 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.connect_nonblock(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 |
#connect_without_timeout(sockaddr) ⇒ Object
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
94 95 96 |
# Archivo 'lib/mongo/socket/tcp.rb', línea 94 def connect_without_timeout(sockaddr) enchufe.Conectar(sockaddr) end |