Clase: Mongo::Servidor::Conexión

Hereda:
Base de conexión Mostrar todo
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.

Desde:

  • 2.0.0

Colapso delresumen constante

PING =
Obsoleto.

Ya no es necesario con la especificación de selección de servidor.

El comando ping.

Desde:

  • 2.1.0

{ :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).

Desde:

  • 2.5.0

{ :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.

Desde:

  • 2.1.0

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).

Desde:

  • 2.5.0

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.

Desde:

  • 2.1.0

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).

Desde:

  • 2.5.0

MENSAJE DE MENSAJE DE PING_OP.fabricar en serie.a_s.freeze

Constantes incluidas desde Loggable

Registrable::PREFIX

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

Atributos incluidos de Monitoring::Publishable

#monitoring

Atributos heredados de ConnectionBase

#descripción, #opciones, #servidor

Atributos heredados de ConnectionCommon

#compressor, #pid

Colapso del resumen del método de instancia

Métodos incluidos de Id

incluido

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.

Nota:

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.

Ejemplos:

Crear la conexión.

Connection.new(server)

Parámetros:

  • Server (Mongo::Servidor)

    El servidor al que es dirigida la conexión.

  • opciones (Hash) (predeterminado: {})

    Las opciones de conexión.

Opciones Hash(opciones):

  • :tubo (IO)

    El descriptor de archivo para que el extremo de lectura de la tubería escuche durante la llamada del sistema de selección cuando lee desde el socket.

  • :generación (Entero)

    La generación de esta conexión. La generación solo debe especificarse en esta opción cuando no se esté en modo de balanceo de carga, y debe ser la generación del grupo de conexiones al crearse la conexión. En modo de balanceo de carga, la generación se establece en la conexión tras completarse el protocolo de enlace.

  • :server_api (Hash)

    La versión de la API del servidor solicitada. Este hash puede contener los siguientes elementos:

    • :versión – cadena

    • :strict – booleano

    • :errores_de_deprecación – booleano

Desde:

  • 2.0.0



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, opciones = {})
  Si Server.¿equilibrador de carga? && opciones[: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 = 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_idEntero (solo lectura)

en todas las conexiones.

Devuelve:

  • (Entero)

    El ID global de la conexión. Será único.

Desde:

  • 2.0.0



140
141
142
# Archivo 'lib/mongo/server/connection.rb', línea 140

def id_global
  @global_id
end

#idEntero (solo lectura)

a través de conexiones al mismo objeto de servidor.

Devuelve:

  • (Entero)

    El ID de la conexión. Será único.

Desde:

  • 2.9.0



136
137
138
# Archivo 'lib/mongo/server/connection.rb', línea 136

def ID.
  @id
end

#last_checkinHora (solo lectura)

Devuelve la última vez que se revisó la conexión en un grupo.

Devuelve:

  • (Time)

    La última vez que se verificó la conexión, se volvió a ingresar en un grupo.

Desde:

  • 2.5.0



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.

Devuelve:

  • (verdadero | falso)

    Si la conexión fue cerrada.

Desde:

  • 2.9.0



166
167
168
# Archivo 'lib/mongo/server/connection.rb', línea 166

def ¿cerrado?
  !!@cerrado
end

#¡conectar!(contexto = nulo) ⇒ verdadero

Nota:

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.

Ejemplos:

Conectarse al host.

connection.connect!

Devuelve:

  • (verdadero) -

    Si la conexión se realizó correctamente.

Desde:

  • 2.0.0



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.

Devuelve:

  • (verdadero | falso)

    Si la conexión estaba conectada.

Desde:

  • 2.0.0



154
155
156
# Archivo 'lib/mongo/server/connection.rb', línea 154

def ¿conectado?
  !¿cerrado? && !error? && !¿interrumpido? && !!@socket
end

#connection_poolObjeto

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.

Desde:

  • 2.0.0



146
147
148
# Archivo 'lib/mongo/server/connection.rb', línea 146

def grupo de conexiones
  opciones[:pool_de_conexiones]
end

#¡desconectar!(opciones = nulo) ⇒ verdadero

Nota:

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.

Nota:

Este método muta el objeto de conexión estableciendo el socket en nulo si el cierre se realizó correctamente.

Desconectar la conexión.

Parámetros:

  • opciones (Hash) (predeterminado: nulo)

    un conjunto personalizable de opciones

Opciones Hash(opciones):

  • :razón (Símbolo)

    La razón por la cual se cierra la conexión.

  • :interrumpido (true | false)

    Si la conexión se interrumpió o no.

Devuelve:

  • (verdadero) -

    Si la desconexión se realizó correctamente.

Desde:

  • 2.0.0



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!(opciones = 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 opciones && opciones[: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 = opciones && opciones[: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.

Devuelve:

  • (Booleano)

Desde:

  • 2.0.0



186
187
188
# Archivo 'lib/mongo/server/connection.rb', línea 186

def error?
  !!@error
end

#¡interrumpido!Objeto

Marcar la conexión como interrumpida.

Desde:

  • 2.0.0



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.

Devuelve:

  • (verdadero | falso)

    Si la conexión se interrumpió.

Desde:

  • 2.0.0



176
177
178
# Archivo 'lib/mongo/server/connection.rb', línea 176

def ¿interrumpido?
  !!@interrumpido
end

#pinObjeto

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.

Desde:

  • 2.0.0



205
206
207
# Archivo 'lib/mongo/server/connection.rb', línea 205

def perno
  @fijado = true
end

#pingverdadero, falso

Obsoleto.

Ya no es necesario con la especificación de selección de servidor.

Nota:

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.

Ejemplos:

Hacer ping a la conexión.

connection.ping

Devuelve:

  • (verdadero,falso)

    Si el servidor está aceptando conexiones.

Desde:

  • 2.1.0



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, tamaño máximo del mensaje)
    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.

Devuelve:

  • (Booleano)

Desde:

  • 2.0.0



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.

Ejemplos:

Registre la hora de check-in en esta conexión.

connection.record_checkin!

Devuelve:

  • (ser)

Desde:

  • 2.5.0



386
387
388
389
# Archivo 'lib/mongo/server/connection.rb', línea 386

def ¡registro_comprobación!
  @last_checkin = Tiempo.ahora
  yo
end

#socket_timeoutFloat También conocido como: timeout

Obtener el tiempo de espera para ejecutar una operación en un socket.

Devuelve:

  • (Flotar) -

    El tiempo de espera de la operación en segundos.

Desde:

  • 2.0.0



372
373
374
# Archivo 'lib/mongo/server/connection.rb', línea 372

def tiempo de espera del socket
  @se acabó el tiempo ||= opciones[:tiempo de espera del socket]
end

#desanclarObjeto

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.

Desde:

  • 2.0.0



212
213
214
# Archivo 'lib/mongo/server/connection.rb', línea 212

def unpin
  @fijado = false
end