Clase: Mongo::Session::SessionPool Privada

Hereda:
Objeto
  • Objeto
Mostrar todo
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.

Desde:

  • 2.5.0

Resumen del método de instancia colapsar

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.

Ejemplos:

SessionPool.new(cluster)

Parámetros:

  • clúster (Mongo::Cluster)

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

Desde:

  • 2.5.0



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.

Ejemplos:

Registrando una sesión.

pool.checkin(session)

Parámetros:

  • sesión (Sesión::Sesión deservidor)

    La sesión para hacer el registro.

Desde:

  • 2.5.0



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

#checkoutServerSession

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.

Ejemplos:

Echa un vistazo a una sesión.

pool.checkout

Devuelve:

  • (Sesión deservidor)

    La sesión del servidor.

Desde:

  • 2.5.0



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_sessionsobjeto

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.

Ejemplos:

Finalizar todas las sesiones.

pool.end_sessions

Desde:

  • 2.5.0



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.opciones[API del servidor],
    })
    op.ejecutar(Server, context: context)
  end
rescate Mongo::Error, Error::AuthError
end

#inspectString

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.

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



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