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. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

Un grupo de sesiones de servidor.

Desde:

  • 2.5.0

Colapso del resumen del método de instancia

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.

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

Ejemplos:

Registrando una sesión.

pool.checkin(session)

Parámetros:

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

    La sesión para realizar el check-in.

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, 'Lasesió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.

Consulte una sesión del servidor desde el 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 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_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 = 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.opciones[:server_api],
    })
    op.ejecutar(Server, context: context)
  end
rescate Mongo::Error, Error::AuthError
end

#inspeccionarCadena

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:

  • (Cadena) -

    La inspección del grupo de sesiones.

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