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.

Colapso delresumen constante

RECORD_PREFIX =

Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve RECORD_PREFIX El prefijo añadido 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.'.freeze

Constantes incluidas desde Loggable

Registrable::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 forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Crea un nuevo Resolver.

Parámetros:

  • opta (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_opciones (Hash)

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



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

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

Detalles de los atributos de instancia

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

Devuelve:

  • (encriptada)

    Opciones de resolución.



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

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 forma parte de una API privada. Debe evitarlo 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) (predeterminado: nulo)

    El nombre del servicio SRV para la query DNS. Si es nulo, se usa 'mongodb'.

  • srv_max_hosts (Integer | nil) (predeterminado: nulo)

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

Devuelve:

Aumenta:



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
116
117
118
119
120
121
122
# Archivo 'lib/mongo/srv/resolver.rb', línea 84

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::EN::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 Resultado.
  Resultado = Srv::Resultado.Nuevo(Nombre del host)
  Recursos.cada hacer |registro|
    begin
      Resultado.agregar_registro(registro)
    rescate Error::Dominio no coincidente => e
      si raise_on_invalid?
        propagar
      else
        advertencia de registro(e.mensaje)
      end
    end
  end

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

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

#get_txt_options_string(hostname) ⇒ nil | String

Este método forma parte de una API privada. Debe evitarlo 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:



132
133
134
135
136
137
138
139
140
141
142
143
144
145
# Archivo 'lib/mongo/srv/resolver.rb', línea 132

def cadena de opciones get_txt(Nombre del host)
  registro = @resolver.getresources(Nombre del host, Resolv::DNS::Resource::EN::TXT)
  si registro.¿vacío?
    return nulo
  end

  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 forma parte de una API privada. Debe evitarlo 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 (Hash) (predeterminado: nulo)

    un conjunto personalizable de opciones

Opciones de Hash (srv_service_name):

  • La (String | nil)

    Nombre del servicio SRV a utilizar en el prefijo del registro.

Devuelve:

  • (string)

    El prefijo de registro generado.



38
39
40
# Archivo 'lib/mongo/srv/resolver.rb', línea 38

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

#tiempo de esperaObjeto

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



60
61
62
# Archivo 'lib/mongo/srv/resolver.rb', línea 60

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