Classe: Mongo::Server::ConnectionPool::GenerationManager Private

Herda:
Objeto
  • Objeto
mostrar tudo
Definido em:
build/ruby-driver-v2.19/lib/mongo/ servidor/connection_pool/generation_manager.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.

Desde:

  • 2.0.0, amplamente reescrito em 2.9.0

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Detalhes do construtor

#initialize(servidor:) ⇒ GeraçãoManager

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 uma nova instância do GeraçãoManager.

Desde:

  • 2.0.0, amplamente reescrito em 2.9.0



25
26
27
28
29
30
31
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection_pool/generation_manager.rb', linha 25

def inicializar(servidor:)
  @map = Hash.Novo { |hash, chave| hash[chave] = 1 }
  @pipe_fds = Hash.Novo { |hash, chave| hash[chave] = { 1 => IO.pipe } }
  @server = Servidor
  @ bloqueio = Mutex.Novo
  @scheduled_for_close = []
end

Detalhes do atributo da instância

#serverObject (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, amplamente reescrito em 2.9.0



33
34
35
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection_pool/generation_manager.rb', linha 33

def Servidor
  @server
end

Detalhes do método de instância

#bump(service_id: nil) ➤ Objeto

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, amplamente reescrito em 2.9.0



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection_pool/generation_manager.rb', linha 66

def bump(service_id: nada)
  @ bloqueio.sincronizar fazer
    close_all_scheduled
    se service_id
      gen = @map[service_id] += 1
      @pipe_fds[service_id] ||= {}
      @pipe_fds[service_id][gen] = IO.pipe
    mais
      # Quando o ID de serviço não é fornecido, uma de duas coisas pode ser
      # acontecer;
      #
      # 1. O pool não é para um balanceador de carga , caso em que apenas
      # precisa incrementar a geração para o service_id nulo.
      # 2. O pool é para um balanceador de carga , caso em que precisamos
      # incrementar a geração para cada serviço.
      #
      # Incrementar tudo no mapa realiza ambas as tarefas.
      @map.cada fazer |k, v|
        gen = @map[k] += 1
        @pipe_fds[service_id] ||= {}
        @pipe_fds[service_id][gen] = IO.pipe
      end
    end
  end
end

#geration(service_id: nil) ➤ Objeto

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, amplamente reescrito em 2.9.0



35
36
37
38
39
40
41
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection_pool/generation_manager.rb', linha 35

def geração(service_id: nada)
  validate_service_id!(service_id)

  @ bloqueio.sincronizar fazer
    @map[service_id]
  end
end

#geration_unlocked(service_id: nil) ➤ Objeto

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, amplamente reescrito em 2.9.0



43
44
45
46
47
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection_pool/generation_manager.rb', linha 43

def geration_unlocked(service_id: nada)
  validate_service_id!(service_id)

  @map[service_id]
end

#pipe_fds(service_id: nil) ➤ Objeto

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, amplamente reescrito em 2.9.0



49
50
51
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection_pool/generation_manager.rb', linha 49

def pipe_fds(service_id: nada)
  @pipe_fds[service_id][@map[service_id]]
end

#remove_pipe_fds(generação, service_id: nil) ➤ Objeto

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, amplamente reescrito em 2.9.0



53
54
55
56
57
58
59
60
61
62
63
64
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection_pool/generation_manager.rb', linha 53

def remove_pipe_fds(geração, service_id: nada)
  validate_service_id!(service_id)

  r, w = @pipe_fds[service_id].excluir(geração)
  w.Fechar
  # Agende a extremidade de leitura do pipe para ser fechada. Não podemos fechá-lo
  # imediatamente, pois precisamos aguardar qualquer chamada do Kernel#select para
  # observe que parte do pipe está fechada e verifique o soquete. Isto
  # tudo acontece ao tentar ler do soquete e esperar
  # para ficar pronto novamente.
  @scheduled_for_close << r
end