Clase: Mongo::Session::SessionPool Privado

Hereda:
Objeto
  • Objeto
Mostrar todo
Definido en:
lib/mongo/session/session_pool.rb

Overview

Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.

Un grupo de sesiones del servidor.

Desde:

  • 2.5.0

Resumen del método de instancia colapsar

Detalles del Constructor

#initialize(cluster) ⇒ SessionPool

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Inicializa un SessionPool.

Ejemplos:

SessionPool.new(cluster)

Parámetros:

  • clúster (Mongo::clúster)

    El clúster que se asociará con este grupo de sesiones.

Desde:

  • 2.5.0



34
35
36
37
38
# Archivo 'lib/mongo/session/session_pool.rb', línea 34

def inicializar(clúster)
  @queue = []
  @mutex = Mutex (exclusión mutua).Nuevo
  @cluster = clúster
end

Detalles del método de instancia

#checkin(sesión) ⇒ objeto

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Registrar una sesión de servidor en el pool.

Ejemplos:

Registrar una sesión.

pool.checkin(session)

Parámetros:

Aumenta:

  • (ArgumentError)

Desde:

  • 2.5.0



79
80
81
82
83
84
85
86
# Archivo 'lib/mongo/session/session_pool.rb', línea 79

def checkin(sesión)
  propagar ArgumentError, 'la sesión no puede ser nula' si sesión.nil?

  @mutex.sincronizar hacer
    prune!
    @queue.unshift(sesión) si return_to_queue?(sesión)
  end
end

#checkoutServerSession

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Compruebe una sesión de servidor del pool.

Ejemplos:

Echa un vistazo a una sesión.

pool.checkout

Devuelve:

Desde:

  • 2.5.0



60
61
62
63
64
65
66
67
68
69
# Archivo 'lib/mongo/session/session_pool.rb', línea 60

def checkout
  @mutex.sincronizar hacer
    bucle hacer
      return ServerSession.Nuevo si @queue.¿vacío?

      sesión = @queue.turno
      return sesión a menos que a punto de caducar?(sesión)
    end
  end
end

#end_sessionsobjeto

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Finaliza todas las sesiones en el grupo enviando el comando endSessions al servidor.

Ejemplos:

Finalizar todas las sesiones.

pool.end_sessions

Desde:

  • 2.5.0



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# Archivo 'lib/mongo/session/session_pool.rb', línea 94

def end_sessions
  hasta @queue.¿vacío?
    Server = ServerSelector.Obtener(moda: :primary_preferred).select_server(@cluster)
    op = Operación::Comando.Nuevo(
      selector: {
        endSessions: @queue.turno(10_000).map(&:session_id),
      },
      db_name: Database::ADMIN
    )
    context = Operación::Context.Nuevo(opciones: {
                                       server_api: Server.opciones[API del servidor],
                                     })
    op.ejecutar(Server, context: context)
  end
rescate mongo::Error, Error::AuthError
end

#inspectString

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Obtén una string formateada para usar en la inspección.

Ejemplos:

Inspeccione el objeto del grupo de sesiones.

session_pool.inspect

Devuelve:

  • (string)

    La inspección de la piscina del club.

Desde:

  • 2.5.0



48
49
50
# Archivo 'lib/mongo/session/session_pool.rb', línea 48

def inspeccionar
  "#<Mongo::Session::SessionPool:0x#{object_id} current_size=#{@queue.size}>"
end