Clase: Mongo::Srv::Resolver Privado

Hereda:
Objeto
  • Objeto
Mostrar todo
Incluye:
Registrable
Definido en:
lib/mongo/srv/resolver.rb

Overview

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

Encapsula el comportamiento necesario para consultar registros SRV según lo requiera el controlador.

Colapso delresumen constante

PREFIJO_DE_REGISTRO =

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:

  • (Cadena) -

    RECORD_PREFIX El prefijo añadido a cada nombre de host antes de consultar los registros SRV.

'_mongodb._tcp.'.freeze

Constantes incluidas desde Loggable

Registrable::PREFIX

Colapso delresumen de atributos de instancia

Colapso del resumen del método de instancia

Métodos incluidos en Loggable

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

Detalles del constructor

#inicializar(**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 (Hash)

    un conjunto personalizable de opciones

Opciones Hash (**opts):

  • :timeout (Flotar)

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

  • :raise_on_invalid (Booleano)

    Si se debe generar una excepción si se encuentra un registro con un dominio no coincidente o si no se encuentra ningún registro. El valor predeterminado es "true".

  • :resolv_opciones (Hash)

    Solo para uso interno del controlador. Opciones para pasar al constructor Resolv::DNS para búsquedas SRV.



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

def inicializar(**opta)
  @opciones = opta.freeze
  @resolver = Resolver::DNS.Nuevo(@opciones[: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 las opciones del solucionador.

Devuelve:

  • (Hash)

    Opciones de resolución.



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

def opciones
  @opciones
end

Detalles del método de instancia

#obtener_registros(nombre_de_host, nombre_de_servicio_de_servidor = nil, hosts_máximos_de_servidor = nil) ⇒ Mongo::Srv::Resultado

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 de un nombre de host determinado. Si se especifica un valor de srv_max_hosts mayor que 0, se devuelve el máximo de registros srv_max_hosts.

En el caso de que se encuentre un registro con un dominio no coincidente 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 (Cadena) -

    El nombre de host cuyos registros deben obtenerse.

  • nombre_del_servicio_srv (String | nil) (predeterminado: nulo)

    El nombre del servicio SRV para la consulta 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:

  • (Mongo::Srv::Resultado)

    Resultado de la búsqueda SRV.

Aumentos:



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, nombre_del_servicio_srv=nulo, srv_max_hosts=nulo)
  nombre_query = prefijo de registro(nombre_del_servicio_srv) + Nombre del host
  recursos = @resolver.getresources(nombre_query, Resolver::DNS::Resource::EN::SRV)

  # Recopila todos los registros en un objeto Result, lo que genera un error
  # o registrar una advertencia si se encuentra un registro con un dominio no coincidente.
  # Tenga en cuenta que en caso de que se genere una advertencia, el registro _no_ es
  # 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::Protocolo SRV::NO_REGISTROS_SRV % Nombre del host)
    else
      advertencia de registro(URI::Protocolo SRV::NO_REGISTROS_SRV % Nombre del host)
    end
  end

  # si srv_max_hosts está en [1, #direcciones)
  Si (1...resultado.direcciones_strs.longitud).¿incluir? srv_max_hosts
    registros muestreados = recursos.barajar.primera(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 (Cadena) -

    El host cuyos registros TXT deben obtenerse.

Devuelve:

  • (nil | Cadena ) —

    Cadena de opciones de URI del registro TXT asociado con el nombre de host, o nula si no existe dicho registro.

Aumentos:



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)
  registros = @resolver.getresources(Nombre del host, Resolver::DNS::Resource::EN::TXT)
  Si registros.¿vacío?
    return nulo
  end

  Si registros.longitud > 1
    msg = "Solose permite un registro TXT: la consulta del nombre de host #{hostname} devolvió #{records.length} registros"

    propagar Error::InvalidTXTRecord, msg
  end

  registros[0].cadenas.Join
end

#prefijo_de_registro(nombre_de_servicio_srv = nil) ⇒ Cadena

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 de registro con un nombre de servicio SRV personalizado si se proporciona.

Parámetros:

  • nombre_del_servicio_srv (Hash) (predeterminado: nulo)

    un conjunto personalizable de opciones

Opciones Hash(srv_service_name):

  • El (String | nil)

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

Devuelve:

  • (Cadena) -

    El prefijo de registro generado.



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

def prefijo de registro(nombre_del_servicio_srv=nulo)
  return nombre_del_servicio_srv ? "_#{nombre_servicio_srv }._tcp." : PREFIJO_DE_REGISTRO
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::TIEMPO DE ESPERA PREDETERMINADO
end