Class: Mongo::Protocol::Compressed

상속:
메시지
  • 객체
모두 표시
다음에 정의됨:
build/ruby-driver-v2.19/lib/mongo/protocol/compressed.rb

개요

MongoDB 유선 프로토콜 압축 메시지입니다.

다른 옵코드를 압축하는 양방향 메시지입니다. github.com/mongodb/specations/lob/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 =

스내피 압축기 식별자입니다.

이후:

  • 2.5.0

'snappy'.동결
SNAPPY_BYTE =

메시지가 스내피 로 압축되었음을 나타내는 바이트입니다.

이후:

  • 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_BYTE,
  zstd => ZSTD_BYTE,
  zlib => ZLIB_BYTE
}.동결

메시지에서 상속된 상수

Message::BATCH_SIZE, Message::COLLECTION, Message::LIMIT, Message::MAX_MESSAGE_SIZE, Message::ORDERED, Message::Q

인스턴스 속성 요약

메시지에서 상속된 속성

#request_id

인스턴스 메서드 요약 접기

메시지에서 상속된 메서드

#==, 역직렬화, #hash, #maybe_add_server_api, #maybe_compress, #maybe_decrypt, #maybe_encrypt, #number_returned, #serialize, #set_request_id

ID에 포함된 메서드

포함

생성자 세부 정보

#initialize(message, 압축기, zlib_compression_level = nil) ⇒ 압축

새 OP_COMPRESSED 메시지를 생성합니다.

예시:

OP_COMPRESSED 메시지를 생성합니다.

Compressed.new(original_message, 'zlib')

매개변수:

  • 메시지 (Mongo::Protocol::Message)

    원본 메시지입니다.

  • 압축기 (string, 기호)

    사용할 압축 알고리즘입니다.

  • zlib_compression_level (정수) (기본값: nil)

    사용할 zlib 압축 수준입니다. -1 및 nil은 기본값을 의미합니다.

이후:

  • 2.5.0



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

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 만약 zlib_compression_level && zlib_compression_level != -1
  @request_id = 메시지.request_id
end

인스턴스 메서드 세부 정보

#may_inflateProtocol::Message

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

OP_COMRESSED 메시지를 확장하고 원본 메시지를 반환합니다.

반환합니다:

이후:

  • 2.5.0



95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# 파일 'build/ruby-driver-v2.19/lib/mongo/protocol/compressed.rb', 줄 95

def may_inflate
  메시지 = 레지스트리.get(@original_op_code).할당하다
  buf = 압축 해제(@compressed_message)

  메시지.send(:fields). do |필드|
    만약 필드[:multi]
      메시지.deserialize_array(메시지, buf, 필드)
    other
      메시지.deserialize_field(메시지, buf, 필드)
    end
  end
  만약 메시지.is_a?(메시지)
    메시지.fix_after_deserialization
  end
  메시지
end

#회신 가능?true, false

메시지가 데이터베이스 로부터 응답을 기대하는지 여부입니다.

예시:

메시지에 회신이 필요합니까?

message.replyable?

반환합니다:

  • (true, false)

    메시지에 회신이 필요한 경우.

이후:

  • 2.5.0



120
121
122
# 파일 'build/ruby-driver-v2.19/lib/mongo/protocol/compressed.rb', 줄 120

def 회신 가능?
  @original_message.회신 가능?
end