Module: Mongo::Protocol::Serializers::Sections Private

다음에 정의됨:
build/ruby-driver-v2.19/lib/mongo/protocol/serializers.rb

개요

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

OP_MSG 섹션에 대한 MongoDB 유선 프로토콜 직렬화 전략입니다.

섹션 목록을 직렬화 및 역직렬화합니다.

이후:

  • 2.5.0

네임스페이스 아래에 정의됨

모듈: PayloadOne, PayloadZero

클래스 메서드 요약 접기

클래스 메서드 세부 정보

.역직렬화(버퍼, 옵션 = {}) ⇒ Array<BSON::Document>

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

IO 스트림 에서 OP_MSG의 섹션을 역직렬화합니다.

매개변수:

  • buffer (BSON::ByteBuffer)

    섹션이 포함된 버퍼입니다.

  • 옵션 (해시) (기본값: {})

옵션 해시(options):

  • :deserialize_as_bson (부울)

    가능한 BSON types Ruby 경우 네이티브 유형 대신 을 사용하여 섹션 역직렬화를 수행할지 여부입니다.

반환합니다:

  • (Array<BSON::Document>)

    역직렬화된 섹션.

이후:

  • 2.5.0



219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# 파일 'build/ruby-driver-v2.19/lib/mongo/protocol/serializers.rb', 줄 219

def self.역직렬화(buffer, 옵션 = {})
  end_Length = (@flag_bits & 메시지::플래그.index(:checksum_present)) == 1 ? 32 : 0
  섹션 = []
  까지 buffer.분량 == end_Length
    case byte = buffer.get_byte
    when Payload0::TYPE_BYTE
      섹션 << Payload0.역직렬화(buffer, 옵션)
    when PayloadOne::TYPE_BYTE
      섹션 += PayloadOne.역직렬화(buffer, 옵션)
    other
      올리다 오류::UnknownPayloadType.신규(byte)
    end
  end
  섹션
end

.직렬화(버퍼, 값, max_bson_size = nil, validation_keys = nil) ⇒ BSON::ByteBuffer

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

OP_MSG, 페이로드 유형 0 또는 1 의 섹션을 직렬화합니다.

매개변수:

  • buffer (BSON::ByteBuffer)

    직렬화된 섹션을 수신하는 버퍼입니다.

  • value (Array<Hash, BSON::Document>)

    직렬화할 섹션입니다.

  • max_bson_size (Fixnum) (기본값: nil)

    섹션에 있는 문서의 최대 BSON 크기입니다.

  • validation_keys (true, false) (기본값: nil)

    문서 키의 유효성을 검사할지 여부입니다. 이 옵션은 더 이상 사용되지 않으며, 버전 3.0 에서 제거됩니다.

반환합니다:

  • (BSON::ByteBuffer)

    직렬화된 값이 있는 버퍼입니다.

이후:

  • 2.5.0



192
193
194
195
196
197
198
199
200
201
202
203
204
205
# 파일 'build/ruby-driver-v2.19/lib/mongo/protocol/serializers.rb', 줄 192

def self.직렬화(buffer, value, max_bson_size = nil, validation_keys = nil)
  value. do |섹션|
    case 섹션[:type]
    when Payload0::유형
      Payload0.직렬화(buffer, 섹션[:Payload], max_bson_size)
    when nil
      Payload0.직렬화(buffer, 섹션[:Payload], max_bson_size)
    when PayloadOne::유형
      PayloadOne.직렬화(buffer, 섹션[:Payload], max_bson_size)
    other
      올리다 오류::UnknownPayloadType.신규(섹션[:type])
    end
  end
end

.size_limited?true

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

직렬화 후 이 유형에 크기 제한이 있을 수 있는지 여부입니다.

반환합니다:

  • (true)

    직렬화 시 문서의 크기가 제한될 수 있습니다.

이후:

  • 2.5.0



240
241
242
# 파일 'build/ruby-driver-v2.19/lib/mongo/protocol/serializers.rb', 줄 240

def self.size_limited?
  true
end