Classe: Mongo::CsotTimeoutHolder Privado

Herda:
Objeto
  • Objeto
mostrar tudo
Definido em:
lib/mongo/csot_timeout_holder.rb

Visão geral

Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.

Essa classe armazena o tempo limite da operação e fornece os métodos assistente correspondentes.

Subclasses conhecidas diretas

Operação::Contexto

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Detalhes do construtor

#initialize(sessão: nil, operation_timeouts: {}) ➤ CsotTimeoutHolder

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 uma nova instância de CsotTimeoutHolder.



22
23
24
25
26
# File 'lib/mongo/csot_timeout_holder.rb', linha 22

def inicializar(sessão: nada, operation_timeouts: {})
  @deadline = calculate_deadline(operation_timeouts, session)
  @operation_timeouts = operation_timeouts
  @timeout_sec = (@deadline - Utilidades.monotonic_time se @deadline)
end

Detalhes do atributo da instância

#prazoObjeto (somente leitura)

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.



28
29
30
# File 'lib/mongo/csot_timeout_holder.rb', linha 28

def prazo
  @deadline
end

#operation_timeoutsObjeto (somente leitura)

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.



28
29
30
# File 'lib/mongo/csot_timeout_holder.rb', linha 28

def operation_timeouts
  @operation_timeouts
end

#timeout_secObjeto (somente leitura)

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.



28
29
30
# File 'lib/mongo/csot_timeout_holder.rb', linha 28

def timeout_sec
  @timeout_sec
end

Detalhes do método de instância

#check_timeout!Objeto

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.

Verifique se o tempo limite da operação expirou e gera um erro apropriado em caso afirmativo.

Aumenta:



84
85
86
87
88
# File 'lib/mongo/csot_timeout_holder.rb', linha 84

def check_timeout!
  Método a menos que timeout_expired?

  aumentar Erro::Erro de tempo limite, "A operação levou mais de #{timeout_sec} segundos"
end

#csot?true | false

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 se o CSOT está ativado para a operação.

Retorna:

  • (verdadeiro | falso)

    Se o CSOT está habilitado para a operação



31
32
33
# File 'lib/mongo/csot_timeout_holder.rb', linha 31

def csot?
  !prazo.nada?
end

#remaining_timeout_msInteiro | nada

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 os milissegundos restantes do tempo limite definido para a operação; se nenhum tempo limite estiver definido ou o tempo limite for 0 (significa ilimitado), retornará nulo.

Retorna:

  • (Inteiro | nil)

    Retorna os milissegundos restantes do tempo limite definido para a operação; se nenhum tempo limite estiver definido ou o tempo limite for 0 (significa ilimitado), retornará nulo.



58
59
60
61
62
63
# File 'lib/mongo/csot_timeout_holder.rb', linha 58

def remaining_timeout_ms
  Segundos = remaining_timeout_sec
  Método nada se Segundos.nada?

  (Segundos * 1_000).to_i
end

#remaining_timeout_ms!Objeto

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.



65
66
67
68
# File 'lib/mongo/csot_timeout_holder.rb', linha 65

def remaining_timeout_ms!
  check_timeout!
  remaining_timeout_ms
end

#remaining_timeout_secFlutuante | nada

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 os segundos restantes do tempo limite definido para a operação; se nenhum tempo limite estiver definido ou o tempo limite for 0 (significa ilimitado), retornará nulo.

Retorna:

  • (Flutuante | nulo)

    Retorna os segundos restantes do tempo limite definido para a operação; se nenhum tempo limite estiver definido ou o tempo limite for 0 (significa ilimitado), retornará nulo.



44
45
46
47
48
# File 'lib/mongo/csot_timeout_holder.rb', linha 44

def remaining_timeout_sec
  Método nada a menos que tempo-limite?

  prazo - Utilidades.monotonic_time
end

#remaining_timeout_sec!Objeto

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.



50
51
52
53
# File 'lib/mongo/csot_timeout_holder.rb', linha 50

def remaining_timeout_sec!
  check_timeout!
  remaining_timeout_sec
end

#tempo limite?verdadeiro | false

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 falso se CSOT não estiver habilitado ou se CSOT estiver definido como 0 (significa ilimitado), caso contrário, retorna verdadeiro.

Retorna:

  • (verdadeiro | falso)

    Retorna falso se CSOT não estiver habilitado ou se CSOT estiver definido como 0 (significa ilimitado), caso contrário, retorna verdadeiro.



37
38
39
# File 'lib/mongo/csot_timeout_holder.rb', linha 37

def tempo-limite?
  ![ nada, 0 ].incluir?(@deadline)
end

#timeout_expired?verdadeiro | false

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 se o tempo limite da operação expirou. Se nenhum tempo limite estiver definido, este método retornará falso.

Retorna:

  • (verdadeiro | falso)

    Se o tempo limite da operação expirou. Se nenhum tempo limite estiver definido, este método retornará falso.



72
73
74
75
76
77
78
# File 'lib/mongo/csot_timeout_holder.rb', linha 72

def timeout_expired?
  se tempo-limite?
    Utilidades.monotonic_time >= prazo
  mais
    false
  end
end