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.
37 38 39 40 41 |
# File 'lib/mongo/session/session_pool.rb', linha 37 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.
86 87 88 89 90 91 92 93 94 95 |
# File 'lib/mongo/session/session_pool.rb', linha 86 def checkin(session) se session.nada? aumentar ArgumentError, 'asessão não pode ser nula' end @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.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/mongo/session/session_pool.rb', linha 63 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.
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/mongo/session/session_pool.rb', linha 103 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.
51 52 53 |
# File 'lib/mongo/session/session_pool.rb', linha 51 def inspecionar "#<Mongo::Session::SessionPool:0x#{object_id} current_size=#{@queue.size}>" end |