Class: Mongo::Protocol::Compressed

Hereda:
Mensaje
  • Objeto
Mostrar todo
Definido en:
lib/mongo/protocol/compressed.rb

Overview

Mensaje comprimido del protocolo de conexión MongoDB.

Este es un mensaje bidireccional que comprime otro opcode. Consulta https://github.com/mongodb/specifications/blob/master/source/compression/OP_COMPRESSED.md

Desde:

  • 2.5.0

Resumen de constantes colapsar

NOOP =

El identificador del compresor "noop".

Desde:

  • 2.5.0

'noop'
NOOP_BYTE =

El byte que indica que el mensaje no ha sido comprimido (modo de prueba).

Desde:

  • 2.5.0

0.chr.force_encoding(BSON::Binario).freeze
SNAPPY =

El identificador rápido del compresor.

Desde:

  • 2.5.0

'rápido'
SNAPPY_BYTE =

El byte que indica que el mensaje se ha comprimido con Snappy.

Desde:

  • 2.5.0

1.chr.force_encoding(BSON::Binario).freeze
ZLIB_BYTE =

El byte que indica que el mensaje ha sido comprimido con Zlib.

Desde:

  • 2.5.0

2.chr.force_encoding(BSON::Binario).freeze
zlib =

El identificador del compresor Zlib.

Desde:

  • 2.5.0

'zlib'
ZSTD =

El identificador del compresor zstd.

Desde:

  • 2.5.0

'zstd'
ZSTD_BYTE =

El byte que indica que el mensaje ha sido comprimido con zstd.

Desde:

  • 2.5.0

3.chr.force_encoding(BSON::Binario).freeze
COMPRESSOR_ID_MAP =

El identificador del compresor al mapa de bytes.

Desde:

  • 2.5.0

{
  rápido => SNAPPY_BYTE,
  zstd => ZSTD_BYTE,
  zlib => ZLIB_BYTE
}.freeze

Constantes heredadas de Mensaje

Message::BATCH_SIZE, Message::colección, Message::LIMIT, Message::MAX_MESSAGE_SIZE, Message::ORDERED, Message::Q

Constantes incluidas de Serializadores

Serializers::HEADER_PACK, Serializers::INT32_PACK, Serializers::INT64_PACK, Serializers::NULL, Serializers::ZERO

Resumen del atributo de la instancia

Atributos heredados de Mensaje

#request_id

Resumen del método de instancia colapsar

Métodos heredados de Mensaje

#==, deserialize, deserialize_array, deserialize_field, deserialize_header, campo, fields, #hash, #maybe_add_server_api, #maybe_compress, #maybe_decrypt, #maybe_encrypt, #number_returned, #serialize, #set_request_id

Métodos incluidos de Id

incluido

Detalles del Constructor

#initialize(mensaje, compresor, zlib_compression_level = nil) ⇒ Comprometido

Crea un nuevo mensaje OP_COMPRESSED.

Ejemplos:

Cree un mensaje OP_COMPRESSED.

Compressed.new(original_message, 'zlib')

Parámetros:

  • mensaje (Mongo::Protocol::Message)

    El mensaje original.

  • compresor (String, Símbolo)

    El algoritmo de compresión que se debe utilizar.

  • zlib_compression_level (Integer) (valor por defecto: nil)

    El nivel de compresión zlib a utilizar. -1 y nil implican por defecto.

Desde:

  • 2.5.0



76
77
78
79
80
81
82
83
84
# Archivo 'lib/mongo/protocol/compressed.rb', línea 76

def inicializar(mensaje, compresor, zlib_compression_level = nulo)
  @original_message = mensaje
  @original_op_code = mensaje.op_code
  @uncompressed_size = 0
  @compressor_id = COMPRESSOR_ID_MAP[compresor]
  @compressed_message = ''
  @zlib_compression_level = zlib_compression_level si zlib_compression_level && zlib_compression_level != -1
  @request_id = mensaje.request_id
end

Detalles del método de instancia

#maybe_inflateProtocolo::Mensaje

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.

Infla un mensaje OP_COMPRESED y devuelve el mensaje original.

Devuelve:

Desde:

  • 2.5.0



92
93
94
95
96
97
98
99
100
101
102
103
104
105
# Archivo 'lib/mongo/protocol/compressed.rb', línea 92

def tal_vez_inflar
  mensaje = Registro.Obtener(@original_op_code).asignar
  buffer = descomprimir(@compressed_message)

  mensaje.enviar(campo).cada hacer |Campo|
    si Campo[:multi]
      Mensaje.deserializar_array(mensaje, buffer, Campo)
    else
      Mensaje.deserialize_field(mensaje, buffer, Campo)
    end
  end
  mensaje.arreglar_después_de_deserialización si mensaje.is_a?(Msg)
  mensaje
end

#¿se puede responder?verdadero, falso

Si el mensaje espera una respuesta de la base de datos.

Ejemplos:

¿El mensaje requiere una respuesta?

message.replyable?

Devuelve:

  • (true, false)

    Si el mensaje espera una respuesta.

Desde:

  • 2.5.0



115
116
117
# Archivo 'lib/mongo/protocol/compressed.rb', línea 115

def ¿respondible?
  @original_message.¿respondible?
end