Clase: Mongo::servidor::Connection
- Hereda:
-
ConnectionBase
- Objeto
- ConnectionCommon
- ConnectionBase
- Mongo::Servidor::Conexión
- Ampliado por:
- Reenviable
- Incluye:
- Id, Monitoreo::Publicable, Reintentable
- Definido en:
- lib/mongo/servidor/conexión.rb
Overview
Esta clase modela las conexiones de socket para servidores y su comportamiento.
Colapso delresumen constante
- ping =
Obsoleto.
Ya no es necesario con la especificación de Selección de Servidor.
El comando ping.
{ ping => 1 }.freeze
- PING_OP_MSG =
Obsoleto.
Ya no es necesario con la especificación de Selección de Servidor.
El comando de ping para un OP_MSG (versiones de servidor ≥ 3.6).
{ ping => 1, '$db' => Database::ADMIN }.freeze
- MENSAJE_PING =
Obsoleto.
Ya no es necesario con la especificación de Selección de Servidor.
Mensaje de ping.
protocolo::Query.Nuevo(Database::ADMIN, Database::Comando, PING, :limit => -1)
- PING_OP_MSG_MENSAJE =
Obsoleto.
Ya no es necesario con la especificación de Selección de Servidor.
Mensaje ping como un OP_MSG (versiones del servidor >= 3.6).
protocolo::Msg.Nuevo([], {}, PING_OP_MSG)
- PING_BYTES =
Obsoleto.
Ya no es necesario con la especificación de Selección de Servidor.
El mensaje de ping como bytes sin procesar.
MENSAJE_PING.serializar.to_s.freeze
- PING_OP_MSG_BYTES =
Obsoleto.
Ya no es necesario con la especificación de Selección de Servidor.
El mensaje de ping OP_MSG como bytes sin procesar (versiones del servidor >= 3.6).
PING_OP_MSG_MENSAJE.serializar.to_s.freeze
Constantes incluidas desde Loggable
Constantes heredadas de ConnectionBase
Mongo::Server::ConnectionBase::DEFAULT_MAX_BSON_OBJECT_SIZE, Mongo::Server::ConnectionBase::MAX_BSON_COMMAND_OVERHEAD, Mongo::Server::ConnectionBase::REDUCED_MAX_BSON_SIZE
Resumen de atributos de la instancia colapsar
-
#global_id ⇒ Integer
Solo lectura
a través de todas las conexiones.
-
#id ⇒ Integer
Solo lectura
a través de conexiones con el mismo objeto de servidor.
-
#last_checkin ⇒ Time
Solo lectura
La última vez que la conexión se verificó y se devolvió al grupo.
Atributos incluidos de supervisión::Publishable
Atributos heredados de ConnectionBase
#descripción, #opciones, #servidor
Atributos heredados de ConnectionCommon
Resumen del método de instancia colapsar
-
#cerrado? ⇒ verdadero | falso
Si la conexión fue cerrada.
-
#¡conectar!(contexto = ninguno) ⇒ true
Establece una conexión de red con la dirección de destino.
-
#¿conectado? ⇒ verdadero | falso
Si la conexión estaba conectada y no se interrumpió, no se cerró ni se produjo un error.
-
#connection_pool ⇒ Objeto
privado
El pool de conexiones desde la cual se ha creado esta conexión.
-
#disconnect!(opciones = nil) ⇒ true
Desconecte la conexión.
- #error? ⇒ Boolean privado
-
#initialize(servidor, opciones = {}) ⇒ Conexión
constructor
privado
Crea un nuevo objeto de conexión a la dirección de destino especificada con las opciones especificadas.
-
#¡interrumpido! ⇒ Objeto
Marcar la conexión como interrumpida.
-
#¿interrumpido? ⇒ verdadero | falso
Si la conexión se interrumpió.
-
#pin ⇒ Objeto
privado
Marcar la conexión como fijada.
-
#ping ⇒ verdadero, falso
Obsoleto
Obsoleto.
Ya no es necesario con la especificación de Selección de Servidor.
-
#¿anclado? ⇒ Booleano
privado
Si la conexión es utilizada por una transacción o por operaciones de cursor.
-
#¡registro_de_registro! ⇒ yo mismo
Registre la última hora de checkin.
-
#socket_timeout ⇒ Float (también: #timeout)
Obtén el tiempo de espera para ejecutar una operación en un socket.
-
#desanclar ⇒ Objeto
privado
Marca la conexión como no fijada.
Métodos incluidos de Id
Métodos incluidos en Retryable
#read_worker, #select_server, #write_worker
Métodos incluidos en Monitoring::Publishable
#publicar_evento_cmap, #publicar_evento, #publicar_evento_sdam
Métodos incluidos desde Registrable
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
Métodos heredados de ConnectionBase
#metadatos_de_la_aplicación, #envío, #generación, #id_del_servicio
Métodos heredados de ConnectionCommon
#handshake_command, #handshake_document
Detalles del constructor
#initialize(servidor, opciones = {}) ⇒ Conexion
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
La conexión nunca debe instanciarse directamente fuera de un servidor.
Crea un nuevo objeto de conexión a la dirección de destino especificada con las opciones especificadas.
El constructor no realiza ninguna entrada/salida (por lo tanto, no crea sockets, ni establece handshakes ni autentica); debes llamar a connect! método en el objeto de conexión para crear la conexión de red.
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# Archivo 'lib/mongo/server/connection.rb', línea 106 def inicializar(Server, = {}) si Server.load_balancer? && [:generación] propagar ArgumentError, "La generación no puede establecerse cuando el servidor es un balanceador de carga" end @id = Server.siguiente_id_de_conexión @global_id = sí mismo.clase.siguiente_id @monitoring = Server.Monitoring @options = .freeze @server = Server @socket = nulo @last_checkin = nulo @auth_mechanism = nulo @pid = Proceso.pid @anclado = false publish_cmap_event( Monitoring::Evento::Cmap::Conexión creada.Nuevo(dirección, ID) ) end |
Detalles de los atributos de instancia
#global_id ⇒ Integer (solo lectura)
a través de todas las conexiones.
140 141 142 |
# Archivo 'lib/mongo/server/connection.rb', línea 140 def global_id @global_id end |
#id ⇒ Integer (solo lectura)
a través de conexiones con el mismo objeto de servidor.
136 137 138 |
# Archivo 'lib/mongo/server/connection.rb', línea 136 def ID @id end |
#last_checkin ⇒ Hora (solo lectura)
Devuelve la última vez que se revisó la conexión en un grupo.
130 131 132 |
# Archivo 'lib/mongo/server/connection.rb', línea 130 def last_checkin @last_checkin end |
Detalles del método de instancia
#cerrado? ⇒ verdadero | falso
Si la conexión fue cerrada.
Las conexiones cerradas ya no deben utilizarse. En su lugar, obtiene una nueva conexión del pool de conexiones.
166 167 168 |
# Archivo 'lib/mongo/server/connection.rb', línea 166 def ¿Cerrado? !!@closed end |
#connect!(contexto = nil) ⇒ true
Este método muta el objeto de conexión estableciendo 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.
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
# Archivo 'lib/mongo/server/connection.rb', línea 229 def ¡conectar!(context = nulo) raise_if_closed! a menos que @socket @socket = create_socket(context) @descripción, @compressor = do_connect si Server.load_balancer? si Lint.¿habilitado? a menos que service_id propagar Error::InternalDriverError, "La conexión es a un balanceador de carga y debe tener el service_id configurado aquí, pero no lo tiene" end end @generación = grupo de conexiones.generation_manager.Generación(service_id: service_id) end publish_cmap_event( Monitoring::Evento::Cmap::Conexión lista.Nuevo(dirección, ID) ) @close_event_published = false end true end |
#¿conectado? ⇒ verdadero | falso
Si la conexión estaba conectada y no se interrumpió, no se cerró ni se produjo un error.
154 155 156 |
# Archivo 'lib/mongo/server/connection.rb', línea 154 def ¿conectado? !¿Cerrado? && !error? && !¿interrumpido? && !!@socket end |
#connection_pool ⇒ 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.
El pool de conexiones de la que se creó esta conexión. Puede ser nulo.
146 147 148 |
# Archivo 'lib/mongo/server/connection.rb', línea 146 def grupo de conexiones [:pool_de_conexiones] end |
#¡desconectar!(opciones = nulo) ⇒ verdadero
Después de desconectar una conexión, ya no debe utilizarse. Una nueva conexión debe obtenerse del pool de conexiones, el cual devolverá una conexión lista o creará una nueva conexión. Si la linting está habilitada, reutilizar una conexión desconectada generará Error::LintError. Si la revisión de código no está activada, se creará un registro de advertencia.
Este método muta el objeto de conexión estableciendo el socket en nil si el cierre es exitoso.
Desconecte la conexión.
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 336 337 338 339 340 341 |
# Archivo 'lib/mongo/server/connection.rb', línea 311 def ¡desconectar!( = nulo) # Nota: @closed puede ser verdadero aquí, pero también podemos tener un socket. # Comprueba el socket y no la bandera @closed. @auth_mechanism = nulo @last_checkin = nulo si enchufe enchufe.Cerrar rescate nulo @socket = nulo end @closed = true ¡interrumpido! si && [:interrumpido] # Para cumplir con las pruebas de especificaciones de CMAP, publica eventos de cierre incluso si los # El socket nunca se conectó (y por lo tanto el evento listo nunca se conectó) # publicado). Pero rastrear si publicamos el evento de cierre y no # publicarlo varias veces, a menos que el socket se haya reconectado - # en ese caso, publica el evento de cierre una vez por cada cierre de socket. a menos que @close_event_published motivo = && [Motivo:] publish_cmap_event( Monitoring::Evento::Cmap::ConnectionClosed.Nuevo( dirección, ID, motivo, ), ) @close_event_published = true end true end |
#error? ⇒ Boolean
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
186 187 188 |
# Archivo 'lib/mongo/server/connection.rb', línea 186 def error? !!@error end |
#¡interrumpido! ⇒ objeto
Marcar la conexión como interrumpida.
181 182 183 |
# Archivo 'lib/mongo/server/connection.rb', línea 181 def ¡interrumpido! @interrumpido = true end |
#interrumpido? ⇒ verdadero | falso
Si la conexión se interrumpió.
Las conexiones interrumpidas ya fueron eliminadas del grupo y no deben volver a ser registradas en el grupo.
176 177 178 |
# Archivo 'lib/mongo/server/connection.rb', línea 176 def ¿interrumpido? !!@interrumpido end |
#pin ⇒ 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.
Marcar la conexión como fijada.
205 206 207 |
# Archivo 'lib/mongo/server/connection.rb', línea 205 def alfiler @anclado = true end |
#ping ⇒ true, false
Ya no es necesario con la especificación de Selección de Servidor.
Esto utiliza un mensaje de ping pre-serializado para optimización.
Haga ping a la conexión para comprobar si el servidor responde a los comandos. Esto no genera bloqueos en el servidor.
356 357 358 359 360 361 362 363 364 365 |
# Archivo 'lib/mongo/server/connection.rb', línea 356 def ping bytes = Funcionalidades.op_msg_enabled? ? PING_OP_MSG_BYTES : PING_BYTES asegurar_conectado hacer |enchufe| respuesta = add_server_diagnostics hacer enchufe.guardar(bytes) protocolo::Mensaje.deserializar(enchufe, ) end respuesta.Documentos[0][Operación::Resultado::Vale] == 1 end end |
#¿fijado? ⇒ Booleano
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Si la conexión es utilizada por una transacción o por operaciones de cursor.
Las conexiones fijadas no deben desconectarse ni eliminarse de un pool de conexiones si están inactivas o desactualizadas.
# @return [ true | false ] Indica si la conexión está fijada.
198 199 200 |
# Archivo 'lib/mongo/server/connection.rb', línea 198 def ¿fijado? @anclado end |
#¡registro_de_comprobación! ⇒ yo mismo
Registre la última hora de checkin.
386 387 388 389 |
# Archivo 'lib/mongo/server/connection.rb', línea 386 def registro_chequeo! @last_checkin = Tiempo.ahora sí mismo end |
#socket_timeout ⇒ Float También conocido como: timeout
Obtén el tiempo de espera para ejecutar una operación en un socket.
372 373 374 |
# Archivo 'lib/mongo/server/connection.rb', línea 372 def socket_timeout @se acabó el tiempo ||= [:tiempo de espera del socket] end |
#unpin ⇒ Object
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Marca la conexión como no fijada.
212 213 214 |
# Archivo 'lib/mongo/server/connection.rb', línea 212 def unpin @anclado = false end |