Classe: Mongo::Operação::Context Privado

Herda:
CsotTimeoutHolder mostrar tudo
Definido em:
lib/mongo/operation/context.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.

Contexto para operações.

Contém vários objetos necessários para tomar decisões sobre a execução da operação em um único container e fornece métodos de máscara para os objetos contidos.

O contexto contém parâmetros para operações e, como tal, enquanto uma operação está sendo preparada, nada no contexto deve mudar. Quando o resultado da operação está sendo processado, os dados retornados pelo contexto podem mudar (por exemplo, porque uma transação foi cancelada), mas nesse ponto a operação não deve mais ler nada do contexto. Como os dados de contexto podem mudar durante a execução da operação, os objetos de contexto não devem ser reutilizados para várias operações.

Recolhimento do Resumo do atributo de instância

Atributos herdados de CsotTimeoutHolder

#deadline, #operation_timeouts, #timeout_sec

Recolhimento do Resumo do método de instância

Métodos herdados de CsotTimeoutHolder

#check_timeout!, #csot?, #remaining_timeout_ms, #remaining_timeout_ms!, #remaining_timeout_sec, #remaining_timeout_sec!, #timeout?, #timeout_expired?

Detalhes do construtor

#initialize(cliente: nil, sessão: nil, connection_global_id: nil, operation_timeouts: {}, visualizar: nil, opções: nil) ➤ Contexto

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 Contexto.



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
# Arquivo 'lib/mongo/operation/context.rb', linha 38

def inicializar(
  cliente: nada,
  sessão: nada,
  connection_global_id: nada,
  operation_timeouts: {},
  visualizar: nada,
  opções: nada
)
  se opções
    se Cliente
      aumentar ArgumentError, 'O cliente e as opções não podem ser especificados'
    end

    se session
      aumentar ArgumentError, ' Asessão e as opções não podem ser especificadas'
    end
  end

  se connection_global_id && session&.pinned_connection_global_id
    aumentar ArgumentError, 'Tentando fixar contexto em uma conexão quando a sessão já está fixada em uma conexão.'
  end

  @cliente = Cliente
  @session = session
  @view = vista
  @connection_global_id = connection_global_id
  @opções = opções
  super(sessão: session, operation_timeouts: operation_timeouts)
end

Detalhes do atributo da instância

# objeto do cliente(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.



68
69
70
# Arquivo 'lib/mongo/operation/context.rb', linha 68

def Cliente
  @cliente
end

#opções Objeto (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.



71
72
73
# Arquivo 'lib/mongo/operation/context.rb', linha 71

def opções
  @opções
end

#sessionObject (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.



69
70
71
# Arquivo 'lib/mongo/operation/context.rb', linha 69

def session
  @session
end

#viewObject (only read)

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.



70
71
72
# Arquivo 'lib/mongo/operation/context.rb', linha 70

def vista
  @view
end

Detalhes do método de instância

#aborting_transaction?Booleano

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:

  • (Booleano)


105
106
107
# Arquivo 'lib/mongo/operation/context.rb', linha 105

def aborting_transaction?
  in_transaction? && session.aborting_transaction?
end

#any_retry_writes?Booleano

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:

  • (Booleano)


117
118
119
# Arquivo 'lib/mongo/operation/context.rb', linha 117

def any_retry_writes?
  mod_retry_writes? || legacy_retry_writes?
end

#commit_transaction?Booleano

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:

  • (Booleano)


101
102
103
# Arquivo 'lib/mongo/operation/context.rb', linha 101

def commit_transaction?
  in_transaction? && session.commit_transaction?
end

#connection_global_idObjeto

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.



89
90
91
# Arquivo 'lib/mongo/operation/context.rb', linha 89

def connection_global_id
  @connection_global_id || session&.pinned_connection_global_id
end

#descriptografar(cmd) ➤ 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.



159
160
161
# Arquivo 'lib/mongo/operation/context.rb', linha 159

def Descriptografar(cmd)
  criptografador.Descriptografar(cmd, auto)
end

#descriptografar?Booleano

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:

  • (Booleano)


155
156
157
# Arquivo 'lib/mongo/operation/context.rb', linha 155

def descriptografar?
  !!Cliente&.criptografador
end

#encrypt(db_name, cmd) ➤ 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.



151
152
153
# Arquivo 'lib/mongo/operation/context.rb', linha 151

def criptografar(db_name, cmd)
  criptografador.criptografar(db_name, cmd, auto)
end

#criptografar?Booleano

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:

  • (Booleano)


147
148
149
# Arquivo 'lib/mongo/operation/context.rb', linha 147

def criptografar?
  Cliente&.criptografador&.criptografar? || false
end

#criptografadorObjeto

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.



163
164
165
166
167
168
169
# Arquivo 'lib/mongo/operation/context.rb', linha 163

def criptografador
  se Cliente&.criptografador
    Cliente.criptografador
  mais
    aumentar Erro::InternalDriverError, ' Ocriptografador só deve ser acessado quando a criptografia deve ser executada'
  end
end

#in_transaction?Booleano

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:

  • (Booleano)


93
94
95
# Arquivo 'lib/mongo/operation/context.rb', linha 93

def in_transaction?
  session&.in_transaction? || false
end

#inspecionarObjeto

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.



171
172
173
# Arquivo 'lib/mongo/operation/context.rb', linha 171

def inspecionar
  "# [    }> "
end

#legacy_retry_writes?Booleano

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:

  • (Booleano)


113
114
115
# Arquivo 'lib/mongo/operation/context.rb', linha 113

def legacy_retry_writes?
  Cliente && !Cliente.opções[:retry_writes] && Cliente.max_write_retry > 0
end

#mod_retry_writes?Booleano

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:

  • (Booleano)


109
110
111
# Arquivo 'lib/mongo/operation/context.rb', linha 109

def mod_retry_writes?
  Cliente && Cliente.opções[:retry_writes]
end

#refresh(connection_global_id: @connection_global_id, timeout_ms: nil, view: nil) ➤ Operação::Context

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 Operação::Contexto com o prazo atualizado e relativo ao momento atual.

Retorna:



77
78
79
80
81
82
83
84
85
86
87
# Arquivo 'lib/mongo/operation/context.rb', linha 77

def atualizar(connection_global_id: @connection_global_id, timeout_ms: nada, visualizar: nada)
  operation_timeouts = @operation_timeouts
  operation_timeouts = operation_timeouts.mesclar(operation_timeout_ms: timeout_ms) se timeout_ms

  auto.classe.Novo(cliente: Cliente,
                 sessão: session,
                 connection_global_id: connection_global_id,
                 operation_timeouts: operation_timeouts,
                 visualizar: vista || auto.vista,
                 opções: opções)
end

#tentar novamente?Booleano

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.

Se a operação é uma nova tentativa (true) ou uma tentativa inicial (false).

Retorna:

  • (Booleano)


130
131
132
# Arquivo 'lib/mongo/operation/context.rb', linha 130

def tentar novamente?
  !!@is_retry
end

#server_api ➤ 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.



121
122
123
124
125
126
127
# Arquivo 'lib/mongo/operation/context.rb', linha 121

def server_api
  se Cliente
    Cliente.opções[:server_api]
  elsif opções
    opções[:server_api]
  end
end

#initial_transaction?Booleano

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:

  • (Booleano)


97
98
99
# Arquivo 'lib/mongo/operation/context.rb', linha 97

def initial_transaction?
  session&.initial_transaction? || false
end

#com(**opts) ➤ 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.

Retorna um novo contexto com os parâmetros alterados de acordo com os argumentos fornecidos.

Parâmetros:

  • opciona (Hash)

    um conjunto personalizável de opções

Hash de opções (**opts):

  • :is_retry (true|false)

    Se a operação é uma nova tentativa ou uma primeira tentativa.



139
140
141
142
143
144
145
# Arquivo 'lib/mongo/operation/context.rb', linha 139

def com(**opciona)
  dup.toque fazer |copy|
    opciona.cada fazer |k, v|
      copy.instance_variable_set("@#{k}", v)
    end
  end
end