Clase: Mongo::Dirección

Hereda:
Objeto
  • Objeto
Mostrar todo
Ampliado por:
Reenviable
Definido en:
lib/mongo/address.rb,
lib/mongo/address/ipv.rb,4
lib/mongo/address/ipv.rb,6
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 en el espacio de nombres

Modules: Validator Clases: IPv4, IPv6, Unix

Colapso delresumen constante

MAPA_FAMILIAR =

Mapeo de la familia de sockets a la clase resolver.

Desde:

  • 2.0.0

{
  ::Enchufe::PF_UNIX => UNIX,
  ::Enchufe::AF_INET6 => IPv6,
  ::Enchufe::AF_INET => IPv4
}.freeze
HOST LOCAL =

La constante localhost.

Desde:

  • 2.1.0

'localhost'.freeze

Colapso delresumen de atributos de instancia

Colapso del resumen del método de instancia

Detalles del constructor

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

Inicializar la dirección.

Ejemplos:

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

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

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

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

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

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

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

Mongo::Address.new("127.0.0.1")

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

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

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

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

Inicialice la dirección con un socket Unix.

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

Parámetros:

  • semillas (Cadena) -

    La dirección proporcionada.

  • opciones (Hash) (predeterminado: {})

    Las opciones de dirección.

Opciones Hash(opciones):

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

    Tiempo de espera de conexión.

Desde:

  • 2.0.0



75
76
77
78
79
80
81
82
# Archivo 'lib/mongo/address.rb', línea 75

def inicializar(semillas, opciones = {})
  Si semillas.nil?
    propagar ArgumentError, "ladirección no debe sernula"
  end
  @semilla = semillas
  @host, @puerto = parse_host_port
  @opciones = Picadillo[opciones.map { |k, v| [k.a_sym, v] }]
end

Detalles de los atributos de instancia

#hostCadena (solo lectura)

Devuelve el host El nombre del host original.

Devuelve:

  • (Cadena) -

    host El nombre del host original.

Desde:

  • 2.0.0



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

def host
  @host
end

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

Desde:

  • 2.0.0



94
95
96
# Archivo 'lib/mongo/address.rb', línea 94

def opciones
  @opciones
end

#puertoEntero (solo lectura)

Devuelve puerto El puerto.

Devuelve:

  • (Entero)

    puerto El puerto.

Desde:

  • 2.0.0



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

def Puerto
  @puerto
end

#semillaCadena (solo lectura)

Devuelve semilla La dirección de la semilla.

Devuelve:

  • (Cadena) -

    semilla La dirección de la semilla.

Desde:

  • 2.0.0



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

def semillas
  @semilla
end

Detalles del método de instancia

#==(otro) ⇒ true, false

Verificar la igualdad de la dirección con otra.

Ejemplos:

Verificar igualdad de direcciones.

address == other

Parámetros:

  • otros (Objeto) -

    El otro objeto.

Devuelve:

  • (verdadero,falso)

    Si los objetos son iguales.

Desde:

  • 2.0.0



106
107
108
109
# Archivo 'lib/mongo/address.rb', línea 106

def ==(otros)
  return false a no ser que otros.is_a?(Dirección)
  host == otros.host && Puerto == otros.Puerto
end

#eql?(otro) ⇒ verdadero, falso

Comprobar la igualdad para el hash.

Ejemplos:

Comprobar la igualdad de hash.

address.eql?(other)

Parámetros:

  • otros (Objeto) -

    El otro objeto.

Devuelve:

  • (verdadero,falso)

    Si los objetos son iguales.

Desde:

  • 2.2.0



121
122
123
# Archivo 'lib/mongo/address.rb', línea 121

def eql?(otros)
  yo == otros
end

#hashEntero

Calcular el valor hash de la dirección.

Ejemplos:

Calcule el valor hash.

address.hash

Devuelve:

  • (Entero)

    El valor hash.

Desde:

  • 2.0.0



133
134
135
# Archivo 'lib/mongo/address.rb', línea 133

def hash
  [ host, Puerto ].hash
end

#inspeccionarCadena

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

Ejemplos:

Obtenga la inspección de dirección.

address.inspect

Devuelve:

  • (Cadena) -

    La bonita cadena de inspección.

Desde:

  • 2.0.0



145
146
147
# Archivo 'lib/mongo/address.rb', línea 145

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

#socket(tiempo de espera de socket, opciones = {}) ⇒ Mongo::Socket::SSL | Mongo::Socket::TCP | Mongo::Socket::Unix

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Obtenga 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 intenta resolver la dirección almacenada en este objeto en4 direcciones IPv e IPv6 mediante Socket#getaddrinfo, se conecta a las direcciones resultantes y devuelve el socket de la primera conexión exitosa. El orden en que46se intentan las familias de direcciones (IPv /IPV) es el mismo en que devuelve las getaddrinfo direcciones, y lo determina el sistema host.

La resolución de nombres se realiza en cada llamada socket. Esto se hace para que el controlador detecte inmediatamente cualquier cambio en las direcciones a las que se resuelven los nombres de host utilizados como semillas o en la configuración del servidor, incluso si se ha conectado previamente un socket al nombre o dirección de host afectado. Sin embargo, tenga en cuenta que los valores TTL de DNS aún pueden afectar cuando el controlador detecta 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:

Consigue un enchufe.

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

Parámetros:

  • tiempo de espera del socket (Flotar) -

    El tiempo de espera del socket.

  • opta (Hash) (predeterminado: {})

    Las opciones.

Opciones Hash (opts):

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

    Tiempo de espera de conexión.

  • :csot (Booleano)

    Si se debe considerar el tiempo de espera de la operación del cliente al conectar el socket. Esta opción solo influye en los errores que se generarán si se agota el tiempo de espera.

  • :ssl (true | false)

    Si se debe utilizar SSL.

  • :certificado ssl_ca_cert (Cadena)

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

  • :objeto de certificado SSL CA (Matriz<OpenSSL::X509::Certificate>)

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

  • :cadena de certificado ssl_ca (Cadena)

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

  • :certificado_ssl (Cadena)

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

  • :objeto de certificado SSL (OpenSSL::X::Certificado)509

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

  • :ssl_cert_string (Cadena)

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

  • :ssl_key (Cadena)

    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_contraseña_de_clave_ssl (Cadena)

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

  • :cadena de claves SSL (Cadena)

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

  • :ssl_verify (verdadero,falso)

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

  • :certificado_de_verificación_ssl (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:

Aumentos:

Desde:

  • 2.0.0



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
252
253
254
255
# Archivo 'lib/mongo/address.rb', línea 219

def Socket(tiempo de espera del socket, opta = {})
  csot = !!opta[:csot]
  opta = {
    connect_timeout: Servidor::CONNECT_TIMEOUT,
  }.update(opciones).update(Picadillo[opta.map { |k, v| [k.a_sym, v] }])

  excepciones de mapa(csot) hacer
    Si semillas.mayúsculas y minúsculas =~ UNIX::FÓSFORO
      dirección_específica = UNIX.Nuevo(semillas.mayúsculas y minúsculas)
      return dirección_específica.Socket(tiempo de espera del socket, opta)
    end

    # Cuando el controlador se conecta a "localhost", solo intenta IPv4
    # conexiones. Cuando el controlador se conecta a otros hosts,
    # Intente conexiones IPv4 y IPv6.
    familia = (host == LOCALHOST) ? ::Enchufe::AF_INET : ::Enchufe::AF_UNSPEC
    Error = nulo
    # A veces, Socket#getaddrinfo devuelve la misma información más de una vez
    # (múltiples elementos idénticos en la matriz devuelta). No hace
    # No tiene sentido intentar conectarse a la misma dirección más de una vez, por lo tanto
    #Eliminar duplicados aquí.
    infos = obtener información(host, familia)
    resultados = infos.map hacer |información|
      [información[4], información[3]]
    end.único
    resultados.cada hacer |familia, dirección_str|
      begin
        dirección_específica = MAPA FAMILIAR[familia].Nuevo(dirección_str, Puerto, host)
        Socket = dirección_específica.Socket(tiempo de espera del socket, opta)
        return Socket
      rescate IOError, SystemCallError, Error::Error de tiempo de espera del socket, Error::Error de socket => e
        Error = e
      end
    end
    propagar Error
  end
end

#to_sCadena

Obtenga la dirección como una cadena.

Ejemplos:

Obtenga la dirección como una cadena.

address.to_s

Devuelve:

  • (Cadena) -

    La bonita cuerda.

Desde:

  • 2.0.0



265
266
267
268
269
270
271
272
273
274
275
# Archivo 'lib/mongo/address.rb', línea 265

def a_s
  Si Puerto
    Si host.¿incluir?(':')
      "[#{host}]:#{puerto}"
    else
      "#{host }:#{puerto}"
    end
  else
    host
  end
end