Clase: Mongo::Socket::TCP Privada

Hereda:
Mongo::Socket Mostrar todo
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.

Desde:

  • 2.0.0

Resumen constante

Constantes heredadas de Mongo::Socket

SSL_ERROR, TIMEOUT_ERROR, TIMEOUT_PACK, WRITE_CHUNK_SIZE

Resumen de atributos de la instancia colapsar

Atributos heredados de Mongo::Socket

#familia, #opciones, #socket, #timeout

Resumen del método de instancia colapsar

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.

Ejemplos:

Crear el socket TCP.

TCP.new('::1', 27017, 30, Socket::PF_INET)
TCP.new('127.0.0.1', 27017, 30, Socket::PF_INET)

Parámetros:

  • host (string)

    El nombre de host o la dirección IP.

  • Puerto (Número entero)

    El número de puerto.

  • tiempo de espera (Float)

    El valor de tiempo de espera del socket.

  • familia (Número entero)

    La familia de sockets.

  • opciones (Hash) (por defecto: {})

    Las opciones.

Opciones Hash (options):

  • :tiempo de espera de conexión (Flotante)

    Tiempo de espera de conexión.

  • Dirección de conexión ( DIRECCIÓN)

    Dirección de la conexión que creó este socket.

  • :connection_generation (Entero)

    Generación de la conexión (para conexiones que no son de supervisión) que creó este socket.

  • supervisar (true | false)

    Si este socket fue creado por una conexión de supervisión.

Desde:

  • 2.0.0



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, opciones = {})
  si familia.nil?
    propagar ArgumentError, 'la familia debe especificarse'
  end
  super(tiempo de espera, opciones)
  @host, @puerto = host, Puerto
  @familia = familia
  @socket = ::Socket.Nuevo(familia, SOCK_STREAM, 0)
  begin
    set_socket_options(@socket)
    ¡conectar!
  rescate
    @socket.Cerrar
    propagar
  end
end

Detalles de los atributos de instancia

#hostCadena (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.

Devuelve:

  • (string)

    host El host al que conectarse.

Desde:

  • 2.0.0



66
67
68
# Archivo 'lib/mongo/socket/tcp.rb', línea 66

def host
  @host
end

#puertoEntero (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.

Devuelve:

  • (Número entero)

    puerto El puerto al que conectarse.

Desde:

  • 2.0.0



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.

Nota:

Este método modifica el objeto al establecer internamente el socket.

Establece una conexión de socket.

Ejemplos:

Conecta el socket.

sock.connect!

Devuelve:

  • (TCP)

    La instancia de socket conectada.

Desde:

  • 2.0.0



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 = opciones[: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.

Desde:

  • 2.0.0



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.

Desde:

  • 2.0.0



98
99
100
# Archivo 'lib/mongo/socket/tcp.rb', línea 98

def connect_without_timeout(sockaddr)
  enchufe.Conectar(sockaddr)
end