Clase: Mongo::servidor::Connection
- Hereda:
-
ConnectionBase
- Objeto
- ConnectionCommon
- ConnectionBase
- Mongo::Server::Connection
- Ampliado por:
- Reenviable
- Incluye:
- Id, Monitoring::Publishable, Retryable
- Definido en:
- lib/mongo/server/connection.rb
Overview
Esta clase modela las conexiones de socket para servidores y su comportamiento.
Resumen de constantes colapsar
- 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 "ping" para un OP_MSG
{ ping => 1, '$db' => Database::ADMIN }.freeze
- PING_OP_MSG_MENSAJE =
Obsoleto.
Ya no es necesario con la especificación de Selección de Servidor.
Mensaje de ping como un OP_MSG
protocolo::Msg.Nuevo([], {}, PING_OP_MSG)
- PING_OP_MSG_BYTES =
Obsoleto.
Ya no es necesario con la especificación de Selección de Servidor.
El mensaje ping OP_MSG como bytes sin procesar
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 se cerró o no.
-
#¡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 indicadas.
-
#interrumpido! ⇒ Objeto
Marcar la conexión como interrumpida.
-
#¿interrumpido? ⇒ verdadero | falso
Si la conexión se interrumpió.
-
#pin(reason = :cursor) ⇒ objeto
privado
Marcar la conexión como fijada por el motivo dado.
-
#ping ⇒ true, false
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.
-
#registrar_checkin! ⇒ self
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.
-
#transport ⇒ Symbol | nil
privado
Obtenga el tipo de transporte para esta conexión.
-
#desanclar(motivo = :cursor) ⇒ Object
privado
Remover una chincheta de la conexión por el motivo dado.
-
#desanclar_todos ⇒ Objeto
privado
Remueve todos los pines de la conexión.
Métodos incluidos de Id
Métodos incluidos de Retryable
#read_worker, #select_server, #with_overload_retry, #write_worker
Métodos incluidos de Monitoring::Publishable
#publish_cmap_event, #publish_event, #publish_sdam_event
Métodos incluidos desde Registrable
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
Métodos heredados de ConnectionBase
#app_metadata, #dispatch, #generation, #service_id
Métodos heredados de ConnectionCommon
#handshake_command, #handshake_document
Detalles del Constructor
#initialize(servidor, opciones = {}) ⇒ Conexion
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.
La conexión nunca debe ser instanciada directamente fuera de un servidor.
Crea un nuevo objeto de conexión a la dirección de destino especificada con las opciones indicadas.
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.
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# Archivo 'lib/mongo/server/connection.rb', línea 90 def inicializar(Server, = {}) si Server.load_balancer? && [:generación] propagar ArgumentError, 'No se puede establecer la generación cuando el servidor es un balanceador de carga' end @id = Server.next_connection_id @global_id = sí mismo.clase.next_id @monitoring = Server.Monitoring @options = .freeze @server = Server @socket = nulo @last_checkin = nulo @auth_mechanism = nulo @pid = Proceso.pid @pin_reasons = Configura.Nuevo publish_cmap_event( Monitoring::Evento::Cmap::ConnectionCreated.Nuevo(dirección, ID) ) end |
Detalles de atributo de instancias
#global_id ⇒ Integer (solo lectura)
a través de todas las conexiones.
124 125 126 |
# Archivo 'lib/mongo/server/connection.rb', línea 124 def global_id @global_id end |
#id ⇒ Integer (solo lectura)
a través de conexiones con el mismo objeto de servidor.
120 121 122 |
# Archivo 'lib/mongo/server/connection.rb', línea 120 def ID @id end |
#last_checkin ⇒ Time (solo lectura)
Devuelve La última vez que la conexión fue revisada en un pool.
114 115 116 |
# Archivo 'lib/mongo/server/connection.rb', línea 114 def last_checkin @last_checkin end |
Detalles del método de instancia
#cerrado? ⇒ verdadero | falso
Si la conexión se cerró o no.
Las conexiones cerradas ya no deben utilizarse. En su lugar, obtiene una nueva conexión del pool de conexiones.
152 153 154 |
# Archivo 'lib/mongo/server/connection.rb', línea 152 def ¿Cerrado? !!@closed end |
#connect!(contexto = nil) ⇒ true
Este método modifica el objeto de conexión estableciendo un socket si previamente 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.
228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 |
# Archivo 'lib/mongo/server/connection.rb', línea 228 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? && !service_id propagar Error::InternalDriverError, 'La conexión es a un balanceador de carga y debe tener service_id establecido aquí, pero no lo tiene' end @generación = connection_pool.generation_manager.Generación(service_id: service_id) end publish_cmap_event( Monitoring::Evento::Cmap::ConnectionReady.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.
140 141 142 |
# Archivo 'lib/mongo/server/connection.rb', línea 140 def ¿conectado? !¿Cerrado? && !error? && !¿interrumpido? && !!@socket end |
#connection_pool ⇒ Objeto
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.
El pool de conexiones de la que se creó esta conexión. Puede ser nulo.
132 133 134 |
# Archivo 'lib/mongo/server/connection.rb', línea 132 def connection_pool [t:connection_pool] end |
#disconnect!(opciones = nil) ⇒ true
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.
310 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 342 343 344 |
# Archivo 'lib/mongo/server/connection.rb', línea 310 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 begin enchufe.Cerrar rescate StandardError nulo end @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 ready nunca se # publicado). Pero rastrear si publicamos el evento de cierre y no # publícalo varias veces, a menos que la conexión del socket haya sido restablecida - # 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 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.
172 173 174 |
# Archivo 'lib/mongo/server/connection.rb', línea 172 def error? !!@error end |
#¡interrumpido! ⇒ objeto
Marcar la conexión como interrumpida.
167 168 169 |
# Archivo 'lib/mongo/server/connection.rb', línea 167 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.
162 163 164 |
# Archivo 'lib/mongo/server/connection.rb', línea 162 def ¿interrumpido? !!@interrumpido end |
#pin(razón = :cursor) ⇒ Objeto
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.
Marcar la conexión como fijada por el motivo dado.
194 195 196 |
# Archivo 'lib/mongo/server/connection.rb', línea 194 def alfiler(motivo = :cursor) @pin_reasons << motivo 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.
Haz ping en la conexión para ver si el servidor responde a los comandos. Esto no bloquea en el lado del servidor.
359 360 361 362 363 364 365 366 367 |
# Archivo 'lib/mongo/server/connection.rb', línea 359 def ping ensure_connected hacer |enchufe| respuesta = add_server_diagnostics hacer enchufe.guardar(PING_OP_MSG_BYTES) protocolo::Mensaje.deserializar(enchufe, ) end respuesta.Documentos[0][Operación::Resultado::OK] == 1 end end |
#¿fijado? ⇒ Booleano
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.
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 ] Si la conexión está fijada.
184 185 186 |
# Archivo 'lib/mongo/server/connection.rb', línea 184 def ¿fijado? !@pin_reasons.¿vacío? end |
#record_checkin! ⇒ self
Registre la última hora de checkin.
388 389 390 391 |
# Archivo 'lib/mongo/server/connection.rb', línea 388 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.
374 375 376 |
# Archivo 'lib/mongo/server/connection.rb', línea 374 def socket_timeout @timeout ||= [timeout_del_socket] end |
#transport ⇒ Symbol | nil
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.
Obtenga el tipo de transporte para esta conexión.
398 399 400 401 402 403 404 405 406 407 |
# Archivo 'lib/mongo/server/connection.rb', línea 398 def Transporte return nulo si @socket.nil? caso @socket cuando mongo::Socket::Unix :unix else :tcp end end |
#desanclar(motivo = :cursor) ⇒ Objeto
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.
Remover una chincheta de la conexión por el motivo dado.
204 205 206 |
# Archivo 'lib/mongo/server/connection.rb', línea 204 def unpin(motivo = :cursor) @pin_reasons.borrar(motivo) end |
#unpin_all ⇒ 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.
Remueve todos los pines de la conexión.
211 212 213 |
# Archivo 'lib/mongo/server/connection.rb', línea 211 def desanclar_todos @pin_reasons.borrar end |