Módulo: Mongo::CursorHost

Incluído em:
Mongo::Collection::View::Iterable, Database::View, Index::View
Definido em:
lib/mongo/cursor_host.rb

Visão geral

Uma preocupação compartilhada implementando configurações e configurações para entidades que "hospedam" (ou geram) cursores.

A classe ou módulo que inclui esta preocupação deve 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).

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Detalhes do atributo da instância

#cursornil | Cursor (readonly)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna o cursor associado a esta visualização, se houver.

Retorna:

  • (nil | Cursor)

    O cursor, se houver.



17
18
19
# Arquivo 'lib/mongo/cursor_host.rb', linha 17

def cursor
  @cursor
end

#timeout_mode:cursor_Lifetime | :iteration (somente leitura)

Retorna O modo de tempo limite a ser usado por este objeto.

Retorna:

  • (:cursor_Lifetime | :iteration)

    O modo de tempo limite a ser usado por esse objeto.



21
22
23
# Arquivo 'lib/mongo/cursor_host.rb', linha 21

def timeout_mode
  @timeout_mode
end

Detalhes do método de instância

#validate_timeout_mode!(options, forbid: []) ⇒ Object

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Certifique-se de que o modo de tempo limite seja apropriado para as outras opções fornecidas.

rubocop:disable Métricas

Parâmetros:

  • opções (Hash)

    As opções inspecionadas.

  • forbid (Array <Símbolo>) (padrão para: [])

    A lista de opções a serem proibidas para esta classe.

Aumenta:

  • (ArgumentError)

    se forem detectadas opções inconsistentes ou incompatíveis.



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
# Arquivo 'lib/mongo/cursor_host.rb', linha 35

def validate_timeout_mode!(opções, forbid: [])
  forbid.cada fazer |chave|
    aumentar ArgumentError, "#{chave} não é permitido aqui" se opções.chave?(chave)
  end

  cursor_type = opções[:cursor_type]
  timeout_mode = opções[:timeout_mode]

  se timeout_ms
    # "Cursores tailable suportam apenas o valor ITERATION para o
    # opção timeoutMode. Este é o valor padrão e os drivers DEVEM
    #erro se a opção estiver definida como CURSOR_LIFETIME."
    se cursor_type
      timeout_mode ||= :iteration
      se timeout_mode == :cursor_Lifetime
        aumentar ArgumentError, 'cursores tailable suportam apenas `timeout_mode: :iteration' '
      end

      # "Drivers DEVEM erro se a opção [the maxAwaitTimeMS] estiver definida,
      # timeoutMS está definido para um valor diferente de zero e maxAwaitTimeMS é
      # maior ou igual a timeoutMS."
      max_await_time_ms = opções[:max_await_time_ms] || 0
      se cursor_type == :tailable_await && max_await_time_ms >= timeout_ms
        aumentar ArgumentError, ' :max_await_time_ms não deve ser >= :timeout_ms '
      end
    mais
      # "Para cursores não rastreáveis, o valor padrão de timeoutMode
      # é CURSOR_LIFETIME."
      timeout_mode ||= :cursor_Lifetime
    end
  elsif timeout_mode
    # "Os drivers DEVEM apresentar erro se timeoutMode estiver definido e timeoutMS não estiver."
    aumentar ArgumentError, ':timeout_ms deve ser definido se :timeout_mode estiver definido '
  end

  se timeout_mode == :iteration && respond_to?(:write?) && escrever?
    aumentar ArgumentError, 'timeout_mode=:iteration não é suportado para agregação pipelines com $out ou $merge '
  end

  # defini-la como uma variável de instância, em vez de atualizar as opções,
  # porque se o tipo de cursor mudar (por exemplo, via #configure()), o novo
  # A instância de visualização deve ser capaz de selecionar um timeout_mode padrão diferente
  # se nenhum timeout_mode foi definido inicialmente.
  @timeout_mode = timeout_mode
end