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. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.
Un grupo de sesiones del servidor.
Resumen del método de instancia colapsar
-
#checkin(sesión) ⇒ Objeto
privado
Registrar una sesión de servidor en el pool.
-
#checkout ⇒ ServerSession
privado
Compruebe una sesión de servidor del pool.
-
#end_sessions ⇒ Objeto
privado
Finaliza todas las sesiones en el grupo enviando el comando endSessions al servidor.
-
#initialize(cluster) ⇒ SessionPool
constructor
privado
Inicializa un SessionPool.
-
#inspect ⇒ String
privado
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.
Inicializa un SessionPool.
37 38 39 40 41 |
# Archivo 'lib/mongo/session/session_pool.rb', línea 37 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 forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Registrar 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, 'la sesió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.
Compruebe una sesión de servidor del 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 checkout @mutex.sincronizar hacer bucle hacer si @queue.¿vacío? return ServerSession.Nuevo else sesión = @queue.turno a menos que a punto de caducar?(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 = ServerSelector.Obtener(moda: :primary_preferred).seleccionar_servidor(@cluster) op = Operación::Comando.Nuevo( selector: { endSessions: @queue.turno(10_000).map(Y:id_de_sesión), }, nombre_base_datos: Database::ADMIN, ) context = Operación::Context.Nuevo(opciones: { server_api: Server.[API del servidor], }) op.ejecutar(Server, context: context) end rescate Mongo::Error, Error::AuthError end |
#inspect ⇒ String
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 |