Class: Mongo::Protocol::Compressed
Overview
MongoDB Wire 协议压缩消息。
这是压缩另一个操作码的双向消息。请参阅 https://github.com/mongodb/specifications/blob/master/source/compression/OP_COMPRESSED.md
常量摘要折叠
- noop =
noop 压缩器标识符。
'noop'- NOOP_BYTE =
该字节表示消息未经压缩(测试模式)。
0.chr.force_encoding(BSON::二进制文件).冻结
- SNAPPY =
snappy 压缩器标识符。
'snappy'- SNAPPY_BYTE =
该字节表示消息已使用snappy压缩。
1.chr.force_encoding(BSON::二进制文件).冻结
- ZLIB_BYTE =
该字节表示消息已使用zlib压缩。
2.chr.force_encoding(BSON::二进制文件).冻结
- zlib =
zlib压缩程序标识符。
'zlib'- zstd =
zstd 压缩器标识符。
'zstd'- ZSTD_BYTE =
该字节表示消息已使用 zstd 压缩。
3.chr.force_encoding(BSON::二进制文件).冻结
- COMPRESSOR_ID_MAP =
字节映射的压缩程序标识符。
{ snappy => SNAPPY_BYTE, zstd => ZSTD_BYTE, zlib => ZLIB_BYTE }.冻结
从Message继承的常量
Message::BATCH_SIZE 、 Message::COLLECTION 、 Message::LIMIT 、 Message::MAX_MESSAGE_SIZE 、 Message::ORDERED 、 Message::Q
序列化器中包含的常量
Serializers::HEADER_PACK、Serializers::INT32_PACK、Serializers::INT64_PACK、Serializers::NULL、Serializers::ZERO
实例属性摘要
从Message继承的属性
实例方法摘要折叠
-
#initialize (message,Compressor,zlib_compression_level = nil) ⇒ 已压缩
构造函数
创建新的 OP_COMPRESSED 消息。
-
#maybe_inflate ⇒ Protocol::Message
private
膨胀 OP_COMRESSED 消息并返回原始消息。
-
#可回复? ⇒ true, false
该消息是否期望从数据库得到回复。
- #serialize_fields (buffer, max_bson_size) ⇒ 对象 private
从Message继承的方法
#==, deserialize, #deserialize_array, #deserialize_field, deserialize_header, 字段, 字段, 字段, 哈希, #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 消息。
76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/ Mongo/ 协议/compressed.rb', line 76 def 初始化(, 压缩器, zlib_compression_level = nil) 超() @original_message = @original_op_code = .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 # 压缩消息必须重用包装消息的请求 ID, # 覆盖由超类初始化程序分配的新 ID。 @request_id = .request_id end |
实例方法详细信息
#也许_inflate ⇒ Protocol::Message
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
膨胀 OP_COMRESSED 消息并返回原始消息。
95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/ Mongo/ 协议/compressed.rb', line 95 def 也许_inflate = 注册表.获取(@original_op_code).分配 buf = 解压缩(@compressed_message) .字段.每 do |字段| if 字段[:multi] .deserialize_array(buf, 字段) else .deserialize_field(buf, 字段) end end .fix_after_deserialization if .is_a?(消息) end |
#可回复? ⇒ true , false
该消息是否期望从数据库得到回复。
118 119 120 |
# File 'lib/ Mongo/ 协议/compressed.rb', line 118 def 可回复? @original_message.可回复? end |
#serialize_fields(buffer, max_bson_size) ⇒ 对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
123 124 125 126 127 128 129 |
# File 'lib/ Mongo/ 协议/compressed.rb', line 123 def Serialize_fields(缓冲, max_bson_size) buf = BSON::ByteBuffer.new @original_message.Serialize_fields(buf, max_bson_size) @uncompressed_size = buf.长度 @compressed_message = compress(buf) 超 end |