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:
- build/ruby-driver-v2.19/lib/mongo/server/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 (versões do servidor >= 3.6).
{ :ping => 1, '$db' => Database::ADMIN }.congelar
- PING_MSSAGE =
Obsoleto.
Não é mais necessário com a especificação de seleção de servidor MongoDB.
Mensagem de ping.
protocolo::Query.Novo(Database::ADMIN, Database::Comando, Ping, :limit => -1)
- 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 (versões do servidor >= 3.6).
protocolo::Msg.Novo([], {}, PING_OP_MSG)
- PING_BYTES =
Obsoleto.
Não é mais necessário com a especificação de seleção de servidor MongoDB.
A mensagem de ping como bytes brutos.
PING_message.serializar.to_s.congelar
- 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 (versões do servidor >= 3.6).
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! ➤ 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 ➤ Objeto
privado
Marque a conexão como fixada.
-
#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.
-
#desafixar ➤ Objeto
privado
Marque a conexão como não fixada.
Métodos incluídos do ID
Métodos incluídos no Retryable
#read_worker, #select_server, #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.
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 106 def inicializar(Servidor, = {}) se Servidor.load_balancer? && [:generação] aumentar ArgumentError, "A geração não pode ser definida quando o servidor é um balancer 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 @pinned = false 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.
140 141 142 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 140 def global_id @global_id end |
#ID ➤ Inteiro (somente leitura)
em conexões para o mesmo objeto de servidor.
136 137 138 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 136 def id @id end |
#last_checkin ➤ Hora (somente leitura)
Retorna a última vez que a conexão foi verificada novamente em um pool.
130 131 132 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 130 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.
166 167 168 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 166 def fechado? !!@closed end |
#connect! ➤ 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 252 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 229 def Conecte-se! create_if_closed! a menos que @socket @socket = create_socket @description, @compressor = do_connect se Servidor.load_balancer? se Lint.habilitado? a menos que service_id aumentar Erro::InternalDriverError, "A conexão é com um balancer de carga e deve ter service_id definido aqui, mas não" end 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.
154 155 156 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 154 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.
146 147 148 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 146 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.
305 306 307 308 309 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 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 305 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 soquete.Fechar salvar nada @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.
186 187 188 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 186 def erro? !!@erro end |
#interrompido! ➤ Objeto
Marque a conexão como interrompida.
181 182 183 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 181 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.
176 177 178 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 176 def interrompido? !!@interrupted end |
#pin ➤ 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.
205 206 207 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 205 def pin @pinned = true 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.
350 351 352 353 354 355 356 357 358 359 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 350 def Ping bytes = características.op_msg_enabled? ? PING_OP_MSG_BYTES : PING_BYTES ensure_connected fazer |soquete| responder = add_server_diagnóstico fazer soquete.escrever(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.
# @return [ verdadeiro | false ] Se a conexão está fixada.
198 199 200 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 198 def fixado? @pinned end |
#record_checkin! ➤ auto
Registre a hora do último checkin.
380 381 382 383 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 380 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.
366 367 368 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 366 def socket_timeout @timeout ||= [:socket_timeout] end |
#desafixar ➤ 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 não fixada.
212 213 214 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/connection.rb', linha 212 def desafixar @pinned = false end |