Clase: Mongo::Srv::Resolver Privada
- Hereda:
-
Objeto
- Objeto
- Mongo::Srv::Resolver
- 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.
'._mongodb._tcp.'
Constantes incluidas desde Loggable
Resumen de atributos de la instancia colapsar
-
#options ⇒ Hash
Solo lectura
privado
Opciones del solucionador.
Resumen del método de instancia colapsar
-
#obtener_registros(nombre_host, srv_nombre_servicio = nil, srv_max_hosts = nil) ⇒ Mongo::Srv::Resultado
privado
Obtiene todos los registros SRV de un determinado nombre de host.
-
#get_txt_options_string(hostname) ⇒ nil | String
privado
Obtiene los registros TXT de un host.
-
#initialize(**opts) ⇒ Resolver
constructor
privado
Crea un nuevo Resolver.
-
#record_prefix(srv_service_name = nil) ⇒ String
privado
Genera el prefijo del registro con un nombre de servicio SRV personalizado si se proporciona.
- #timeout ⇒ Objecto privado
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.
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
#opciones ⇒ Hash (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.
56 57 58 |
# Archivo 'lib/mongo/srv/resolver.rb', línea 56 def @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.
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.) 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.
125 126 127 128 129 130 131 132 133 134 135 136 |
# Archivo 'lib/mongo/srv/resolver.rb', línea 125 def (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.
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 espera ⇒ Objeto
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 [:timeout] || Supervisar::DEFAULT_TIMEOUT end |