Classe: Mongo::Session::SessionPool Private

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

Desde:

  • 2.5.0

Recolhimento do Resumo do método de classe

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



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.

Exemplos:

SessionPool.create(cluster)

Parâmetros:

  • cluster (Mongo::Cluster)

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

Desde:

  • 2.5.0



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.

Exemplos:

Checkin de uma sessão.

pool.checkin(session)

Parâmetros:

Desde:

  • 2.5.0



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.

Exemplos:

Confira uma sessão.

pool.checkout

Retorna:

Desde:

  • 2.5.0



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.

Exemplos:

Termine todas as sessões.

pool.end_sessions

Desde:

  • 2.5.0



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



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