Classe: Mongo::Session::SessionPool Private

Herda:
Objeto
  • Objeto
mostrar tudo
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 .

Desde:

  • 2.5.0

Recolhimento do Resumo do método de instância

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.

Exemplos:

SessionPool.new(cluster)

Parâmetros:

  • cluster (Mongo::Cluster)

    O cluster que será associado a este pool de sessões.

Desde:

  • 2.5.0



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.

Exemplos:

Checkin de uma sessão.

pool.checkin(session)

Parâmetros:

Aumenta:

  • (ArgumentError)

Desde:

  • 2.5.0



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.

Exemplos:

Confira uma sessão.

pool.checkout

Retorna:

Desde:

  • 2.5.0



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.

Exemplos:

Termine todas as sessões.

pool.end_sessions

Desde:

  • 2.5.0



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.opções[:server_api],
                                     })
    op.executar, executar(Servidor, contexto: Contexto)
  end
salvar mongo::Erro, Erro::AuthError
end

#inspecionarstring

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.

Exemplos:

Inspecione o objeto de pool de sessões.

session_pool.inspect

Retorna:

  • (string)

    A inspeção do pool de sessões.

Desde:

  • 2.5.0



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