Módulo: Mongo::CursorHost
- Incluido en:
- Mongo::colección::View::Iterable, base de datos::View, índice::View
- Definido en:
- lib/mongo/cursor_host.rb
Overview
Una inquietud compartida para implementar la configuración y ajuste de las entidades que "alojan" (o generan) cursores.
La clase o módulo que incluya esta preocupación debe implementar:
* timeout_ms -- this must return either the operation level timeout_ms
(if set) or an inherited timeout_ms from a hierarchically higher
level (if any).
Resumen de atributos de la instancia colapsar
-
#cursor ⇒ nil | Cursor
Solo lectura
privado
Devuelve el cursor asociado con esta vista, si lo hay.
-
#timeout_mode ⇒ :cursor_lifetime | :iteration
Solo lectura
El modo de tiempo de espera a utilizar por este objeto.
Resumen del método de instancia colapsar
-
#validate_timeout_mode!(options, forbid: []) ⇒ Object
privado
Asegúrate de que el modo de tiempo de espera sea adecuado para otras opciones que se hayan dado.
Detalles de atributo de instancias
#cursor ⇒ nil | Cursor (readonly)
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.
Devuelve el cursor asociado con esta vista, si lo hay.
17 18 19 |
# Archivo 'lib/mongo/cursor_host.rb', línea 17 def cursor @cursor end |
#timeout_mode ⇒ :cursor_lifetime | :iteration (solo lectura)
Devuelve el modo de tiempo de espera que se utilizará en este objeto.
21 22 23 |
# Archivo 'lib/mongo/cursor_host.rb', línea 21 def timeout_mode @timeout_mode end |
Detalles del método de instancia
#validate_timeout_mode!(options, forbid: []) ⇒ Object
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.
Asegúrate de que el modo de tiempo de espera sea adecuado para otras opciones que se hayan dado.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# Archivo 'lib/mongo/cursor_host.rb', línea 34 def validate_timeout_mode!(, forbid: []) forbid.cada hacer |llave| propagar ArgumentError, "#{key} no se permite aquí" si .key?(llave) end cursor_type = [tipo_de_cursor] timeout_mode = [:timeout_mode] si timeout_ms # "Los cursores con seguimiento solo admiten el valor ITERATION para la # opción timeoutMode. Este es el valor por defecto y los drivers DEBEN # error si la opción está configurada en CURSOR_LIFETIME. si cursor_type timeout_mode ||= :iteration si timeout_mode == vida_útil_del_cursor propagar ArgumentError, 'los cursores con seguimiento solo permiten `timeout_mode: :iteration`' end else # "Para los cursores que no son cursor con seguimiento, el valor por defecto de timeoutMode # es CURSOR_LIFETIME." timeout_mode ||= vida_útil_del_cursor end # \"Los controladores DEBEN dar error si se establece la opción [maxAwaitTimeMS],\" # timeoutMS se establece en un valor distinto de cero y maxAwaitTimeMS es # mayor o igual que timeoutMS." max_await_time_ms = [; tiempo_máximo_espera_ms] || 0 si max_await_time_ms.¿Positivo? && max_await_time_ms >= timeout_ms propagar ArgumentError, ':max_await_time_ms no debe ser >= :timeout_ms' end elsif timeout_mode # "Los controladores DEBEN arrojar error si timeoutMode está configurado y timeoutMS no lo está." propagar ArgumentError, ':timeout_ms debe establecerse si :timeout_mode está activado' end si timeout_mode == :iteration && respond_to?(guardar?) && guardar? propagar ArgumentError, 'timeout_mode=:iteration no está disponible para pipelines de agregación con $out o $merge' end # configurarlo como una variable de instancia, en lugar de actualizar las opciones, # porque si el tipo de cursor cambia (por ejemplo, mediante #configure()), el nuevo # La instancia de vista debe poder seleccionar un timeout_mode por defecto diferente # si no se configuró timeout_mode inicialmente. @timeout_mode = timeout_mode end |