Classe: Mongo::Servidor::Conexão
- Herda:
-
ConnectionBase
- Objeto
- ConnectionCommon
- ConnectionBase
- Mongo::Servidor::Conexão
- Estendido por:
- Encaminhável
- Inclui:
- ID, Monitoramento::publicável, Retryable
- Definido em:
- lib/mongo/ servidor/connection.rb
Visão geral
Esta aula modela as conexões de soquete para servidores e seu comportamento.
Colapsode resumo constante
- PING =
Obsoleto.
Não é mais necessário com a especificação de seleção de servidor MongoDB.
O comando ping.
{ ping: 1 }.congelar
- PING_OP_MSG =
Obsoleto.
Não é mais necessário com a especificação de seleção de servidor MongoDB.
O comando ping para um OP_MSG
{ :ping => 1, '$db' => Database::ADMIN }.congelar
- PING_OP_MSG_MSSAGE =
Obsoleto.
Não é mais necessário com a especificação de seleção de servidor MongoDB.
Mensagem de ping como OP_MSG
protocolo::Msg.Novo([], {}, PING_OP_MSG)
- PING_OP_MSG_BYTES =
Obsoleto.
Não é mais necessário com a especificação de seleção de servidor MongoDB.
A mensagem de ping OP_MSG como bytes brutos
PING_OP_MSG_MSSAGE.serializar.to_s.congelar
Constantes incluídas do Loggable
Constantes herdadas de ConnectionBase
Mongo::Server::ConnectionBase::DEFAULT_MAX_BSON_OBJECT_SIZE, Mongo::Server::ConnectionBase::MAX_BSON_COMMAND_OVERHEAD, Mongo::Server::ConnectionBase::REDUCED_MAX_BSON_SIZE
Recolhimento do Resumo do atributo de instância
-
#global_id ➤ Inteiro
Somente leitura
em todas as conexões.
-
#ID ➤ Inteiro
Somente leitura
em conexões para o mesmo objeto de servidor.
-
#last_checkin ➤ Hora
Somente leitura
A última vez que a conexão foi verificada novamente em um pool.
Atributos incluídos no Monitoramento::publicável
Atributos herdados de ConnectionBase
#description, #options, #server
Atributos herdados de ConnectionCommon
Recolhimento do Resumo do método de instância
-
#fechado? ➤ verdadeiro | false
Se a conexão foi fechada.
-
#connect!(contexto = nil) ➤ verdadeiro
Estabelece uma conexão de rede com o endereço de destino.
-
#conectado? ➤ verdadeiro | false
Se a conexão estava conectada e não foi interrompida, fechada ou teve um erro gerado.
-
#connection_pool ➤ Objeto
privado
O pool de conexões a partir do qual essa conexão foi criada.
-
#desconectar!(opções = nil) ➤ verdadeiro
Desconecte a conexão.
- #erro? ➤ Booleano privado
-
#inicializar(servidor, opções = {}) ➤ Conexão
construtor
privado
Cria um novo objeto de conexão para o endereço de destino especificado com as opções especificadas.
-
#interrompido! ➤ Objeto
Marque a conexão como interrompida.
-
#interrompido? ➤ verdadeiro | false
Se a conexão foi interrompida.
-
#pin(reason =:cursor) ➤ Objeto
privado
Marque a conexão como fixada pelo motivo fornecido.
-
#ping ➤ verdadeiro, falso
obsoleto
Obsoleto.
Não é mais necessário com a especificação de seleção de servidor MongoDB.
-
#fixado? ➤ Booleano
privado
Se a conexão é usada por uma transação ou operações do cursor.
-
#record_checkin! ➤ auto
Registre a hora do último checkin.
-
#socket_timeout ➤ Flutuante (também: #timeout)
Obtenha o tempo limite para executar uma operação em um soquete.
-
#transport ⇒ Symbol | nil
privado
Obtenha o tipo de transporte para esta conexão.
-
#unpin(reason =:cursor) ➤ Objeto
privado
Remova um pino da conexão pelo motivo fornecido.
-
#unpin_all ➤ Objeto
privado
Remova todos os pinos da conexão.
Métodos incluídos do ID
Métodos incluídos no Retryable
#read_worker, #select_server, #with_overload_retry, #write_worker
Métodos incluídos do monitoramento::publicável
#publish_cmap_event, #publish_event, #publish_sdam_event
Métodos incluídos no Loggable
#log_debug, #log_error, #log_fatal, #log_info, #log_WARN, #logger
Métodos herdados de ConnectionBase
#app_metadata, #dispatch, # generação, #service_id
Métodos herdados de ConnectionCommon
#handshake_command, #handshake_document, #interrupt_socket
Detalhes do construtor
#inicializar(servidor, opções = {}) ➤ Conexão
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.
A conexão nunca deve ser diretamente instanciada fora de um servidor MongoDB.
Cria um novo objeto de conexão para o endereço de destino especificado com as opções especificadas.
O construtor não realiza nenhuma E/S (e, portanto, não cria soquetes, negociações nem autentica); chamada conectada! no objeto de conexão para criar a conexão de rede.
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 90 def inicializar(Servidor, = {}) super() se Servidor.load_balancer? && [:generação] aumentar ArgumentError, 'A geração não pode ser definida quando o servidor é um balanceador de carga ' end @id = Servidor.Next_connection_id @global_id = auto.classe.Next_id @monitoring = Servidor.Monitoramento @opções = .congelar @server = Servidor @socket = nada @last_checkin = nada @auth_mecanismo = nada @pid = Processo.PID @pin_reasons = definir.Novo publish_cmap_event( Monitoramento::Evento::Cmap::connectionCreated.Novo(endereço, id) ) end |
Detalhes do atributo da instância
#global_id ➤ Inteiro (somente leitura)
em todas as conexões.
125 126 127 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 125 def global_id @global_id end |
#ID ➤ Inteiro (somente leitura)
em conexões para o mesmo objeto de servidor.
121 122 123 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 121 def id @id end |
#last_checkin ➤ Hora (somente leitura)
Retorna a última vez que a conexão foi verificada novamente em um pool.
115 116 117 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 115 def last_checkin @last_checkin end |
Detalhes do método de instância
#fechado? ➤ verdadeiro | false
Se a conexão foi fechada.
As conexões fechadas não devem mais ser usadas. Em vez disso, obtenha uma nova conexão do pool de conexões.
153 154 155 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 153 def fechado? !!@closed end |
#connect!(contexto = nil) ➤ verdadeiro
Este método muta o objeto de conexão definindo um soquete se anteriormente não existisse.
Estabelece uma conexão de rede com o endereço de destino.
Se a conexão já estiver estabelecida, esse método não fará nada.
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 229 def Conecte-se!(Contexto = nada) create_if_closed! a menos que @socket @socket = create_socket(Contexto) @description, @compressor = do_connect se Servidor.load_balancer? se Lint.habilitado? && !service_id aumentar Erro::InternalDriverError, 'A conexão é com um balanceador de carga e deve ter service_id definido aqui, mas não tem ' end @generação = connection_pool.geration_manager.geração(service_id: service_id) end publish_cmap_event( Monitoramento::Evento::Cmap::connectionReady.Novo(endereço, id) ) @close_event_published = false end true end |
#conectado? ➤ verdadeiro | false
Se a conexão estava conectada e não foi interrompida, fechada ou teve um erro gerado.
141 142 143 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 141 def conectado? !fechado? && !erro? && !interrompido? && !!@socket end |
#connection_pool ➤ 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.
O pool de conexões a partir do qual essa conexão foi criada. Pode ser nulo.
133 134 135 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 133 def connection_pool [:connection_pool] end |
#desconectar!(opções = nil) ➤ verdadeiro
Uma vez que uma conexão seja desconectada, ela não deve mais ser usada. Uma nova conexão deve ser obtida do pool de conexões que retornará uma conexão pronta ou criará uma nova conexão. Se a vinculação estiver ativada, a reutilização de uma conexão desconectada aumentará o Erro::LintError. Se o linting não estiver ativado, um aviso será registrado.
Esse método muta o objeto de conexão definindo o soquete como nulo se o fechamento for bem-sucedido.
Desconecte a conexão.
311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 311 def desconecte-se!( = nada) # Observação: @closed pode ser verdadeiro aqui, mas também podemos ter um soquete. # Verifique o soquete e não o sinalizador @closed. @auth_mecanismo = nada @last_checkin = nada se soquete começar soquete.Fechar salvar StandardError nada end @socket = nada end @closed = true interrompido! se && [:interrupted] # Para satisfazer os testes de especificação do CMAP, publique eventos próximos mesmo se o # soquete nunca foi conectado (e, portanto, o evento pronto nunca foi #publicado). Mas veja se publicamos um evento próximo e não # publica várias vezes, a menos que o soquete tenha sido reconectado - # nesse caso, publique o evento próximo uma vez por fechamento do soquete. a menos que @close_event_published Razão = && [:reason] publish_cmap_event( Monitoramento::Evento::Cmap::connectionClosed.Novo( endereço, id, Razão ) ) @close_event_published = true end true end |
#erro? ➤ 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.
173 174 175 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 173 def erro? !!@erro end |
#interrompido! ➤ Objeto
Marque a conexão como interrompida.
168 169 170 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 168 def interrompido! @interrupted = true end |
#interrompido? ➤ verdadeiro | false
Se a conexão foi interrompida.
As conexões interrompidas já foram removidas do pool e não devem ser verificadas novamente no pool.
163 164 165 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 163 def interrompido? !!@interrupted end |
#pin(reason = :cursor) ⇒ 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.
Marque a conexão como fixada pelo motivo fornecido.
195 196 197 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 195 def pin(Razão = :cursor) @pin_reasons << Razão end |
#ping ➤ verdadeiro, falso
Não é mais necessário com a especificação de seleção de servidor MongoDB.
Isso usa uma mensagem de ping pré-serializada para otimização.
Faça ping na conexão para ver se o servidor está respondendo aos comandos. Isso não está bloqueando no lado do servidor.
360 361 362 363 364 365 366 367 368 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 360 def Ping ensure_connected fazer |soquete| responder = add_server_diagnóstico fazer soquete.escrever(PING_OP_MSG_BYTES) protocolo::mensagem.desserializar(soquete, ) end responder.documentos[0][(operação)::Resultado::OK] == 1 end end |
#fixado? ➤ 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 conexão é usada por uma transação ou operações do cursor.
As conexões fixadas não devem ser desconectadas e removidas de um pool de conexões se estiverem ociosas ou obsoletas.
@retorno [ verdadeiro | false ] Se a conexão está fixada.
185 186 187 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 185 def fixado? !@pin_reasons.vazio? end |
#record_checkin! ➤ auto
Registre a hora do último checkin.
389 390 391 392 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 389 def record_checkin! @last_checkin = Hora.agora auto end |
#socket_timeout ➤ Flutuante Também conhecido como: timeout
Obtenha o tempo limite para executar uma operação em um soquete.
375 376 377 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 375 def socket_timeout @timeout ||= [:socket_timeout] end |
#transport ⇒ Symbol | nil
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.
Obtenha o tipo de transporte para esta conexão.
399 400 401 402 403 404 405 406 407 408 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 399 def Transporte Método nada se @socket.nada? caso @socket quando mongo::Soquete::Unix :unix mais :tcp end end |
#unpin(reason =:cursor) ➤ 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.
Remova um pino da conexão pelo motivo fornecido.
205 206 207 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 205 def desafixar(Razão = :cursor) @pin_reasons.excluir(Razão) end |
#unpin_all ➤ 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.
Remova todos os pinos da conexão.
212 213 214 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 212 def unpin_all @pin_reasons.Limpar end |