Class: Mongo::Protocol::Compressed

Herda:
mensagem
  • Objeto
mostrar tudo
Definido em:
build/ruby-driver-v2.19/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 github.com/mongodb/specifications/blob/master/source/compression/OP_COMPRESSED.rst

Desde:

  • 2.5.0

Colapsode resumo constante

noop =

O identificador do compressor noop.

Desde:

  • 2.5.0

'noop'.congelar
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'.congelar
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'.congelar
zstd =

O identificador do compressor zstd.

Desde:

  • 2.5.0

'zstd'.congelar
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

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

.

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



79
80
81
82
83
84
85
86
87
# File 'build/ruby-driver-v2.19/lib/mongo/protocol/compressed.rb', linha 79

def inicializar(mensagem, compressor, compressor, zlib_compression_level = nada)
  @ 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
  @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
109
110
# File 'build/ruby-driver-v2.19/lib/mongo/protocol/compressed.rb', linha 95

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

  mensagem.enviar(:fields).cada fazer |Campo|
    se Campo[:multi]
      mensagem.deserialize_array(mensagem, buffer, Campo)
    mais
      mensagem.deserialize_field(mensagem, buffer, Campo)
    end
  end
  se mensagem.is_a?(Msg)
    mensagem.Fix_after_deserialization
  end
  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



120
121
122
# File 'build/ruby-driver-v2.19/lib/mongo/protocol/compressed.rb', linha 120

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