Clase: Mongo::servidor::ConnectionBase

Hereda:
ConnectionCommon Mostrar todo
Ampliado por:
Reenviable
Incluye:
Supervisión::Publishable
Definido en:
lib/mongo/servidor/connection_base.rb

Overview

Nota:

Aunque los métodos de este módulo forman parte de la API pública, el hecho de que estos métodos estén definidos en este módulo y no en las clases que incluyen este módulo no forma parte de la API pública.

Esta clase encapsula la funcionalidad de conexión común.

Desde:

  • 2.0.0

Subclases conocidas directas

Conexión, PendingConnection

Resumen de constantes colapsar

DEFAULT_MAX_BSON_OBJECT_SIZE =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

El tamaño máximo permitido en bytes que un documento proporcionado por el usuario puede ocupar cuando se serializa, si la respuesta de bienvenida del servidor no incluye el campo maxBsonObjectSize.

Los comandos que se envían al servidor pueden superar este tamaño por MAX_BSON_COMMAND_OVERHEAD.

Desde:

  • 2.0.0

16_777_216
MAX_BSON_COMMAND_OVERHEAD =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

La sobrecarga adicional permitida para los datos de comando (es decir, campos agregados al documento de comando por el controlador, en contraposición a los documentos proporcionados por el usuario) al serializar un comando completo a BSON.

Desde:

  • 2.0.0

16_384
REDUCED_MAX_BSON_SIZE =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

Desde:

  • 2.0.0

2_097_152

Constantes incluidas desde Loggable

Loggable::PREFIX

Resumen de atributos de la instancia colapsar

Atributos incluidos de supervisión::Publishable

#monitoring

Atributos heredados de ConnectionCommon

#compressor, #pid

Resumen del método de instancia colapsar

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 ConnectionCommon

#¿conectado?, #comando_de_apretón_de_manos, #documento_de_apretón_de_manos

Detalles de atributo de instancias

#descripciónServer::Description (solo lectura)

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.

Nota:

Un objeto de conexión que aún no se ha conectado (realizado el apretón de manos y autenticado, si se requiere autenticación) no tiene descripción. Durante el proceso de handshaking y autenticación, el driver debe usar las configuraciones globales por defecto, en particular, no asumir que las propiedades de una conexión en particular son las mismas que las propiedades de otras conexiones realizadas a la misma dirección (ya que el servidor en el otro extremo podría haber sido apagado y podría haberse iniciado una versión diferente del servidor).

Devuelve la descripción del servidor para esta conexión, derivada de la respuesta hello para el handshake realizado en esta conexión.

Devuelve:

Desde:

  • 2.0.0



80
81
82
# Archivo 'lib/mongo/server/connection_base.rb', línea 80

def Descripción
  @descripción
end

#opcionesHash (solo lectura)

Opciones de devolución Las opciones que se pasan.

Devuelve:

  • (encriptada)

    opciones Las opciones introducidas.

Desde:

  • 2.0.0



51
52
53
# Archivo 'lib/mongo/server/connection_base.rb', línea 51

def opciones
  @options
end

#servidorMongo::Address (solo lectura)

Dirección de devoluciones La dirección a la que conectarse.

Devuelve:

Desde:

  • 2.0.0



56
57
58
# Archivo 'lib/mongo/server/connection_base.rb', línea 56

def Server
  @server
end

Detalles del método de instancia

#app_metadataObject

Desde:

  • 2.0.0



105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# Archivo 'lib/mongo/server/connection_base.rb', línea 105

def 
  @app_metadata ||= begin
    igual = true
    AppMetadata::AUTH_OPTION_KEYS.cada hacer |llave|
      si @server.opciones[llave] != opciones[llave]
        igual = false
        break
      end
    end
    si igual
      @server.
    else
      AppMetadata.Nuevo(opciones.fusionar(propósito: @server..Propósito))
    end
  end
end

#dispatch(messages, context, options = {}) ⇒ Protocol::Message | nil

Nota:

Este método recibe el nombre de dispatch porque 'send' (enviar) es un método principal de Ruby presente en todos los objetos.

Nota:

Para compatibilidad retroactiva, este método acepta los mensajes en un arreglo. Sin embargo, debe proporcionarse exactamente un mensaje por invocación.

Despacha un solo mensaje a la conexión. Si el mensaje requiere una respuesta, se devolverá una respuesta.

Ejemplos:

Envía el mensaje.

connection.dispatch([ insert ])

Parámetros:

  • mensajes (arreglo<Message>)

    Un arreglo de un solo elemento que contiene el mensaje por enviar.

  • context (operación::Context)

    El contexto de la operación.

  • opciones (encriptada) (por defecto a: {})

Opciones Hash (options):

  • :deserialize_as_bson (booleano)

    Si se debe deserializar la respuesta a este mensaje usando objetos BSON en lugar de tipos nativos de Ruby siempre que sea posible.

Devuelve:

Aumenta:

Desde:

  • 2.0.0



148
149
150
151
152
153
154
155
156
157
158
159
160
161
# Archivo 'lib/mongo/server/connection_base.rb', línea 148

def enviar(mensajes, context, opciones = {})
  # El código de supervisión no gestiona correctamente múltiples mensajes,
  # y el driver, internamente, no envía más de un mensaje a la vez.
  # nunca. Por lo tanto, prohíbe el uso de múltiples mensajes por ahora.
  propagar ArgumentError, 'Solo se puede enviar un mensaje a la vez.' si mensajes.longitud != 1

  si Descripción.¿desconocido?
    propagar Error::InternalDriverError,
          "No se puede enviar un mensaje en una conexión con una descripción desconocida: #{description.inspect}"
  end

  mensaje = mensajes.primero
  entregar(mensaje, context, opciones)
end

#generaciónInteger | nil

Generación del pool de conexiones a partir del cual se creó esta conexión. Puede ser nulo.

Devuelve:

  • (Integer | nil)

    Generación del pool de conexiones.

Desde:

  • 2.0.0



98
99
100
101
102
103
# Archivo 'lib/mongo/server/connection_base.rb', línea 98

def Generación
  # Si la conexión es a un balanceador de carga, se establece @generation
  # después de que se complete el apretón de manos. Si la conexión es a otro servidor
  # el tipo, la generación se especifica durante la creación de la conexión.
  @generación || opciones[:generación]
end

#service_idnil | objeto

Retorna El ID del servicio, si existe.

Devuelve:

  • (nil | Object)

    El id. del servicio, si lo hay.

Desde:

  • 2.0.0



90
91
92
# Archivo 'lib/mongo/server/connection_base.rb', línea 90

def service_id
  Descripción&.service_id
end