Clase: Mongo::Srv::Resolver Privada

Hereda:
Objeto
  • Objeto
Mostrar todo
Incluye:
Registrable
Definido en:
lib/mongo/srv/resolver.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.

Encapsula el comportamiento necesario para consultar los registros SRV según lo requerido por el controlador.

Resumen de constantes colapsar

RECORD_PREFIX =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

Devuelve RECORD_PREFIX El prefijo antepuesto a cada nombre de host antes de consultar los registros SRV.

Devuelve:

  • (string)

    RECORD_PREFIX Prefijo agregado al nombre de host antes de consultar los registros SRV.

'._mongodb._tcp.'

Constantes incluidas desde Loggable

Loggable::PREFIX

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Métodos incluidos desde Registrable

#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger

Detalles del Constructor

#initialize(**opts) ⇒ Resolver

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.

Crea un nuevo Resolver.

Parámetros:

  • opciones (encriptada)

    un conjunto personalizable de opciones

Hash de opciones (**opts):

  • :timeout (Flotante)

    El tiempo de espera, en segundos, que se debe usar para cada resolución de registro DNS.

  • :raise_on_invalid (booleano)

    Si se debe o no generar una excepción si se encuentra un registro con un dominio no coincidente o si no se encuentra ningún registro. Por defecto es true.

  • resolv_options (encriptada)

    Para uso interno de conductores solamente. Opciones para pasar al constructor de Resolv::DNS para búsquedas SRV.



49
50
51
52
53
# Archivo 'lib/mongo/srv/resolver.rb', línea 49

def inicializar(**opciones)
  @options = opciones.freeze
  @resolver = Resolv::DNS.Nuevo(@options[resolv_options])
  @resolver.Tiempos de espera = tiempo de espera
end

Detalles de atributo de instancias

#opcionesHash (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 opciones de Resolver.

Devuelve:

  • (encriptada)

    Opciones del solucionador.



56
57
58
# Archivo 'lib/mongo/srv/resolver.rb', línea 56

def opciones
  @options
end

Detalles del método de instancia

#get_records(hostname, srv_service_name = nil, srv_max_hosts = nil) ⇒ Mongo::Srv::Result

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.

Obtiene todos los registros SRV para un nombre de host dado. Si se especifica un valor para srv_max_hosts y es mayor que 0, devuelve el número máximo de registros de srv_max_hosts.

En el evento de que se encuentre un registro con un dominio que no coincida o no se encuentren registros, si la opción :raise_on_invalid es verdadera, se generará una excepción; de lo contrario, se registrará una advertencia.

Parámetros:

  • Nombre del host (string)

    El nombre de host cujos registros deben obtenerse.

  • srv_service_name (String | nil) (valor por defecto: nil)

    El nombre del servicio SRV para la consulta DNS. Si está en nil, se usa 'mongodb'.

  • srv_max_hosts (Integer | nil) (valor por defecto: nil)

    El número máximo de registros a devolver. Si este valor es nulo, se devuelven todos los registros.

Devuelve:

Aumenta:

  • (Mongo::Error::DominioIncompatible)

    Si la opción Resolver :raise_in_invalid es verdadera y se encuentra un registro con un nombre de dominio que no coincide con el nombre de host.

  • (Mongo::Error::NoSRVRecords)

    Si la opción Resolver :raise_in_invalid es verdadera y no se encuentran registros.



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# Archivo 'lib/mongo/srv/resolver.rb', línea 82

def obtener_registros(Nombre del host, srv_service_name = nulo, srv_max_hosts = nulo)
  nombre_query = prefijo_de_registro(srv_service_name) + Nombre del host
  Recursos = @resolver.getresources(nombre_query, Resolv::DNS::Resource::in::SRV)

  # Reunir todos los registros en un objeto Result, generando un error.
  # o registrar una advertencia si se encuentra un registro con un dominio que no coincide.
  # Tenga en cuenta que, en caso de que se emita una advertencia, el registro _no_
  # añadido al objeto Result.
  Resultado = Srv::Resultado.Nuevo(Nombre del host)
  Recursos.cada hacer |registro|
    Resultado.add_record(registro)
  rescate Error::Dominio no coincidente => e
    propagar si raise_on_invalid?

    log_warn(e.mensaje)
  end

  # Si no se encuentran registros, o se genera un error o se registra una advertencia
  # basado en la opción :raise_on_invalid del Resolver.
  si Resultado.¿vacío?
    propagar Error::NoSRVRecords.Nuevo(URI::SRVProtocol::NO_SRV_RECORDS % Nombre del host) si raise_on_invalid?

    log_warn(URI::SRVProtocol::NO_SRV_RECORDS % Nombre del host)

  end

  # si srv_max_hosts está en [1, #direcciones)
  si (1...Resultado.address_strs.longitud).incluir? srv_max_hosts
    registros_muestreados = Recursos.muestra(srv_max_hosts)
    Resultado = Srv::Resultado.Nuevo(Nombre del host)
    registros_muestreados.cada { |registro| Resultado.add_record(registro) }
  end
  Resultado
end

#get_txt_options_string(hostname) ⇒ nil | String

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.

Obtiene los registros TXT de un host.

Parámetros:

  • Nombre del host (string)

    El host cuyos registros TXT deben obtenerse.

Devuelve:

  • (nil | String)

    URI options string del registro TXT asociado con el nombre de host, o nil si no existe tal registro.

Aumenta:



125
126
127
128
129
130
131
132
133
134
135
136
# Archivo 'lib/mongo/srv/resolver.rb', línea 125

def get_txt_options_string(Nombre del host)
  registro = @resolver.getresources(Nombre del host, Resolv::DNS::Resource::in::TXT)
  return nulo si registro.¿vacío?

  si registro.longitud > 1
    msg = "Solo se permite un registro TXT: la consulta al nombre de host #{hostname} devolvió #{records.length} registros"

    propagar Error::InvalidTXTRecord, msg
  end

  registro[0].Cuerdas.unirse
end

#registro_prefijo(srv_service_name = nil) ⇒ String

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.

Genera el prefijo del registro con un nombre de servicio SRV personalizado si se proporciona.

Parámetros:

  • srv_service_name (encriptada) (valor por defecto: nil)

    un conjunto personalizable de opciones

Opciones de Hash (srv_service_name):

  • La (String | nil)

    Nombre del servicio SRV que se utilizará en el prefijo del registro.

Devuelve:

  • (string)

    El prefijo de registro generado.



36
37
38
# Archivo 'lib/mongo/srv/resolver.rb', línea 36

def prefijo_de_registro(srv_service_name = nulo)
  srv_service_name ? "_#{srv_service_name}._tcp." : RECORD_PREFIX
end

#tiempo de esperaObjeto

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.



58
59
60
# Archivo 'lib/mongo/srv/resolver.rb', línea 58

def tiempo de espera
  opciones[:timeout] || Supervisar::DEFAULT_TIMEOUT
end