Class: Mongo::Protocol::Compressed

继承:
message
  • 对象
显示全部
定义于:
build/Ruby-driver-v 2.19 /lib/mongo/protocol/compressed.rb

Overview

MongoDB Wire 协议压缩消息。

这是压缩另一个操作码的双向消息。 请参阅github.com/mongodb/Specifications/blob/master/source/compression/OP_COMPRESSED.rst

由于:

  • 2.5.0

常量摘要折叠

noop =

noop 压缩器标识符。

由于:

  • 2.5.0

'noop'.冻结
NOOP_BYTE =

该字节表示消息未经压缩(测试模式)。

由于:

  • 2.5.0

0.chr.force_encoding(BSON::二进制文件).冻结
SNAPPY =

snappy 压缩器标识符。

由于:

  • 2.5.0

' snappy '.冻结
SNAPPY_BYTE =

该字节表示消息已使用snappy压缩。

由于:

  • 2.5.0

1.chr.force_encoding(BSON::二进制文件).冻结
ZLIB_BYTE =

该字节表示消息已使用zlib压缩。

由于:

  • 2.5.0

2.chr.force_encoding(BSON::二进制文件).冻结
zlib =

zlib压缩程序标识符。

由于:

  • 2.5.0

'zlib'.冻结
zstd =

zstd 压缩器标识符。

由于:

  • 2.5.0

'zstd'.冻结
ZSTD_BYTE =

该字节表示消息已使用 zstd 压缩。

由于:

  • 2.5.0

3.chr.force_encoding(BSON::二进制文件).冻结
COMPRESSOR_ID_MAP =

字节映射的压缩程序标识符。

由于:

  • 2.5.0

{
  snappy => SNAPPY_BYTE,
  zstd => ZSTD_BYTE,
  zlib => ZLIB_BYTE
}.冻结

Message继承的常量

Message::BATCH_SIZEMessage::COLLECTIONMessage::LIMITMessage::MAX_MESSAGE_SIZEMessage::ORDEREDMessage::Q

实例属性摘要

Message继承的属性

#request_id

实例方法摘要折叠

Message继承的方法

#==deserialize#hash#maybe_add_server_api#maybe_compress#maybe_decrypt#maybe_encrypt#number_returned#serialize#set_request_id

ID中包含的方法

包含

构造函数详情

#initialize (message,Compressor,zlib_compression_level = nil) ⇒ 已压缩

创建新的 OP_COMPRESSED 消息。

例子:

创建 OP_COMPRESSED 消息。

Compressed.new(original_message, 'zlib')

参数:

  • message (Mongo::Protocol::Message)

    原始消息。

  • 压缩器 ( string , Symbol )

    要使用的压缩算法。

  • zlib_compression_level 整数 (默认为: nil

    要使用的 zlib 压缩级别。 - 1和 nil 表示默认值。

由于:

  • 2.5.0



79
80
81
82
83
84
85
86
87
# File 'build/Ruby-driver-v 2.19 /lib/mongo/protocol/compressed.rb', 第79行

def 初始化(message, 压缩器, zlib_compression_level = nil)
  @original_message = message
  @original_op_code = message.op_code
  @uncompressed_size = 0
  @compressor_id = COMPRESSOR_ID_MAP[压缩器]
  @compressed_message = ' '
  @zlib_compression_level = zlib_compression_level if zlib_compression_level && zlib_compression_level != -1
  @request_id = message.request_id
end

实例方法详细信息

#也许_inflateProtocol::Message

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

膨胀 OP_COMRESSED 消息并返回原始消息。

返回:

由于:

  • 2.5.0



95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'build/Ruby-driver-v 2.19 /lib/mongo/protocol/compressed.rb', 第95行

def 也许_inflate
  message = 注册表.获取(@original_op_code).分配
  buf = 解压缩(@compressed_message)

  message.发送(:fields). do |字段|
    if 字段[:multi]
      message.deserialize_array(message, buf, 字段)
    else
      message.deserialize_field(message, buf, 字段)
    end
  end
  if message.is_a?(消息)
    message.fix_after_deserialization
  end
  message
end

#可回复?true , false

该消息是否期望从数据库得到回复。

例子:

该消息是否需要回复?

message.replyable?

返回:

  • ( true , false )

    如果消息需要回复。

由于:

  • 2.5.0



120
121
122
# File 'build/Ruby-driver-v 2.19 /lib/mongo/protocol/compressed.rb', 第120行

def 可回复?
  @original_message.可回复?
end