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 Clases: IPv4, IPv6, Unix

Colapso delresumen constante

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'.freeze

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")

Inicialice 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]")

Inicialice la dirección con un socket Unix.

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

Parámetros:

  • semillas (string)

    La dirección proporcionada.

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

    Las opciones de dirección.

Opciones Hash (options):

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

    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
  @seed = semillas
  @host, @puerto = parse_host_port
  @options = Picadillo[opciones.map { |k, v| [k.to_sym, v] }]
end

Detalles de los atributos de instancia

#hostCadena (solo lectura)

Devuelve el host El nombre del host original.

Devuelve:

  • (string)

    host El nombre de 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
  @options
end

#puertoEntero (solo lectura)

Devuelve el puerto El puerto.

Devuelve:

  • (Número entero)

    puerto El puerto.

Desde:

  • 2.0.0



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

def Puerto
  @puerto
end

#semillastring (solo lectura)

Devuelve semilla La dirección de la semilla.

Devuelve:

  • (string)

    semilla La dirección de la semilla.

Desde:

  • 2.0.0



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

def semillas
  @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:

  • (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 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:

  • (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)
  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



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

def hash
  [ host, Puerto ].hash
end

#inspectString

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

Ejemplos:

Obtenga la inspección de dirección.

address.inspect

Devuelve:

  • (string)

    La bonita cadena de inspección.

Desde:

  • 2.0.0



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

def inspeccionar
  "#<Mongo::Address:0x#{object_id} address=#{to_s}>"
end

#socket(socket_timeout, opts = {}) ⇒ 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 a direcciones IPv4 e IPv6 usando Socket#getaddrinfo, luego se conecta a las direcciones resultantes y devuelve el socket de la primera conexión exitosa. El orden en que se prueban las familias de direcciones (IPv4/IPV6) es el mismo en que se devuelven las direcciones por getaddrinfo y está 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.

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

    Las opciones.

Opciones Hash (opts):

  • :tiempo de espera de 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.

  • :certificado ssl_ca_cert (Cadena)

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

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

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

  • :ssl_ca_cert_string (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::X509::Certificate)

    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 clave SSL (Cadena)

    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



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 enchufe(socket_timeout, opta = {})
  csot = !!opta[:csot]
  opta = {
    connect_timeout: Server::CONNECT_TIMEOUT,
  }.update(opciones).update(Picadillo[opta.map { |k, v| [k.to_sym, v] }])

  map_exceptions(csot) hacer
    si semillas.minúscula =~ Unix::coincidencia
      specific_address = Unix.Nuevo(semillas.minúscula)
      return specific_address.enchufe(socket_timeout, opta)
    end

    # Cuando el driver se conecta a "localhost", solo intenta IPv4
    # conexiones. Cuando el controlador se conecta a otros hosts,
    # Intente conexiones IPv4 y 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
    # No 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.único
    Resultados.cada hacer |familia, address_str|
      begin
        specific_address = MAPA FAMILIAR[familia].Nuevo(address_str, Puerto, host)
        enchufe = specific_address.enchufe(socket_timeout, opta)
        return enchufe
      rescate IOError, SystemCallError, Error::SocketTimeoutError, Error::Error de socket => e
        Error = e
      end
    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



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

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