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.
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.
'_mongodb._tcp.'.freeze
Constantes incluidas desde Loggable
Resumen de atributos de la instancia colapsar
-
#options ⇒ Hash
Solo lectura
privado
Opciones de resolución.
Resumen del método de instancia colapsar
-
#obtener_registros(nombre_de_host, nombre_de_servicio_de_servidor = nil, hosts_máximos_de_servidor = 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.
-
#inicializar(**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 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.
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
#opciones ⇒ Hash (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.
58 59 60 |
# Archivo 'lib/mongo/srv/resolver.rb', línea 58 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 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.
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.) 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.
132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# Archivo 'lib/mongo/srv/resolver.rb', línea 132 def (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.
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 espera ⇒ Objeto
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 [:timeout] || Supervisar::DEFAULT_TIMEOUT end |