Clase: Mongo::Session::SessionPool Privada
- Hereda:
-
Objeto
- Objeto
- Mongo::Session::SessionPool
- Definido en:
- lib/mongo/sesión/session_pool.rb
Overview
Esta clase forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
Un grupo de sesiones de servidor.
Colapso del resumen del método de instancia
-
#checkin(sesión) ⇒ Objeto
privada
Registrando una sesión de servidor en el pool.
-
#checkout ⇒ ServerSession
privada
Consulte una sesión del servidor desde el pool.
-
#end_sessions ⇒ Objeto
privada
Finaliza todas las sesiones en el grupo enviando el comando endSessions al servidor.
-
#initialize(cluster) ⇒ SessionPool
constructor
privada
Inicializar un SessionPool.
-
#inspeccionar ⇒ Cadena
privada
Obtenga una cadena formateada para usar en la inspección.
Detalles del constructor
#initialize(cluster) ⇒ SessionPool
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Inicializar un SessionPool.
37 38 39 40 41 |
# Archivo 'lib/mongo/session/session_pool.rb', línea 37 def inicializar(clúster) @queue = [] @mutex = Mutex.Nuevo @cluster = clúster end |
Detalles del método de instancia
#checkin(sesión) ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Registrando una sesión de servidor en el pool.
86 87 88 89 90 91 92 93 94 95 |
# Archivo 'lib/mongo/session/session_pool.rb', línea 86 def checkin(sesión) Si sesión.nil? propagar ArgumentError, 'Lasesión no puede ser nula' end @mutex.sincronizar hacer prune! @queue.unshift(sesión) Si return_to_queue?(sesión) end end |
#checkout ⇒ ServerSession
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Consulte una sesión del servidor desde el pool.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# Archivo 'lib/mongo/session/session_pool.rb', línea 63 def pago y envío @mutex.sincronizar hacer bucle hacer Si @queue.¿vacío? return Sesión de servidor.Nuevo else sesión = @queue.cambio a no ser que ¿a punto de expirar?(sesión) return sesión end end end end end |
#end_sessions ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo 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.
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# Archivo 'lib/mongo/session/session_pool.rb', línea 103 def fin_sesiones mientras !@queue.¿vacío? Server = Selector de servidor.Obtener(modo: :primary_preferred).seleccionar_servidor(@cluster) op = Operación::Comando.Nuevo( selector: { endSessions: @queue.cambio(10_000).map(Y:id_de_sesión), }, nombre_base_datos: Database::ADMINISTRACIÓN, ) context = Operación::Context.Nuevo(opciones: { API del servidor: Server.[:server_api], }) op.ejecutar(Server, context: context) end rescate Mongo::Error, Error::AuthError end |
#inspeccionar ⇒ Cadena
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Obtenga una cadena formateada para usar en la inspección.
51 52 53 |
# Archivo 'lib/mongo/session/session_pool.rb', línea 51 def inspeccionar "#<Mongo::Session::SessionPool:0x#{object_id} tamaño_actual=#{@queue.size }>" end |