Clase: Mongo::Address

Hereda:
Objeto
  • Objeto
Mostrar todo
Ampliado por:
Reenviable
Definido en:
lib/mongo/address.rb,
lib/mongo/address/ipv4.rb,
lib/mongo/address/ipv6.rb,
lib/mongo/address/unix.rb,
lib/mongo/address/validator.rb

Overview

Representa una dirección a un servidor, ya sea con una dirección IP o una ruta de socket.

Desde:

  • 2.0.0

Definido bajo Namespace

Modules: Validator clase: IPv4, IPv6, Unix

Resumen de constantes colapsar

FAMILY_MAP =

Mapeo de la familia de sockets a la clase resolver.

Desde:

  • 2.0.0

{
  ::Socket::PF_UNIX => Unix,
  ::Socket::AF_INET6 => IPv6,
  ::Socket::AF_INET => IPv4
}.freeze
LOCALHOST =

La constante localhost.

Desde:

  • 2.1.0

'localhost'

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Detalles del Constructor

#inicializar(seed, opciones = {}) ⇒ Dirección

Inicializa la dirección.

Ejemplos:

Inicializa la dirección con una entrada de DNS y un puerto.

Mongo::Address.new("app.example.com:27017")

Inicializa la dirección con una entrada DNS y sin puerto.

Mongo::Address.new("app.example.com")

Inicializa la dirección con una dirección IPV4 y un puerto.

Mongo::Address.new("127.0.0.1:27017")

Inicializa la dirección con una dirección IPV4 y sin puerto.

Mongo::Address.new("127.0.0.1")

Inicializa la dirección con una dirección IPV6 y un puerto.

Mongo::Address.new("[::1]:27017")

Inicializa la dirección con una dirección IPV6 y sin puerto.

Mongo::Address.new("[::1]")

Inicializa la dirección con un socket unix.

Mongo::Address.new("/path/to/socket.sock")

Parámetros:

  • Semilla (string)

    La dirección proporcionada.

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

    Las opciones de dirección.

Opciones Hash (options):

  • timeout_conexión (Flotante)

    Tiempo de espera de conexión.

Aumenta:

  • (ArgumentError)

Desde:

  • 2.0.0



73
74
75
76
77
78
79
# Archivo 'lib/mongo/address.rb', línea 73

def inicializar(Semilla, opciones = {})
  propagar ArgumentError, 'la dirección no debe ser nula' si Semilla.nil?

  @seed = Semilla
  @host, @port = parse_host_port
  @options = encriptada[opciones.map { |k, v| [ k.to_sym, v ] }]
end

Detalles de atributo de instancias

#hostString (solo lectura)

Devuelve host El nombre de host original.

Devuelve:

  • (string)

    host El nombre de host original.

Desde:

  • 2.0.0



85
86
87
# Archivo 'lib/mongo/address.rb', línea 85

def host
  @host
end

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

Desde:

  • 2.0.0



91
92
93
# Archivo 'lib/mongo/address.rb', línea 91

def opciones
  @options
end

#puertoEntero (solo lectura)

Devuelve el puerto El puerto.

Devuelve:

  • (Número entero)

    puerto El puerto.

Desde:

  • 2.0.0



88
89
90
# Archivo 'lib/mongo/address.rb', línea 88

def Puerto
  @port
end

#semillastring (solo lectura)

Devuelve semilla La dirección de semilla.

Devuelve:

  • (string)

    semilla. La dirección semilla.

Desde:

  • 2.0.0



82
83
84
# Archivo 'lib/mongo/address.rb', línea 82

def Semilla
  @seed
end

Detalles del método de instancia

#==(otro) ⇒ true, false

Verificar la igualdad de la dirección con otra.

Ejemplos:

Verificar la igualdad de direcciones.

address == other

Parámetros:

  • Otros (objeto)

    El otro objeto.

Devuelve:

  • (true, false)

    Si los objetos son iguales.

Desde:

  • 2.0.0



103
104
105
106
107
# Archivo 'lib/mongo/address.rb', línea 103

def ==(Otros)
  return false a menos que Otros.is_a?(Dirección)

  host == Otros.host && Puerto == Otros.Puerto
end

#eql?(otro) ⇒ true, false

Verifica la igualdad para el hashing.

Ejemplos:

Verifica la igualdad de hash.

address.eql?(other)

Parámetros:

  • Otros (objeto)

    El otro objeto.

Devuelve:

  • (true, false)

    Si los objetos son iguales.

Desde:

  • 2.2.0



119
120
121
# Archivo 'lib/mongo/address.rb', línea 119

def eql?(Otros)
  sí mismo == Otros
end

#hashInteger

Calcula el valor hash de la dirección.

Ejemplos:

Calcule el valor hash.

address.hash

Devuelve:

  • (Número entero)

    El valor hash.

Desde:

  • 2.0.0



131
132
133
# Archivo 'lib/mongo/address.rb', línea 131

def hash
  [ host, Puerto ].hash
end

#inspectString

Obtén una inspección de dirección con impresión agradable.

Ejemplos:

Obtener la inspección de la dirección.

address.inspect

Devuelve:

  • (string)

    La bonita cadena de inspección.

Desde:

  • 2.0.0



143
144
145
# Archivo 'lib/mongo/address.rb', línea 143

def inspeccionar
  "#<Mongo::Address:0x#{object_id} dirección=#{self}>"
end

#socket(socket_timeout, opts = {}) ⇒ Mongo::Socket::SSL | Mongo::Socket::TCP | Mongo::Socket::Unix

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.

Consigue un socket para la dirección almacenada en este objeto, dadas las opciones.

Si la dirección almacenada en este objeto parece una ruta Unix, este método devuelve un socket de dominio Unix para esta ruta.

De lo contrario, este método intentará resolver la dirección almacenada en este objeto a direcciones IPv4 y IPv6 mediante Socket#getaddrinfo, luego se conectará a las direcciones resultantes y devolverá el socket de la primera conexión exitosa. El orden en que se intentan las familias de direcciones (IPv4/IPV6) es el mismo orden en que las direcciones son devueltas por getaddrinfo, y es determinado por el sistema host.

La resolución de nombres se realiza en cada llamada a socket. Esto se hace para que cualquier cambio en las direcciones a las que se resuelven los nombres de host usados como semillas o en la configuración del servidor sean detectados inmediatamente por el driver, incluso si previamente se ha conectado un socket al nombre/dirección de host afectado. Sin embargo, ten en cuenta que los valores TTL de DNS pueden seguir afectando cuándo el controlador nota un cambio en una dirección de host.

Este método propaga cualquier excepción que se produzca durante la resolución de DNS y los intentos de conexión posteriores. En caso de que un nombre de host resuelva en múltiples direcciones IP, el error generado por el último intento se propaga al llamador. Este método no asigna las excepciones a subclases de Mongo::Error y puede lanzar cualquier subclase de Exception.

Ejemplos:

Obtenga un socket.

address.socket(5, :ssl => true)

Parámetros:

  • socket_timeout (Float)

    El tiempo de espera del socket.

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

    Las opciones.

Opciones Hash (opts):

  • timeout_conexión (Flotante)

    Tiempo de espera de conexión.

  • :csot (booleano)

    Si debería considerarse el tiempo de espera de la operación del lado del cliente al conectar el socket. Esta opción sólo influye en los errores que se generarán si se agota el tiempo de espera.

  • :ssl (true | false)

    Indicar si se debe usar SSL.

  • archivo CA de seguridad SSL (string)

    Igual que la opción correspondiente de Cliente/Socket::SSL.

  • Objeto ssl_ca_cert (Array<OpenSSL::X509::Certificate>)

    Igual que la opción correspondiente de Cliente/Socket::SSL.

  • :ssl_ca_cert_string (string)

    Igual que la opción correspondiente de Cliente/Socket::SSL.

  • certificado SSL (string)

    Igual que la opción correspondiente de Cliente/Socket::SSL.

  • Certificado SSL (OpenSSL::X509::Certificate)

    Igual que la opción correspondiente de Cliente/Socket::SSL.

  • :ssl_cert_string (string)

    Igual que la opción correspondiente de Cliente/Socket::SSL.

  • :ssl_key (string)

    Igual que la opción correspondiente de Cliente/Socket::SSL.

  • :ssl_key_object (OpenSSL::PKey)

    Igual que la opción correspondiente de Cliente/Socket::SSL.

  • frase_de_paso_de_clave_ssl (string)

    Igual que la opción correspondiente de Cliente/Socket::SSL.

  • Cadena de clave SSL (string)

    Igual que la opción correspondiente de Cliente/Socket::SSL.

  • Verificación SSL (verdadero, falso)

    Igual que la opción correspondiente de Cliente/Socket::SSL.

  • ssl_verificar_certificado (verdadero, falso)

    Igual que la opción correspondiente de Cliente/Socket::SSL.

  • :ssl_verify_hostname (verdadero, falso)

    Igual que la opción correspondiente de Cliente/Socket::SSL.

Devuelve:

Aumenta:

Desde:

  • 2.0.0



217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
# Archivo 'lib/mongo/address.rb', línea 217

def enchufe(socket_timeout, opciones = {})
  csot = !!opciones[:csot]
  opciones = {
    connect_timeout: Server::CONNECT_TIMEOUT,
  }.update(opciones).update(encriptada[opciones.map { |k, v| [ k.to_sym, v ] }])

  map_exceptions(csot) hacer
    si Unix::coincidencia.¿corresponde?(Semilla.minúscula)
      specific_address = Unix.Nuevo(Semilla.minúscula)
      return specific_address.enchufe(socket_timeout, opciones)
    end

    # Cuando el driver se conecta a "localhost", solo intenta IPv4
    # conexiones. Cuando el controlador se conecte a otros hosts,
    # intentar ambas conexiones IPv4 e IPv6
    familia = (host == LOCALHOST) ? ::Socket::AF_INET : ::Socket::AF_UNSPEC
    Error = nulo
    # A veces, Socket#getaddrinfo devuelve la misma información más de una vez
    # (varios elementos idénticos en el arreglo devuelto). No hace
    # tiene sentido intentar conectarse a la misma dirección más de una vez, por lo tanto
    # eliminar duplicados aquí.
    infos = getaddrinfo(host, familia)
    Resultados = infos.map hacer |información|
      [ información[4], información[3] ]
    end.uniq
    Resultados.cada hacer |familia, address_str|
      specific_address = FAMILY_MAP[familia].Nuevo(address_str, Puerto, host)
      enchufe = specific_address.enchufe(socket_timeout, opciones)
      return enchufe
    rescate IOError, SystemCallError, Error::SocketTimeoutError, Error::SocketError => e
      Error = e
    end
    propagar Error
  end
end

#to_sString

Obtén la dirección como una string.

Ejemplos:

Obtén la dirección como una string.

address.to_s

Devuelve:

  • (string)

    La string agradable.

Desde:

  • 2.0.0



261
262
263
264
265
266
267
268
269
270
271
# Archivo 'lib/mongo/address.rb', línea 261

def to_s
  si Puerto
    si host.incluir?(':')
      "[#{host}]:#{port}"
    else
      "#{host}:#{port}"
    end
  else
    host
  end
end