Módulo: Mongo::CursorHost

Incluido en:
Mongo::Colección::Vista::Iterable, Base de datos::Vista, Índice::Vista
Definido en:
lib/mongo/cursor_host.rb

Overview

Una preocupación compartida es implementar configuraciones y ajustes para entidades que “albergan” (o generan) cursores.

La clase o módulo que incluye 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).

Colapso delresumen de atributos de instancia

Colapso del resumen del método de instancia

Detalles de los atributos de instancia

#cursornil | Cursor (readonly)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el cursor asociado a esta vista, si lo hay.

Devuelve:

  • (nil | Cursor)

    El cursor, si lo hay.



17
18
19
# Archivo 'lib/mongo/cursor_host.rb', línea 17

def cursor
  @cursor
end

#timeout_mode ⇒:tiempo_de_vida_del_cursor |:iteración (solo lectura)

Devuelve el modo de tiempo de espera que utilizará este objeto.

Devuelve:

  • (:tiempo de vida del cursor |:iteración)

    El modo de tiempo de espera que utilizará 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 forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Asegúrese de que el modo de tiempo de espera sea apropiado para las demás opciones que se han proporcionado.

rubocop:deshabilitar métricas

Parámetros:

  • opciones (Hash)

    Las opciones para inspeccionar.

  • forbid (Matriz <Símbolo>) (predeterminado: [])

    La lista de opciones a prohibir para esta clase.

Aumentos:

  • (ArgumentError)

    si se detectan opciones inconsistentes o incompatibles.



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
79
# Archivo 'lib/mongo/cursor_host.rb', línea 35

def validate_timeout_mode!(opciones, forbid: [])
  forbid.cada hacer |clave|
    propagar ArgumentError, "#{key} no se permite aquí" Si opciones.key?(clave)
  end

  tipo_de_cursor = opciones[:tipo_de_cursor]
  timeout_mode = opciones[:timeout_mode]

  Si tiempo de espera_ms
    # "Los cursores adaptables solo admiten el valor de ITERACIÓN para el
    Opción timeoutMode. Este es el valor predeterminado y los controladores DEBEN
    # error si la opción está establecida en CURSOR_LIFETIME."
    Si tipo_de_cursor
      timeout_mode ||= :iteración
      Si timeout_mode == :duración del cursor
        propagar ArgumentError, 'Los cursores adaptables solo admiten `timeout_mode::iteration` '
      end

      # "Los controladores DEBEN generar un error si la opción [maxAwaitTimeMS] está configurada,
      # timeoutMS se establece en un valor distinto de cero y maxAwaitTimeMS es
      # mayor o igual que timeoutMS."
      tiempo máximo de espera ms = opciones[:tiempo máximo de espera ms] || 0
      Si tipo_de_cursor == :tailable_await && tiempo máximo de espera ms >= tiempo de espera_ms
        propagar ArgumentError, ':max_await_time_ms no debe ser >=:timeout_ms '
      end
    else
      # "Para cursores no rastreables, el valor predeterminado de timeoutMode
      # es CURSOR_LIFETIME."
      timeout_mode ||= :duración del cursor
    end
  elsif timeout_mode
    # "Los controladores DEBEN generar un error si timeoutMode está configurado y timeoutMS no".
    propagar ArgumentError, ':timeout_ms debe configurarse si:timeout_mode está configurado'
  end

  Si timeout_mode == :iteración && respond_to?(:¿escribir?) && ¿escribir?
    propagar ArgumentError, 'timeout_mode=:iteration no es compatible con canales de agregación con $out o $merge '
  end

  # configúrelo como una variable de instancia, en lugar de actualizar las opciones,
  # porque si el tipo de cursor cambia (por ejemplo, a través de #configure()), el nuevo
  # La instancia de vista debe poder seleccionar un timeout_mode predeterminado diferente
  # si no se configuró timeout_mode inicialmente.
  @timeout_mode = timeout_mode
end