Class: Mongo::Protocol::Compressed

Herda:
mensagem
  • Objeto
mostrar tudo
Definido em:
lib/mongo/protocol/compressed.rb

Visão geral

Protocolo de fio do MongoDB Mensagem comprimida.

Esta é uma mensagem bidirecional que comprime outro código de operação. Consulte https://github.com/mongodb/specifications/blob/master/source/compression/OP_COMPRESSED.md

Desde:

  • 2.5.0

Colapsode resumo constante

noop =

O identificador do compressor noop.

Desde:

  • 2.5.0

'noop'
NOOP_BYTE =

O byte sinalizando que a mensagem não foi compactada (modo de teste).

Desde:

  • 2.5.0

0.chr.force_encoding(BSON::Binário).congelar
SNAPPY =

O identificador snappy do compressor.

Desde:

  • 2.5.0

'snappy'
SNAPPY_BYTE =

O byte sinalizando que a mensagem foi compactada com snappy.

Desde:

  • 2.5.0

1.chr.force_encoding(BSON::Binário).congelar
ZLIB_BYTE =

O byte sinalizando que a mensagem foi compactada com zlib.

Desde:

  • 2.5.0

2.chr.force_encoding(BSON::Binário).congelar
zlib =

O identificador do compressor zlib .

Desde:

  • 2.5.0

'zlib'
zstd =

O identificador do compressor zstd.

Desde:

  • 2.5.0

'zstd'
ZSTD_BYTE =

O byte sinalizando que a mensagem foi compactada com zstd.

Desde:

  • 2.5.0

3.chr.force_encoding(BSON::Binário).congelar
COMPRESSOR_ID_MAP =

O identificador do compressor para o mapa de bytes.

Desde:

  • 2.5.0

{
  Snappy => SNAPPY_BYTE,
  zstd => ZSTD_BYTE,
  zlib => ZLIB_BYTE
}.congelar

Constantes herdadas de Mensagem

Mensagem::BATCH_SIZE, Mensagem::COLLECTION, Mensagem::LIMIT, Mensagem::MAX_MSSAGE_SIZE, Mensagem::ORDERED , Mensagem::Q

Constantes incluídas dos serializadores

Serializadores::HEADER_PACK, Serializadores::INT32_PACK, Serializadores::INT64_PACK, Serializadores::NULL, Serializadores::Zero

Resumo do atributo de instância

Atributos herdados de Mensagem

#request_id

Recolhimento do Resumo do método de instância

Métodos herdados de Mensagem

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

Métodos incluídos do ID

incluído

Detalhes do construtor

#initialize(message, compressor, zlib_compression_level = nil) ➤ Compressed

Cria uma nova mensagem OP_COMPRESSED.

Exemplos:

Crie uma mensagem OP_COMPRESSED.

Compressed.new(original_message, 'zlib')

Parâmetros:

  • mensagem (Mongo::Protocol::Message)

    A mensagem original.

  • compressor, compressor (string, símbolo)

    O algoritmo de compressão a ser usado.

  • zlib_compression_level (Inteiro) (padrão para: nil)

    O nível de compressão zlib a ser usado. -1 e nada implicam em padrão.

Desde:

  • 2.5.0



76
77
78
79
80
81
82
83
84
85
86
87
# Arquivo 'lib/mongo/protocol/compressed.rb', linha 76

def inicializar(mensagem, compressor, compressor, zlib_compression_level = nada)
  super()
  @ original_message = mensagem
  @ original_op_code = mensagem.op_code
  @uncompressed_size = 0
  @compressor_id = COMPRESSOR_ID_MAP[compressor, compressor]
  @compressed_message = ''
  @zlib_compression_level = zlib_compression_level se zlib_compression_level && zlib_compression_level != -1
  # Uma mensagem compactada deve reutilizar o ID de solicitação da mensagem encapsulada,
  # substituindo o ID recém-atribuído pelo inicializador da superclasse.
  @request_id = mensagem.request_id
end

Detalhes do método de instância

#may_inflate ➤ Protocol::Message

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Incha uma mensagem OP_COMRESSED e retorna a mensagem original.

Retorna:

Desde:

  • 2.5.0



95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Arquivo 'lib/mongo/protocol/compressed.rb', linha 95

def talvez_inflate
  mensagem = Registro.obter(@ original_op_code).alocar
  buffer = descompactar(@compressed_message)

  mensagem.Campos.cada fazer |Campo|
    se Campo[:multi]
      mensagem.deserialize_array(buffer, Campo)
    mais
      mensagem.deserialize_field(buffer, Campo)
    end
  end
  mensagem.Fix_after_deserialization se mensagem.is_a?(Msg)
  mensagem
end

#respondível?true, false

Se a mensagem espera uma resposta do banco de banco de dados.

Exemplos:

A mensagem exige uma resposta?

message.replyable?

Retorna:

  • (verdadeiro, falso)

    Se a mensagem espera uma resposta.

Desde:

  • 2.5.0



118
119
120
# Arquivo 'lib/mongo/protocol/compressed.rb', linha 118

def respondível?
  @ original_message.respondível?
end

#serialize_fields(buffer, max_bson_size) ⇒ objeto

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Desde:

  • 2.5.0



123
124
125
126
127
128
129
# Arquivo 'lib/mongo/protocol/compressed.rb', linha 123

def serialize_fields(buffer, max_bson_size)
  buffer = BSON::ByteBuffer.Novo
  @ original_message.serialize_fields(buffer, max_bson_size)
  @uncompressed_size = buffer.Tamanho
  @compressed_message = comprimir(buffer)
  super
end