Clase: Mongo::Server::Monitor::Connection Privada
- Hereda:
-
Conexión común
- Objeto
- Conexión común
- 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. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
Esta clase modela las conexiones del monitor y su comportamiento.
Subclases conocidas directas
Resumen constante
Constantes incluidas desde Loggable
Colapso delresumen de atributos de instancia
-
#dirección ⇒ Mongo::Dirección
solo lectura
privada
Dirección La dirección a la que conectarse.
-
#options ⇒ Hash
solo lectura
privada
Opciones Las opciones pasadas.
-
#id_de_conexión_del_servidor ⇒ Entero
solo lectura
privada
Server_connection_id El identificador de conexión del servidor.
Atributos heredados de ConnectionCommon
Colapso del resumen del método de instancia
-
#check_document ⇒ BSON::Document
privada
Compilar un documento que se debe usar para la verificación de la conexión.
-
#¡conectar! ⇒ verdadero
privada
Establece una conexión de red con la dirección de destino.
-
#¡desconectar!(opciones = nulo) ⇒ verdadero
privada
Desconectar la conexión.
-
#dispatch(message) ⇒ Protocol::Message
privada
Envía un mensaje y devuelve el resultado.
-
#dispatch_bytes(bytes, **opts) ⇒ Protocol::Message
privada
Envía un mensaje preserializado y devuelve el resultado.
-
#handshake! ⇒ BSON::Document
privada
Envía un comando de protocolo de enlace al host conectado y valida la respuesta.
-
#inicializar(dirección, opciones = {}) ⇒ Conexión
constructor
privada
Crea un nuevo objeto de conexión a la dirección de destino especificada con las opciones especificadas.
- #read_response(**opts) ⇒ Objeto privada
-
#socket_timeout ⇒ Flotante
privada
Devuelve el tiempo de espera del socket de monitoreo.
- #write_bytes(bytes) ⇒ Objeto privada
Métodos incluidos en Loggable
#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 monitoreo 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/server/monitor/connection.rb', línea 58 def inicializar(dirección, = {}) @DIRECCIÓN = dirección @opciones = .dup.freeze a no ser 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 retorno La dirección a la que conectarse.
74 75 76 |
# Archivo 'lib/mongo/server/monitor/connection.rb', línea 74 def dirección @DIRECCIÓN 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/server/monitor/connection.rb', línea 71 def @opciones end |
#server_connection_id ⇒ 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 identificador de conexión del servidor.
90 91 92 |
# Archivo 'lib/mongo/server/monitor/connection.rb', línea 90 def id_de_conexión_del_servidor @id_de_conexión_del_servidor 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/server/monitor/connection.rb', línea 229 def check_document API del servidor = @app_metadata.API del servidor || [:server_api] doc = Si hello_ok? || API del servidor _doc = HELLO_DOC Si API del servidor _doc = _doc.unir(Utils.API del servidor de transformación(API del servidor)) end _doc else LEGADO_HOLA_DOC 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.unir(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 estableciendo un socket si anteriormente no existía ninguno.
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/server/monitor/connection.rb', línea 158 def ¡conectar! Si @socket propagar ArgumentError, 'La conexión de monitoreo ya está conectada' end @socket = agregar_diagnósticos_del_servidor hacer dirección.Socket(tiempo de espera del socket, .unir( 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 nulo si el cierre se realizó correctamente.
Este método acepta un argumento de opciones para compatibilidad con Server::Connections. Sin embargo, se ignoran todas las opciones.
Desconectar la conexión.
184 185 186 187 188 189 190 |
# Archivo 'lib/mongo/server/monitor/connection.rb', línea 184 def ¡desconectar!( = nulo) Si Socket Socket.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/server/monitor/connection.rb', línea 97 def despacho() bytes de despacho(.fabricar en serie.a_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 preserializado y devuelve el resultado.
109 110 111 112 113 114 |
# Archivo 'lib/mongo/server/monitor/connection.rb', línea 109 def bytes de despacho(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 un comando de protocolo de enlace 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/server/monitor/connection.rb', línea 197 def handshake! Comando = comando de apretón de manos( documento de apretón de manos( @app_metadata, API del servidor: [:server_api] ) ) carga útil = Comando.fabricar en serie.a_s = bytes de despacho(carga útil) resultado = Operación::Resultado.Nuevo() resultado.validate! respuesta = resultado.Documentos.primera set_compressor!(respuesta) set_hello_ok!(respuesta) @id_de_conexión_del_servidor = respuesta['Id de conexión'] respuesta rescate => Excª msg = "Nose pudo establecer el protocolo de enlacecon #{ address }" Utils.advertencia_bg_excepción(msg, Excª, logger: [:logger], prefijo_de_registro: [:prefijo_de_registro], 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/server/monitor/connection.rb', línea 130 def read_response(**opta) a no ser que ¿conectado? propagar ArgumentError, "Intentando leer en una conexión no conectada #{self}" end agregar_id_de_conexión_del_servidor hacer agregar_diagnósticos_del_servidor hacer Protocolo::Mensaje.deserializar(Socket, 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 del socket de monitoreo.
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/server/monitor/connection.rb', línea 85 def tiempo de espera del socket [:tiempo de espera de conexión] || Servidor::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/server/monitor/connection.rb', línea 116 def escritura_bytes(bytes) a no ser que ¿conectado? propagar ArgumentError, "Intentandodespachar en una conexión no conectada #{self}" end agregar_id_de_conexión_del_servidor hacer agregar_diagnósticos_del_servidor hacer Socket.guardar(bytes) end end end |