Clase: Mongo::servidor::supervisar::Connection Privado
- Hereda:
-
ConnectionCommon
- Objeto
- ConnectionCommon
- Mongo::Servidor::Monitor::Conexión
- Incluye:
- Registrable
- Definido en:
- lib/mongo/servidor/monitor/conexión.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.
Subclases conocidas directas
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) ⇒ true
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 especificadas.
- #read_response(**opts) ⇒ Objeto 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 forma parte de una API privada. Debe evitarlo 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 especificadas.
El constructor no realiza ninguna E/S (y por lo tanto no crea sockets ni protocolos de enlace); llame al método connect! en el objeto de conexión para crear la conexión de red.
58 59 60 61 62 63 64 65 66 67 68 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 58 def inicializar(dirección, = {}) @address = dirección @options = .dup.freeze a menos que @app_metadata = [:app_metadata] propagar ArgumentError, 'Los metadatos de la aplicación son obligatorios' end @socket = nulo @pid = Proceso.pid @compressor = nulo @hello_ok = false end |
Detalles de los atributos de instancia
#dirección ⇒ Mongo::Address (solo lectura)
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Dirección de devoluciones La dirección a la que conectarse.
74 75 76 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 74 def dirección @address end |
#opciones ⇒ Hash (solo lectura)
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve opciones Las opciones pasadas.
71 72 73 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 71 def @options end |
#id_conexión_servidor ⇒ Entero (solo lectura)
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve server_connection_id El id de conexión del servidor.
90 91 92 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 90 def server_connection_id @server_connection_id end |
Detalles del método de instancia
#check_document ⇒ BSON::Document
Este método forma parte de una API privada. Debe evitarlo 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.
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 229 def check_document server_api = @app_metadata.server_api || [API del servidor] doc = si hello_ok? || server_api _doc = HELLO_DOC si server_api _doc = _doc.fusionar(Utils.transform_server_api(server_api)) end _doc else HELLO_DOC_ANTIGUO end # Los compresores deben configurarse para mantener el 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 forma parte de una API privada. Debe evitarlo 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.
158 159 160 161 162 163 164 165 166 167 168 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 158 def ¡conectar! si @socket propagar ArgumentError, 'Conexión de supervisión ya conectada' end @socket = add_server_diagnostics hacer dirección.enchufe(socket_timeout, .fusionar( connection_address: dirección, monitor: true)) end true end |
#¡desconectar!(opciones = nulo) ⇒ verdadero
Este método forma parte de una API privada. Debe evitarlo 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.
184 185 186 187 188 189 190 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 184 def ¡desconectar!( = nulo) si enchufe enchufe.Cerrar rescate nulo @socket = nulo end true end |
#dispatch(message) ⇒ Protocol::Message
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Envía un mensaje y devuelve el resultado.
97 98 99 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 97 def enviar() despacho_bytes(.serializar.to_s) end |
#dispatch_bytes(bytes, **opts) ⇒ Protocol::Message
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Envía un mensaje pre-serializado y devuelve el resultado.
109 110 111 112 113 114 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 109 def despacho_bytes(bytes, **opta) escritura_bytes(bytes) read_response( socket_timeout: opta[:tiempo de espera del socket de lectura], ) end |
#handshake! ⇒ BSON::Document
Este método forma parte de una API privada. Debe evitarlo 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.
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 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 197 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['Id de conexión'] respuesta rescate => Excª msg = "Nose pudo establecer el protocolo de enlacecon #{ address }" Utils.warn_bg_exception(msg, Excª, logger: [:logger], prefijo_de_registro: [log_prefix], bg_error_backtrace: [:bg_error_backtrace], ) propagar end |
#read_response(**opts) ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 130 def read_response(**opta) a menos que ¿conectado? propagar ArgumentError, "Intentando leer en una conexión no conectada #{self}" end add_server_connection_id hacer add_server_diagnostics hacer protocolo::Mensaje.deserializar(enchufe, protocolo::Mensaje::TAMAÑO MÁXIMO DEL MENSAJE, nulo, **opta) end end end |
#socket_timeout ⇒ Flotante
Este método forma parte de una API privada. Debe evitarlo 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 monitorización utilizan el valor de tiempo de espera de conexión como valor de tiempo de espera del socket. Consulte la especificación de detección y monitorización del servidor para obtener más información.
85 86 87 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 85 def socket_timeout [:tiempo de espera de conexión] || Server::CONNECT_TIMEOUT end |
#write_bytes(bytes) ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
116 117 118 119 120 121 122 123 124 125 126 |
Archivo 'lib/mongo/servidor/monitor/connection.rb', línea 116 def escritura_bytes(bytes) a menos que ¿conectado? propagar ArgumentError, "Intentandodespachar en una conexión no conectada #{self}" end add_server_connection_id hacer add_server_diagnostics hacer enchufe.guardar(bytes) end end end |