Classe: Mongo::Address

Herda:
Objeto
  • Objeto
mostrar tudo
Estendido por:
Encaminhável
Definido em:
lib/mongo/address.rb,
lib/mongo/address/ipv.rb,4
6lib/mongo/address/ipv.rb,
lib/mongo/address/unix.rb,
lib/mongo/address/ validatetor.rb

Visão geral

Representa um endereço para um servidor, com um endereço IP ou caminho de soquete.

Desde:

  • 2.0.0

Definido sob namespace

Módulos: Validador Classes: IPv4, IPv6, Unix

Colapsode resumo constante

FAMILY_MAP =

Mapeamento da família de soquete para a classe do resolvedor.

Desde:

  • 2.0.0

{
  ::Soquete::PF_UNIX => Unix,
  ::Soquete::CR_INET6 => IPv6,
  ::Soquete::CR_INET => IPv4
}.congelar
LOCALHOST =

A constante do localhost.

Desde:

  • 2.1.0

'localhost'

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Detalhes do construtor

#inicializar(semente, opções = {}) ➤ Endereço

Inicialize o endereço.

Exemplos:

Inicialize o endereço com uma entrada e uma porta DNS.

Mongo::Address.new("app.example.com:27017")

Inicialize o endereço com uma entrada DNS e sem porta.

Mongo::Address.new("app.example.com")

Inicialize o endereço com um endereço e uma porta IPV4 .

Mongo::Address.new("127.0.0.1:27017")

Inicialize o endereço com um endereço IPV4 e sem porta.

Mongo::Address.new("127.0.0.1")

Inicialize o endereço com um endereço e uma porta IPV6 .

Mongo::Address.new("[::1]:27017")

Inicialize o endereço com um endereço IPV6 e sem porta.

Mongo::Address.new("[::1]")

Inicialize o endereço com um soquete unix.

Mongo::Address.new("/path/to/socket.sock")

Parâmetros:

  • Semente (string)

    O endereço fornecido.

  • opções (Hash) (padrão para: {})

    As opções de endereço.

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

  • :connect_timeout (Flutuante)

    Tempo limite de conexão.

Aumenta:

  • (ArgumentError)

Desde:

  • 2.0.0



73
74
75
76
77
78
79
# Arquivo 'lib/mongo/address.rb', linha 73

def inicializar(Semente, opções = {})
  aumentar ArgumentError, ' oendereço deve ser diferente de zero ' se Semente.nada?

  @seed = Semente
  @host, @port = parse_host_port
  @opções = Hash[opções.map { |k, v| [ k.to_sym, v ] }]
end

Detalhes do atributo da instância

#hoststring (somente leitura)

Retorna host O nome do host original.

Retorna:

  • (string)

    host O nome do host original.

Desde:

  • 2.0.0



85
86
87
# Arquivo 'lib/mongo/address.rb', linha 85

def Anfitrião
  @host
end

#opções Objeto (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.

Desde:

  • 2.0.0



91
92
93
# Arquivo 'lib/mongo/address.rb', linha 91

def opções
  @opções
end

#portainteiro (somente leitura)

Retorna porta A porta.

Retorna:

  • (Inteiro)

    Porta A porta.

Desde:

  • 2.0.0



88
89
90
# Arquivo 'lib/mongo/address.rb', linha 88

def Porta
  @port
end

#sementestring (somente leitura)

Retorna semente O endereço da semente.

Retorna:

  • (string)

    seed O endereço da semente.

Desde:

  • 2.0.0



82
83
84
# Arquivo 'lib/mongo/address.rb', linha 82

def Semente
  @seed
end

Detalhes do método de instância

#==(outro) ➤ true, false

Verifique a igualdade do endereço com outro.

Exemplos:

Verifique a igualdade de endereço.

address == other

Parâmetros:

  • Outro (Objeto)

    O outro objeto.

Retorna:

  • (verdadeiro, falso)

    Se os objetos forem iguais.

Desde:

  • 2.0.0



103
104
105
106
107
# Arquivo 'lib/mongo/address.rb', linha 103

def ==(Outro)
  Método false a menos que Outro.is_a?(endereço)

  Anfitrião == Outro.Anfitrião && Porta == Outro.Porta
end

#eql?(outro) ➤ true, false

Verifique a igualdade para hash.

Exemplos:

Verifique a igualdade de hash.

address.eql?(other)

Parâmetros:

  • Outro (Objeto)

    O outro objeto.

Retorna:

  • (verdadeiro, falso)

    Se os objetos forem iguais.

Desde:

  • 2.2.0



119
120
121
# Arquivo 'lib/mongo/address.rb', linha 119

def eql?(Outro)
  auto == Outro
end

#hashinteiro

Calcule o valor de hash para o endereço.

Exemplos:

Calcule o valor do hash.

address.hash

Retorna:

  • (Inteiro)

    O valor de hash.

Desde:

  • 2.0.0



131
132
133
# Arquivo 'lib/mongo/address.rb', linha 131

def hash
  [ Anfitrião, Porta ].hash
end

#inspecionarstring

Obtenha uma inspeção de endereço impressa.

Exemplos:

Obtenha a inspeção de endereço.

address.inspect

Retorna:

  • (string)

    A string de inspeção legal.

Desde:

  • 2.0.0



143
144
145
# Arquivo 'lib/mongo/address.rb', linha 143

def inspecionar
  "#<Mongo::Address:0x#{object_id} endereço=#{self}>"
end

#soquete(socket_timeout, opts = {}) ➤ Mongo::Socket::SSL | Mongo::Soquete::TCP | Mongo::Socket::Unix

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.

Obtenha um soquete para o endereço armazenado neste objeto, dadas as opções.

Se o endereço armazenado neste objeto se parecer com um caminho Unix, este método retornará um soquete de domínio Unix para este caminho.

Caso contrário, esse método tenta resolver o endereço armazenado nesse objeto para endereços IPv4 e IPv6 usando Socket#getaddrinfo e, em seguida, conecta-se aos endereços resultantes e retorna o soquete da primeira conexão bem-sucedida. A ordem em que as casas de endereços (IPv4/IPV6) são tentadas é a mesma ordem em que os endereços são retornados por getaddrinfo e é determinada pelo sistema de host.

A resolução de nomes é realizada em cada chamada socket . Isso é feito para que quaisquer alterações nos endereços para os quais os nomes de host usados como sementes ou na configuração do servidor sejam imediatamente notadas pelo driver, mesmo que um soquete tenha sido conectado ao nome/endereço afetado antes. No entanto, observe que os valores de DNS TTL ainda podem afetar quando uma alteração em um endereço de host é notada pelo driver.

Esse método propaga quaisquer exceções geradas durante a resolução de DNS e as tentativas de conexão subsequentes. No caso de um nome de host resolver para vários endereços IP, o erro gerado pela última tentativa será propagado para o chamador. Este método não mapeia exceções para subclasses Mongo::Error e pode gerar qualquer subclasse de Exceção.

Exemplos:

Obtenha um soquete.

address.socket(5, :ssl => true)

Parâmetros:

  • socket_timeout (Flutuante)

    O tempo limite do soquete.

  • opciona (Hash) (padrão para: {})

    As opções.

Hash de opções (opts):

  • :connect_timeout (Flutuante)

    Tempo limite de conexão.

  • :csot (Booleano)

    Se o tempo limite da operação do lado do cliente deve ser considerado ao conectar o soquete. Esta opção influencia apenas quais erros serão gerados se o tempo limite expirar.

  • :ssl (verdadeiro | falso)

    Se deve usar SSL.

  • :ssl_ca_cert (string)

    Igual à opção Client/Socket::SSL correspondente.

  • :ssl_ca_cert_object (Array <OpenSSL::X509::Certificate>)

    Igual à opção Client/Socket::SSL correspondente.

  • :ssl_ca_cert_string (string)

    Igual à opção Client/Socket::SSL correspondente.

  • :ssl_cert (string)

    Igual à opção Client/Socket::SSL correspondente.

  • :ssl_cert_object (OpenSSL::X509::Certificate)

    Igual à opção Client/Socket::SSL correspondente.

  • :ssl_cert_string (string)

    Igual à opção Client/Socket::SSL correspondente.

  • :ssl_key (string)

    Igual à opção Client/Socket::SSL correspondente.

  • :ssl_key_object (OpenSSL::PKey)

    Igual à opção Client/Socket::SSL correspondente.

  • :ssl_key_pass_ phrase (string)

    Igual à opção Client/Socket::SSL correspondente.

  • :ssl_key_string (string)

    Igual à opção Client/Socket::SSL correspondente.

  • :ssl_verify (verdadeiro, falso)

    Igual à opção Client/Socket::SSL correspondente.

  • :ssl_verify_certificate (verdadeiro, falso)

    Igual à opção Client/Socket::SSL correspondente.

  • :ssl_verify_hostname (verdadeiro, falso)

    Igual à opção Client/Socket::SSL correspondente.

Retorna:

Aumenta:

Desde:

  • 2.0.0



217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
# Arquivo 'lib/mongo/address.rb', linha 217

def soquete(socket_timeout, opciona = {})
  csot = !!opciona[:csot]
  opciona = {
    connect_timeout: Servidor::CONNECT_TIMEOUT,
  }.update(opções).update(Hash[opciona.map { |k, v| [ k.to_sym, v ] }])

  map_Exceptions(csot) fazer
    se Unix::corresponder.Partida?(Semente.downcase)
      endereço_específico = Unix.Novo(Semente.downcase)
      Método endereço_específico.soquete(socket_timeout, opciona)
    end

    # Quando o driver se conecta a "localhost", ele só tenta IPv4
    # conexões. Quando o driver se conecta a outros hosts, ele irá
    # tenta conexões IPv4 e IPv6 .
    família = (Anfitrião == localhost) ? ::Soquete::CR_INET : ::Soquete::CR_UNspec
    Erro = nada
    # Às vezes, o Socket#getaddrinfo retorna as mesmas informações mais de uma vez
    # (vários itens idênticos na array retornada). Isso não faz
    # faz sentido tentar se conectar ao mesmo endereço mais de uma vez, assim
    # elimine duplicatas aqui.
    informações = getaddrinfo(Anfitrião, família)
    Resultados = informações.map fazer |informações|
      [ informações[4], informações[3] ]
    end.uniq
    Resultados.cada fazer |família, endereço_str|
      endereço_específico = FAMILY_MAP[família].Novo(endereço_str, Porta, Anfitrião)
      soquete = endereço_específico.soquete(socket_timeout, opciona)
      Método soquete
    salvar IOError, SystemCallError, Erro::SocketTimeoutError, Erro::Erro de soquete => e
      Erro = e
    end
    aumentar Erro
  end
end

#to_s ➤ string

Obtenha o endereço como uma string.

Exemplos:

Obtenha o endereço como uma string.

address.to_s

Retorna:

  • (string)

    A string bonita.

Desde:

  • 2.0.0



261
262
263
264
265
266
267
268
269
270
271
# Arquivo 'lib/mongo/address.rb', linha 261

def to_s
  se Porta
    se Anfitrião.incluir?(':')
      "[#{host}]:#{porta}"
    mais
      "#{host}:#{porta}"
    end
  mais
    Anfitrião
  end
end