Classe: Mongo::Session::SessionPool Private
- Herda:
-
Objeto
- Objeto
- Mongo::Session::SessionPool
- Definido em:
- 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 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.
34 35 36 37 38 |
# File 'lib/mongo/session/session_pool.rb', linha 34 def inicializar(cluster) @queue = [] @mutex = Mutex.Novo @cluster = cluster 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.
79 80 81 82 83 84 85 86 |
# File 'lib/mongo/session/session_pool.rb', linha 79 def checkin(session) aumentar ArgumentError, 'asessão não pode ser nula' se session.nada? @mutex.sincronizar fazer podar! @queue.unshift(session) se return_to_queue?(session) 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.
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/mongo/session/session_pool.rb', linha 60 def checkout @mutex.sincronizar fazer loop fazer Método ServerSession.Novo se @queue.vazio? session = @queue.mudança Método session a menos que sobre_to_expire?(session) 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.
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/mongo/session/session_pool.rb', linha 94 def end_sessions até que @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.
48 49 50 |
# File 'lib/mongo/session/session_pool.rb', linha 48 def inspecionar "#<Mongo::Session::SessionPool:0x#{object_id} current_size=#{@queue.size}>" end |