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
-
#cursor ⇒ nil | Cursor
Somente leitura
privado
Retorna o cursor associado a esta visualização, se houver.
-
#timeout_mode ➤ :cursor_Lifetime | :iteration
Somente leitura
O modo de tempo limite a ser usado por esse objeto.
Recolhimento do Resumo do método de instância
-
#validate_timeout_mode!(options, forbid: []) ⇒ Object
privado
Certifique-se de que o modo de tempo limite seja apropriado para as outras opções fornecidas.
Detalhes do atributo da instância
#cursor ⇒ nil | 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.
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.
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
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!(, forbid: []) forbid.cada fazer |chave| aumentar ArgumentError, "#{chave} não é permitido aqui" se .chave?(chave) end cursor_type = [:cursor_type] timeout_mode = [: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 = [: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 |