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



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.

Exemplos:

Checkin de uma sessão.

pool.checkin(session)

Parâmetros:

Desde:

  • 2.5.0



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.

Exemplos:

Confira uma sessão.

pool.checkout

Retorna:

Desde:

  • 2.5.0



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.

Exemplos:

Termine todas as sessões.

pool.end_sessions

Desde:

  • 2.5.0



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.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



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