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.

[Ver fonte]

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