Classe: Mongo::Address

Herda:
Objeto
  • Objeto
mostrar tudo
Estendido por:
Encaminhável
Definido em:
build/ruby-driver-v2.19/lib/mongo/address.rb,
build/ruby-driver-v2.19/lib/mongo/address/ipv4.rb,
build/ruby-driver-v2.19/lib/mongo/address/ipv6.rb,
build/ruby-driver-v2.19/lib/mongo/address/unix.rb,
build/ruby-driver-v2.19/lib/mongo/address/validator.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'.congelar

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.

Desde:

  • 2.0.0



75
76
77
78
79
80
81
82
# File 'build/ruby-driver-v2.19/lib/mongo/address.rb', linha 75

def inicializar(Semente, opções = {})
  se Semente.nada?
    aumentar ArgumentError, "o endereço não deve ser nulo"
  end
  @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



88
89
90
# File 'build/ruby-driver-v2.19/lib/mongo/address.rb', linha 88

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



94
95
96
# File 'build/ruby-driver-v2.19/lib/mongo/address.rb', linha 94

def opções
  @opções
end

#portainteiro (somente leitura)

Retorna porta A porta.

Retorna:

  • (Inteiro)

    Porta A porta.

Desde:

  • 2.0.0



91
92
93
# File 'build/ruby-driver-v2.19/lib/mongo/address.rb', linha 91

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



85
86
87
# File 'build/ruby-driver-v2.19/lib/mongo/address.rb', linha 85

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



106
107
108
109
# File 'build/ruby-driver-v2.19/lib/mongo/address.rb', linha 106

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



121
122
123
# File 'build/ruby-driver-v2.19/lib/mongo/address.rb', linha 121

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



133
134
135
# File 'build/ruby-driver-v2.19/lib/mongo/address.rb', linha 133

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



145
146
147
# File 'build/ruby-driver-v2.19/lib/mongo/address.rb', linha 145

def inspecionar
  "#<Mongo::Address:0x#{object_id} endereço=#{to_s}>"
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, depois se conecta aos endereços resultantes e retorna o soquete da primeira conexão bem-sucedida. A ordem em que as família 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.

  • :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



216
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
# File 'build/ruby-driver-v2.19/lib/mongo/address.rb', linha 216

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

  map_Exceptions fazer
    se Semente.downcase =~ Unix::corresponder
      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 = ::Soquete.getaddrinfo(Anfitrião, nada, família, ::Soquete::SOCK_STREAM)
    Resultados = informações.map fazer |informações|
      [informações[4], informações[3]]
    end.uniq
    Resultados.cada fazer |família, endereço_str|
      começar
        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
    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
# File 'build/ruby-driver-v2.19/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