Classe: Mongo::Session::SessionPool Private
- Herda:
-
Objeto
- Objeto
- Mongo::Session::SessionPool
- Definido em:
- build/ruby-driver-v2.19/lib/mongo/session/session_pool.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.
Um pool de sessões de servidor .
Recolhimento do Resumo do método de classe
-
.criar(cluster) ➤ Objeto
privado
Crie um SessionPool.
Recolhimento do Resumo do método de instância
-
#checkin(sessão) ➤ Objeto
privado
Check-in de uma sessão de servidor no pool.
-
#checkout ⇒ ServerSession
privado
Confira uma sessão de servidor do pool.
-
#end_sessions ➤ Objeto
privado
Encerre todas as sessões no pool enviando o comando endSessions para o servidor.
-
#initialize(cluster) ⇒ SessionPool
construtor
privado
Inicialize um SessionPool.
-
#inspecionar ➤ string
privado
Obtenha uma string formatada para uso na inspeção.
Detalhes do construtor
#initialize(cluster) ➤ SessionPool
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.
Inicialize um SessionPool.
52 53 54 55 56 |
# File 'build/ruby-driver-v2.19/lib/mongo/session/session_pool.rb', linha 52 def inicializar(cluster) @queue = [] @mutex = Mutex.Novo @cluster = cluster end |
Detalhes do método de classe
.criar(cluster) ➤ 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.
Crie um SessionPool.
38 39 40 41 |
# File 'build/ruby-driver-v2.19/lib/mongo/session/session_pool.rb', linha 38 def auto.criar(cluster) pool = Novo(cluster) cluster.instance_variable_set(:@session_pool, pool) end |
Detalhes do método de instância
#checkin(sessão) ➤ 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.
Check-in de uma sessão de servidor no pool.
101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'build/ruby-driver-v2.19/lib/mongo/session/session_pool.rb', linha 101 def checkin(session) se session.nada? aumentar ArgumentError, 'asessão não pode ser nula' end @mutex.sincronizar fazer podar! a menos que sobre_to_expire?(session) @queue.unshift(session) end end end |
#checkout ➤ ServerSession
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.
Confira uma sessão de servidor do pool.
78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'build/ruby-driver-v2.19/lib/mongo/session/session_pool.rb', linha 78 def checkout @mutex.sincronizar fazer loop fazer se @queue.vazio? Método ServerSession.Novo mais session = @queue.mudança a menos que sobre_to_expire?(session) Método session end end end end end |
#end_sessions ➤ 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.
Encerre todas as sessões no pool enviando o comando endSessions para o servidor.
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'build/ruby-driver-v2.19/lib/mongo/session/session_pool.rb', linha 120 def end_sessions enquanto !@queue.vazio? Servidor = ServerSelector.obter(modo: :primary_preferred).select_server(@cluster) op = (operação)::Comando.Novo( seletor: { endSessions: @queue.mudança(10_000).map(&:session_id), }, db_name: Database::ADMIN, ) Contexto = (operação)::Contexto.Novo(opções: { server_api: Servidor.[:server_api], }) op.executar, executar(Servidor, contexto: Contexto) end salvar mongo::Erro, Erro::AuthError end |
#inspecionar ➤ 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.
Obtenha uma string formatada para uso na inspeção.
66 67 68 |
# File 'build/ruby-driver-v2.19/lib/mongo/session/session_pool.rb', linha 66 def inspecionar "#<Mongo::Session::SessionPool:0x#{object_id} current_size=#{@queue.size}>" end |