Clase: Mongo::servidor::supervisar::Connection Privado
- Hereda:
-
ConnectionCommon
- Objeto
- ConnectionCommon
- Mongo::Servidor::Monitor::Conexión
- Incluye:
- Registrable
- Definido en:
- lib/mongo/servidor/supervisar/connection.rb
Overview
Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.
Esta clase modela las conexiones de monitoreo y su comportamiento.
Resumen constante
Constantes incluidas desde Loggable
Resumen de atributos de la instancia colapsar
-
#dirección ⇒ Mongo::Address
Solo lectura
privado
Address La dirección a la que hay que conectarse.
-
#options ⇒ Hash
Solo lectura
privado
Opciones Las opciones pasadas.
-
#server_connection_id ⇒ Integer
Solo lectura
privado
Server_connection_id El ID de conexión del servidor.
Atributos heredados de ConnectionCommon
Resumen del método de instancia colapsar
-
#check_document ⇒ BSON::Document
privado
Compilar un documento que se debe usar para la verificación de la conexión.
-
#¡conéctate! ⇒ verdadero
privado
Establece una conexión de red con la dirección de destino.
-
#disconnect!(_opciones = nil) ⇒ verdadero
privado
Desconecte la conexión.
-
#dispatch(message) ⇒ Protocol::Message
privado
Envía un mensaje y devuelve el resultado.
-
#dispatch_bytes(bytes, **opts) ⇒ Protocol::Message
privado
Envía un mensaje pre-serializado y devuelve el resultado.
-
#handshake! ⇒ BSON::Document
privado
Envía el comando de saludo al host conectado y valida la respuesta.
-
#initialize(dirección, opciones = {}) ⇒ Conexión
constructor
privado
Crea un nuevo objeto de conexión a la dirección de destino especificada con las opciones indicadas.
- #read_response(**opts) ⇒ Object privado
-
#socket_timeout ⇒ Flotante
privado
Devuelve el tiempo de espera de confirmación del socket de supervisión.
- #write_bytes(bytes) ⇒ Object privado
Métodos incluidos desde Registrable
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
Métodos heredados de ConnectionCommon
#¿conectado?, #comando_de_apretón_de_manos, #documento_de_apretón_de_manos
Detalles del Constructor
#inicializar(dirección, opciones = {}) ⇒ Conexión
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Las conexiones de supervisión no se autentican.
Crea un nuevo objeto de conexión a la dirección de destino especificada con las opciones indicadas.
El constructor no realiza ninguna operación de E/S (por lo que no crea sockets ni «handshakes»); llama a connect! método en el objeto de conexión para crear la conexión de red.
56 57 58 59 60 61 62 63 64 65 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 56 def inicializar(dirección, = {}) @address = dirección @options = .dup.freeze propagar ArgumentError, 'Los metadatos de la aplicación son obligatorios' a menos que @app_metadata = [:app_metadata] @socket = nulo @pid = Proceso.pid @compressor = nulo @hello_ok = false end |
Detalles de atributo de instancias
#Dirección ⇒ Mongo::Address (solo lectura)
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Dirección de devoluciones La dirección a la que conectarse.
71 72 73 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 71 def dirección @address end |
#opciones ⇒ Hash (solo lectura)
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Opciones de devolución Las opciones que se pasan.
68 69 70 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 68 def @options end |
#id_conexión_servidor ⇒ Entero (solo lectura)
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve server_connection_id El id de conexión del servidor.
87 88 89 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 87 def server_connection_id @server_connection_id end |
Detalles del método de instancia
#check_document ⇒ BSON::Document
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Compilar un documento que se debe usar para la verificación de la conexión.
224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 224 def check_document server_api = @app_metadata.server_api || [API del servidor] doc = si hello_ok? || server_api _doc = HELLO_DOC _doc = _doc.fusionar(Utils.transform_server_api(server_api)) si server_api _doc else HELLO_DOC_ANTIGUO end # Los compresores deben ajustarse para mantener un estado de compresión correcto # en la descripción del servidor. Ver RUBY-2427 si compresores = [compresores] doc = doc.fusionar(compresión: compresores) end doc end |
#¡conectar! ⇒ true
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Este método muta la clase de conexión al establecer un socket si anteriormente no existía uno.
Establece una conexión de red con la dirección de destino.
Si la conexión ya está establecida, este método no hace nada.
151 152 153 154 155 156 157 158 159 160 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 151 def ¡conectar! propagar ArgumentError, 'Conexión de supervisión ya conectada' si @socket @socket = add_server_diagnostics hacer dirección.enchufe(socket_timeout, .fusionar( connection_address: dirección, supervisar: true )) end true end |
#disconnect!(_options = nil) ⇒ true
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Este método muta la conexión estableciendo el socket en nil si el cierre tuvo éxito.
Este método acepta un argumento de opciones para compatibilidad con Server::Connections. Sin embargo, se ignoran todas las opciones.
Desconecte la conexión.
176 177 178 179 180 181 182 183 184 185 186 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 176 def ¡desconectar!( = nulo) si enchufe begin enchufe.Cerrar rescate StandardError nulo end @socket = nulo end true end |
#dispatch(message) ⇒ Protocol::Message
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Envía un mensaje y devuelve el resultado.
94 95 96 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 94 def enviar() despacho_bytes(.serializar.to_s) end |
#dispatch_bytes(bytes, **opts) ⇒ Protocol::Message
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Envía un mensaje pre-serializado y devuelve el resultado.
106 107 108 109 110 111 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 106 def despacho_bytes(bytes, **opciones) write_bytes(bytes) read_response( socket_timeout: opciones[Tiempo_de_espera_de_lectura_del_socket] ) end |
#handshake! ⇒ BSON::Document
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Envía el comando de saludo al host conectado y valida la respuesta.
193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 193 def handshake! Comando = handshake_command( documento_handshake( @app_metadata, server_api: [API del servidor] ) ) payload = Comando.serializar.to_s = despacho_bytes(payload) Resultado = Operación::Resultado.Nuevo() Resultado.validate! respuesta = Resultado.Documentos.primero set_compressor!(respuesta) set_hello_ok!(respuesta) @server_connection_id = respuesta['connectionId'] respuesta rescate StandardError => e msg = "Error durante el handshake con #{address}" Utils.warn_bg_exception(msg, e, logger: [:logger], log_prefix: [log_prefix], bg_error_backtrace: [:bg_error_backtrace]) propagar end |
#read_response(**opts) ⇒ Object
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
125 126 127 128 129 130 131 132 133 134 135 136 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 125 def read_response(**opciones) propagar ArgumentError, "Intentando leer en una conexión no conectada #{self}" a menos que ¿conectado? add_server_connection_id hacer add_server_diagnostics hacer protocolo::Mensaje.deserializar(enchufe, protocolo::Mensaje::MAX_MESSAGE_SIZE, nulo, **opciones) end end end |
#socket_timeout ⇒ Flotante
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve el tiempo de espera de confirmación del socket de supervisión.
Tenga en cuenta que las conexiones de supervisión utilizan el valor de tiempo de espera de conexión como el valor de tiempo de espera del socket. Consulte la especificación de Descubrimiento y supervisión del servidor para más detalles.
82 83 84 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 82 def socket_timeout [timeout_conexión] || Server::CONNECT_TIMEOUT end |
#write_bytes(bytes) ⇒ Object
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
113 114 115 116 117 118 119 120 121 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 113 def write_bytes(bytes) propagar ArgumentError, "Intentando enviar en una conexión no conectada #{self}" a menos que ¿conectado? add_server_connection_id hacer add_server_diagnostics hacer enchufe.guardar(bytes) end end end |