Classe: Mongo::Server::ConnectionPool::GenerationManager Private
- Herda:
-
Objeto
- Objeto
- Mongo::Server::ConnectionPool::GenerationManager
- 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.
Recolhimento do Resumo do atributo de instância
- #servidor ➤ Objeto Somente leitura privado
Recolhimento do Resumo do método de instância
- #bump(service_id: nil) ➤ Objeto privado
- #geration(service_id: nil) ➤ Objeto privado
- #geration_unlocked(service_id: nil) ➤ Objeto privado
-
#initialize(servidor:) ⇒ GeraçãoManager
construtor
privado
Uma nova instância do GeraçãoManager.
- #pipe_fds(service_id: nil) ➤ Objeto privado
- #remove_pipe_fds(generação, service_id: nil) ➤ Objeto privado
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.
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
#server ➤ Object (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.
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.
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.
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.
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.
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.
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 |