Clase: Mongo::Servidor::Conexión
- Hereda:
-
Base de conexión
- Objeto
- Conexión común
- Base de conexión
- 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.
{ :silbido => 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 (versiones del servidor >= 3.6).
{ :silbido => 1, '$db' => Database::ADMINISTRACIÓN }.freeze
- MENSAJE_PING =
Obsoleto.
Ya no es necesario con la especificación de selección de servidor.
Mensaje de ping.
Protocolo::Query.Nuevo(Database::ADMINISTRACIÓN, Database::DOMINIO, PING, :limit => -1)
- MENSAJE_PING_OP_MSG =
Obsoleto.
Ya no es necesario con la especificación de selección de servidor.
Mensaje de ping como 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 DE PING.fabricar en serie.a_s.freeze
- BYTES DE MENSAJES DE OPERACIÓN DE PING =
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).
MENSAJE DE MENSAJE DE PING_OP.fabricar en serie.a_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
Colapso delresumen de atributos de instancia
-
#global_id ⇒ Integer
solo lectura
en todas las conexiones.
-
#id ⇒ Integer
solo lectura
a través de conexiones al mismo objeto de servidor.
-
#last_checkin ⇒ Time
solo lectura
La última vez que se verificó la conexión, se volvió a ingresar en un grupo.
Atributos incluidos de Monitoring::Publishable
Atributos heredados de ConnectionBase
#descripción, #opciones, #servidor
Atributos heredados de ConnectionCommon
Colapso del resumen del método de instancia
-
#cerrado? ⇒ verdadero | falso
Si la conexión fue cerrada.
-
#¡conectar!(contexto = nulo) ⇒ verdadero
Establece una conexión de red con la dirección de destino.
-
#¿conectado? ⇒ verdadero | falso
Si la conexión se realizó y no se interrumpió, cerró o se generó un error.
-
#connection_pool ⇒ Objeto
privada
El grupo de conexiones desde el que se creó esta conexión.
-
#¡desconectar!(opciones = nulo) ⇒ verdadero
Desconectar la conexión.
- #error? ⇒ Boolean privada
-
#inicializar(servidor, opciones = {}) ⇒ Conexión
constructor
privada
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 se interrumpió la conexión.
-
#pin ⇒ Objeto
privada
Marcar la conexión como fijada.
-
#ping ⇒ verdadero, falso
Obsoleto
Obsoleto.
Ya no es necesario con la especificación de selección de servidor.
-
#¿fijado? ⇒ Booleano
privada
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 check-in.
-
#socket_timeout ⇒ Float (también: #timeout)
Obtener el tiempo de espera para ejecutar una operación en un socket.
-
#desanclar ⇒ Objeto
privada
Marcar la conexión como no fijada.
Métodos incluidos de Id
Métodos incluidos en Retryable
#trabajador_de_lectura, #servidor_de_selección, #trabajador_de_escritura
Métodos incluidos en Monitoring::Publishable
#publicar_evento_cmap, #publicar_evento, #publicar_evento_sdam
Métodos incluidos en Loggable
#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
#comando_de_apretón_de_manos, #documento_de_apretón_de_manos
Detalles del constructor
#inicializar(servidor, 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.
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 E/S (y por lo tanto no crea sockets, protocolos de enlace ni autenticaciones); llame al método connect! 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.¿equilibrador de carga? && [:generación] propagar ArgumentError, "Nose puede configurar la generación cuando el servidor es un balanceador decarga" end @id = Server.siguiente_id_de_conexión @global_id = yo.clase.siguiente_id @monitoring = Server.vigilancia @opciones = .freeze @server = Server @socket = nulo @last_checkin = nulo @mecanismo_de_autorización = nulo @pid = Proceso.pid @fijado = false evento_publicar_cmap( Monitoring::Evento::Cmap::Conexión creada.Nuevo(dirección, ID.) ) end |
Detalles de los atributos de instancia
#global_id ⇒ Entero (solo lectura)
en todas las conexiones.
140 141 142 |
# Archivo 'lib/mongo/server/connection.rb', línea 140 def id_global @global_id end |
#id ⇒ Entero (solo lectura)
a través de conexiones al 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, obtenga una nueva conexión del pool de conexiones.
166 167 168 |
# Archivo 'lib/mongo/server/connection.rb', línea 166 def ¿cerrado? !!@cerrado end |
#¡conectar!(contexto = nulo) ⇒ verdadero
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) ¡subir si está cerrado! a no ser que @socket @socket = crear_socket(context) @descripción, @compressor = hacer_conectar Si Server.¿equilibrador de carga? Si Lint.¿activado? a no ser que id_de_servicio propagar Error::InternalDriverError, "Laconexión es a un balanceador de carga y debe tener service_id configurado aquí, pero no lotiene" end end @generación = grupo de conexiones.gerente de generación.generación(id_de_servicio: id_de_servicio) end evento_publicar_cmap( Monitoring::Evento::Cmap::Conexión lista.Nuevo(dirección, ID.) ) @close_event_published = false end true end |
#¿conectado? ⇒ verdadero | falso
Si la conexión se realizó y no se interrumpió, cerró o se generó 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 grupo de conexiones desde el 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
Una vez desconectada una conexión, ya no debe utilizarse. Se debe obtener una nueva conexión del pool de conexiones, que devolverá una conexión lista o creará una nueva. Si el linting está habilitado, reutilizar una conexión desconectada generará el error Error::LintError. Si el linting no está habilitado, se registrará una advertencia.
Este método muta el objeto de conexión estableciendo el socket en nulo si el cierre se realizó correctamente.
Desconectar 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. # Verifique el socket y no la bandera @closed. @mecanismo_de_autorización = nulo @last_checkin = nulo Si Socket Socket.cerrar rescate nulo @socket = nulo end @cerrado = true ¡interrumpido! Si && [:interrumpido] # Para satisfacer las pruebas de especificaciones CMAP, publique eventos de cierre incluso si # 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, publique el evento de cierre una vez por cada cierre de socket. a no ser que @close_event_published razón = && [:razón] evento_publicar_cmap( Monitoring::Evento::Cmap::Conexión cerrada.Nuevo( dirección, ID., razón, ), ) @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 se interrumpió la conexión.
Las conexiones interrumpidas ya fueron eliminadas del grupo y no se deben volver a incluir en el mismo.
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 perno @fijado = true end |
#ping ⇒ verdadero, falso
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 = características.¿op_msg_habilitado? ? BYTES DE MENSAJES DE OPERACIÓN DE PING : BYTES DE PING asegurar_conectado hacer |Socket| respuesta = agregar_diagnósticos_del_servidor hacer Socket.guardar(bytes) Protocolo::Mensaje.deserializar(Socket, ) 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 se deben desconectar ni eliminar de un grupo de conexiones si están inactivas o obsoletas.
# @return [ true | false ] Si la conexión está fijada.
198 199 200 |
# Archivo 'lib/mongo/server/connection.rb', línea 198 def ¿fijado? @fijado end |
#¡registro_de_comprobación! ⇒ yo mismo
Registre la última hora de check-in.
386 387 388 389 |
# Archivo 'lib/mongo/server/connection.rb', línea 386 def ¡registro_comprobación! @last_checkin = Tiempo.ahora yo end |
#socket_timeout ⇒ Float También conocido como: timeout
Obtener 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 tiempo de espera del socket @se acabó el tiempo ||= [:tiempo de espera del socket] end |
#desanclar ⇒ 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 no fijada.
212 213 214 |
# Archivo 'lib/mongo/server/connection.rb', línea 212 def unpin @fijado = false end |