Classe: Mongo::Srv::Resolver Private

Herda:
Objeto
  • Objeto
mostrar tudo
Inclui:
Logável
Definido em:
lib/mongo/srv/resolver.rb

Visão geral

Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.

Encapsula o comportamento necessário para consultar registros SRV, conforme exigido pelo driver.

Colapsode resumo constante

gravar_prefixo =

Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possível, pois ela pode ser removida ou alterada no futuro.

Retorna REcord_Prefixe o prefixo anexado a cada nome de host antes de consultar os registros SRV.

Retorna:

  • (string)

    gravar_prefixo O prefixo anexado a cada nome de host antes de executar queries de registros SRV.

'_mongodb._tcp.'.congelar

Constantes incluídas do Loggable

Loggable::Prefix

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Métodos incluídos no Loggable

#log_debug, #log_error, #log_fatal, #log_info, #log_WARN, #logger

Detalhes do construtor

#initialize(**opts) ➤ Resolver

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Cria um novo Resolvedor.

Parâmetros:

  • opciona (Hash)

    um conjunto personalizável de opções

Hash de opções (**opts):

  • :timeout (Flutuante)

    O timeout, em segundos, a ser usado para cada resolução de registro DNS.

  • :raise_on_invalid (Booleano)

    Se deve ou não ser gerada uma exceção se um registro com um domínio incompatível for encontrado ou se nenhum registro for encontrado. O padrão é verdadeiro.

  • :resolv_options (Hash)

    Somente para uso interno do driver. Opções a serem passadas para o construtor Resolv::DNS para pesquisas SRV.



51
52
53
54
55
# Arquivo 'lib/mongo/srv/resolver.rb', linha 51

def inicializar(**opciona)
  @opções = opciona.congelar
  @resolver = Resolver::DNS.Novo(@opções[:resolv_options])
  @resolver.tempos limite = timeout
end

Detalhes do atributo da instância

#opçõesHash (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna as opções do Resolver.

Retorna:

  • (Hash)

    Opções do Resolver.



58
59
60
# Arquivo 'lib/mongo/srv/resolver.rb', linha 58

def opções
  @opções
end

Detalhes do método de instância

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

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Obtém todos os registros SRV para um determinado nome de host. Se um srv_max_hosts for especificado e for maior que 0, retorne o máximo de registros srv_max_hosts.

evento um registro com um domínio incompatível seja encontrado ou nenhum registro seja encontrado, se a opção :raise_on_invalid for verdadeira, será gerada uma exceção, caso contrário, será registrado um aviso.

Parâmetros:

  • nome do host (string)

    O nome do host cujos registros devem ser obtidos.

  • srv_service_name (string | nil) (padrão para: nil)

    O nome do serviço SRV para a consulta DNS. Se for nulo, ' MongoDB' será usado.

  • srv_max_hosts (Inteiro | nulo) (padrão para: nil)

    O número máximo de registros a retornar. Se este valor for nulo, retorne todos os registros.

Retorna:

Aumenta:

  • (Mongo::Error::MismatchedDomain)

    Se a opção :raise_in_invalid Resolver for verdadeira e for encontrado um registro com um nome de domínio que não corresponda ao nome do host.

  • (Mongo::Error::NoSRVecords)

    Se a opção :raise_in_invalid Resolver for verdadeira e nenhum registro for encontrado.



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
# Arquivo 'lib/mongo/srv/resolver.rb', linha 84

def get_records(nome do host, srv_service_name=nada, srv_max_hosts=nada)
  query_name = record_prefix(srv_service_name) + nome do host
  Recursos = @resolver.obter recursos(query_name, Resolver::DNS::Resource::Em::SRV)

  # Colete todos os registros em um objeto Resultado , criando um erro
  # ou registrando um aviso se um registro com um domínio incompatível for encontrado.
  # Observe que, caso um aviso seja gerado, o registro é _not_
  # adicionado ao objeto Resultado .
  Resultado = SRV::Resultado.Novo(nome do host)
  Recursos.cada fazer |registro|
    começar
      Resultado.add_record(registro)
    salvar Erro::Domínio incompatível => e
      se raise_on_invalid?
        aumentar
      mais
        log_service(e.mensagem)
      end
    end
  end

  # Se nenhum registro for encontrado, gere um erro ou registre um aviso
  # com base na opção :raise_on_invalid do Resolver.
  se Resultado.vazio?
    se raise_on_invalid?
      aumentar Erro::NoSRRVecords.Novo(URI::Protocolo SRV::NO_SRV_RECORDS % nome do host)
    mais
      log_service(URI::Protocolo SRV::NO_SRV_RECORDS % nome do host)
    end
  end

  # se srv_max_hosts estiver em [1, #addresses)
  se (1...Resultado.endereço_strs.Tamanho).incluir? srv_max_hosts
    sampled_records = Recursos.embaralhar.primeiro(srv_max_hosts)
    Resultado = SRV::Resultado.Novo(nome do host)
    sampled_records.cada { |registro| Resultado.add_record(registro) }
  end
  Resultado
end

#get_txt_options_string(hostname) ➤ nil | string

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Obtém os registros TXT de um host.

Parâmetros:

  • nome do host (string)

    O host cujos registros TXT devem ser obtidos.

Retorna:

  • (nil | string)

    string de opções de URI do registro TXT associada ao nome do host ou nula se não houver tal registro.

Aumenta:



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

def get_txt_options_string(nome do host)
  registros = @resolver.obter recursos(nome do host, Resolver::DNS::Resource::Em::TXT)
  se registros.vazio?
    Método nada
  end

  se registros.Tamanho > 1
    mensagem = "Somente um registro TXT é permitido: consultando o nome do host #{nome dohost} retornou #{registros.comprimento} registros"

    aumentar Erro::TXTRecord inválido, mensagem
  end

  registros[0].strings.juntar
end

#record_prefix(srv_service_name = nil) ➤ string

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Gera o prefixo do registro com um nome de serviço SRV personalizado, se fornecido.

Parâmetros:

  • srv_service_name (Hash) (padrão para: nil)

    um conjunto personalizável de opções

Opções de hash (srv_service_name):

  • O (string | nil)

    Nome do serviço SRV a ser usado no prefixo do registro.

Retorna:

  • (string)

    O prefixo do registro gerado.



38
39
40
# Arquivo 'lib/mongo/srv/resolver.rb', linha 38

def record_prefix(srv_service_name=nada)
  Método srv_service_name ? "_#{srv_service_name}._tcp." : gravar_prefixo
end

#timeoutObject

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.



60
61
62
# Arquivo 'lib/mongo/srv/resolver.rb', linha 60

def timeout
  opções[:timeout] || Monitorar::DEFAULT_TIMEOUT
end