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
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 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 90 def inicializar(Servidor, = {}) 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.
124 125 126 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 124 def global_id @global_id end |
#ID ➤ Inteiro (somente leitura)
em conexões para o mesmo objeto de servidor.
120 121 122 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 120 def id @id end |
#last_checkin ➤ Hora (somente leitura)
Retorna a última vez que a conexão foi verificada novamente em um pool.
114 115 116 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 114 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.
152 153 154 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 152 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.
228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 228 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.
140 141 142 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 140 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.
132 133 134 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 132 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.
310 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 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 310 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.
172 173 174 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 172 def erro? !!@erro end |
#interrompido! ➤ Objeto
Marque a conexão como interrompida.
167 168 169 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 167 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.
162 163 164 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 162 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.
194 195 196 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 194 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.
359 360 361 362 363 364 365 366 367 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 359 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.
184 185 186 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 184 def fixado? !@pin_reasons.vazio? end |
#record_checkin! ➤ auto
Registre a hora do último checkin.
388 389 390 391 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 388 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.
374 375 376 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 374 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.
398 399 400 401 402 403 404 405 406 407 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 398 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.
204 205 206 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 204 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.
211 212 213 |
# Arquivo 'lib/mongo/ servidor/connection.rb', linha 211 def unpin_all @pin_reasons.Limpar end |