Class: Mongo::Protocol::Compressed
개요
MongoDB 유선 프로토콜 압축 메시지입니다.
다른 옵코드를 압축하는 양방향 메시지입니다. https://github.com/mongodb/specations/lob/master/source/compression/OP_COMPRESSED.md를 참조하세요.
상수 요약 접기
- noop =
noop 압축기 식별자입니다.
'눕'- NOOP_BYTE =
메시지가 압축되지 않았음을 나타내는 바이트(테스트 모드)입니다.
0.chr.force_encoding(BSON::바이너리).동결
- SNAPPY =
스내피 압축기 식별자입니다.
'스내피'- SNAPPY_BYTE =
메시지가 스내피 로 압축되었음을 나타내는 바이트입니다.
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_BYTE, zstd => ZSTD_BYTE, zlib => ZLIB_BYTE }.동결
메시지에서 상속된 상수
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
인스턴스 속성 요약
메시지에서 상속된 속성
인스턴스 메서드 요약 접기
-
#initialize(message, 압축기, zlib_compression_level = nil) ⇒ 압축
생성자
새 OP_COMPRESSED 메시지를 생성합니다.
-
#maybe_inflate ⇒ Protocol::Message
비공개
OP_COMRESSED 메시지를 확장하고 원본 메시지를 반환합니다.
-
#회신 가능? ⇒ 참, 거짓
메시지가 데이터베이스 로부터 응답을 기대하는지 여부입니다.
- #serialize_fields(buffer, max_bson_size) ⇒ 객체 비공개
메시지에서 상속된 메서드
#==, deserialize, #deserialize_array, #deserialize_필드, deserialize_header, 필드, #필드, 필드, #hash, #maybe_add_server_api, #maybe_compress, #maybe_decrypt, #maybe_encrypt, #number_returned, #serialize, #set_re
ID에 포함된 메서드
생성자 세부 정보
#initialize(message, 압축기, zlib_compression_level = nil) ⇒ 압축
새 OP_COMPRESSED 메시지를 생성합니다.
76 77 78 79 80 81 82 83 84 85 86 87 |
# 파일 'lib/ Mongo/ 프로토콜/compressed.rb', 줄 76 def 초기화(, 압축기, zlib_compression_level = nil) super() @original_message = @original_op_code = .op_code @uncompressed_size = 0 @compressor_id = COMPRESSOR_ID_MAP[압축기] @compressed_message = '' @zlib_compression_level = zlib_compression_level 만약 zlib_compression_level && zlib_compression_level != -1 # 압축된 메시지는 래핑된 메시지의 요청 ID를 재사용해야 합니다. # 수퍼클래스 초기화 함수에 할당된 새 ID 재정의. @request_id = .request_id end |
인스턴스 메서드 세부 정보
#may_inflate ⇒ Protocol::Message
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
OP_COMRESSED 메시지를 확장하고 원본 메시지를 반환합니다.
95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# 파일 'lib/ Mongo/ 프로토콜/compressed.rb', 줄 95 def may_inflate = 레지스트리.get(@original_op_code).할당하다 buf = 압축 해제(@compressed_message) .필드.각 do |필드| 만약 필드[:multi] .deserialize_array(buf, 필드) other .deserialize_field(buf, 필드) end end .fix_after_deserialization 만약 .is_a?(메시지) end |
#회신 가능? ⇒ true, false
메시지가 데이터베이스 로부터 응답을 기대하는지 여부입니다.
118 119 120 |
# 파일 'lib/ Mongo/ 프로토콜/compressed.rb', 줄 118 def 회신 가능? @original_message.회신 가능? end |
#serialize_fields(buffer, max_bson_size) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
123 124 125 126 127 128 129 |
# 파일 'lib/ Mongo/ 프로토콜/compressed.rb', 줄 123 def serialize_fields(buffer, max_bson_size) buf = BSON::ByteBuffer.신규 @original_message.serialize_fields(buf, max_bson_size) @uncompressed_size = buf.분량 @compressed_message = compress(buf) super end |