Classe: Mongo::Servidor::Monitor::Conexão privada
- Herda:
-
ConnectionCommon
- Objeto
- ConnectionCommon
- Mongo::Servidor::Monitor::Conexão
- Inclui:
- Logável
- Definido em:
- build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.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.
Esta classe modela as conexões do monitor e seu comportamento.
Subclasses conhecidas diretas
Resumo constante
Constantes incluídas do Loggable
Recolhimento do Resumo do atributo de instância
-
#endereço ➤ Mongo::Endereço
Somente leitura
privado
Endereço O endereço ao qual se conectar.
-
#opções ➤ Hash
Somente leitura
privado
Opções As opções passadas.
-
#server_connection_id ➤ Inteiro
Somente leitura
privado
Server_connection_id A ID de conexão do servidor.
Atributos herdados de ConnectionCommon
Recolhimento do Resumo do método de instância
-
#check_document ➤ BSON::Document
privado
Crie um documento que deva ser usado para verificação de conexão.
-
#connect! ➤ verdadeiro
privado
Estabelece uma conexão de rede com o endereço de destino.
-
#desconectar!(opções = nil) ➤ verdadeiro
privado
Desconecte a conexão.
-
#dispatch(message) ⇒ Protocol::Message
privado
Envia uma mensagem e retorna o resultado.
-
#dispatch_bytes(bytes, **opts) ⇒ Protocol::Message
privado
Envia uma mensagem pré-serializada e retorna o resultado.
-
#handshake! ➤ BSON::Document
privado
Envie o comando de handshake para o host conectado e valide a resposta.
-
#inicializar(endereço, 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.
- #read_response(**opts) ➤ Objeto privado
-
#socket_timeout ➤ Flutuante
privado
Retorna o tempo limite do soquete de monitoramento.
- #write_bytes(bytes) ➤ Objeto privado
Métodos incluídos no Loggable
#log_debug, #log_error, #log_fatal, #log_info, #log_WARN, #logger
Métodos herdados de ConnectionCommon
#connected?, #handshake_command, #handshake_document
Detalhes do construtor
#inicializar(endereço, 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.
O monitoramento de conexões não autentica.
Cria um novo objeto de conexão para o endereço de destino especificado com as opções especificadas.
O construtor não executa nenhuma E/S (e, portanto, não cria soquetes nem handshakes); chamada conectada! no objeto de conexão para criar a conexão de rede.
58 59 60 61 62 63 64 65 66 67 68 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', linha 58 def inicializar(endereço, = {}) @address = endereço @opções = .dup.congelar a menos que @app_metadata = [:app_metadata] aumentar ArgumentError, ' Osmetadados do aplicativo são obrigatórios' end @socket = nada @pid = Processo.PID @compressor = nada @hello_ok = false end |
Detalhes do atributo da instância
#endereço ➤ Mongo::Endereço (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.
Retorna endereço O endereço ao qual se conectar.
74 75 76 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', linha 74 def endereço @address end |
#opções ➤ Hash (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.
Retorna opções As opções passadas.
71 72 73 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', linha 71 def @opções end |
#server_connection_id ➤ Inteiro (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.
Retorna server_connection_id O ID de conexão do servidor.
90 91 92 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', linha 90 def server_connection_id @server_connection_id end |
Detalhes do método de instância
#check_document ➤ BSON::Document
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.
Crie um documento que deva ser usado para verificação de conexão.
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', linha 229 def check_document server_api = @app_metadata.server_api || [:server_api] doc = se hello_ok? || server_api _doc = HELLO_DOC se server_api _doc = _doc.mesclar(Utilidades.transform_server_api(server_api)) end _doc mais LGACY_HELLO_DOC end # compressores devem ser definidos para manter o status correto de compressão # na descrição do servidor. Consulte RUBI-2427 se compressors = [:compressors] doc = doc.mesclar(compressão: compressors) end doc end |
#connect! ➤ verdadeiro
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.
Este método altera a classe 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.
158 159 160 161 162 163 164 165 166 167 168 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', linha 158 def Conecte-se! se @socket aumentar ArgumentError, ' Aconexão de monitoramento já está conectada' end @socket = add_server_diagnóstico fazer endereço.soquete(socket_timeout, .mesclar( connection_address: endereço, monitorar: true)) end true end |
#desconectar!(opções = nil) ➤ verdadeiro
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.
Esse método muta a conexão definindo o soquete como nulo se o fechamento for bem-sucedido.
Este método aceita um argumento de opções para compatibilidade com Servidor::Conexões. No entanto, todas as opções são ignoradas.
Desconecte a conexão.
184 185 186 187 188 189 190 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', linha 184 def desconecte-se!( = nada) se soquete soquete.Fechar salvar nada @socket = nada end true end |
#dispatch(message) ⇒ Protocol::Message
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.
Envia uma mensagem e retorna o resultado.
97 98 99 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', linha 97 def despacho() despacho_bytes(.serializar.to_s) end |
#dispatch_bytes(bytes, **opts) ⇒ Protocol::Message
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.
Envia uma mensagem pré-serializada e retorna o resultado.
109 110 111 112 113 114 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', linha 109 def despacho_bytes(bytes, **opciona) write_bytes(bytes) read_response( socket_timeout: opciona[:read_socket_timeout], ) end |
#handshake! ➤ BSON::Document
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.
Envie o comando de handshake para o host conectado e valide a resposta.
197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', linha 197 def aperto de mão! comando = handshake_command( handshake_document( @app_metadata, server_api: [:server_api] ) ) Carga útil = comando.serializar.to_s = despacho_bytes(Carga útil) Resultado = (operação)::Resultado.Novo() Resultado.validar! responder = Resultado.documentos.primeiro set_compressor!(responder) set_hello_ok!(responder) @server_connection_id = responder['connectionId'] responder salvar => exc mensagem = "Falha ao lidar com #{endereço}" Utilidades.write_bg_exceção(mensagem, exc, registrador: [:logger], log_prefix: [:log_prefix], bg_error_backtrace: [:bg_error_backtrace], ) aumentar end |
#read_response(**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.
130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', linha 130 def read_response(**opciona) a menos que conectado? aumentar ArgumentError, "Tentando ler em uma conexão desconectada #{self}" end add_server_connection_id fazer add_server_diagnóstico fazer protocolo::mensagem.desserializar(soquete, protocolo::mensagem::MAX_message_SIZE, nada, **opciona) end end end |
#socket_timeout ➤ Flutuante
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 o tempo limite do soquete de monitoramento.
Observe que o monitoramento de conexões usa o valor de tempo limite de conexão como valor de tempo limite de soquete. Consulte a especificação Descoberta e monitoramento do servidor MongoDB para obter detalhes.
85 86 87 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', linha 85 def socket_timeout [:connect_timeout] || Servidor::CONNECT_TIMEOUT end |
#write_bytes(bytes) ➤ 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.
116 117 118 119 120 121 122 123 124 125 126 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', linha 116 def write_bytes(bytes) a menos que conectado? aumentar ArgumentError, "Tentando despachar em uma conexão desconectada #{self}" end add_server_connection_id fazer add_server_diagnóstico fazer soquete.escrever(bytes) end end end |