모듈: Mongo::Protocol::Serializers::Sections::PayloadOne Private

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

개요

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

OP_MSG의 페이로드 1 유형 섹션에 대한 MongoDB 유선 프로토콜 직렬화 전략입니다.

이후:

  • 2.5.0

상수 요약 접기

유형 =

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

이 페이로드 유형의 바이트 식별자입니다.

이후:

  • 2.5.0

0x1
TYPE_BYTE =

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

이 페이로드 유형에 해당하는 바이트입니다.

이후:

  • 2.5.0

유형.chr.force_encoding(BSON::바이너리).동결

클래스 메서드 요약 접기

클래스 메서드 세부 정보

.역직렬화(버퍼) ⇒ Array<BSON::Document>

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

IO 스트림 에서 OP_MSG 의 페이로드 유형 1 섹션을 역직렬화합니다.

매개변수:

  • buffer (BSON::ByteBuffer)

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

반환합니다:

  • (Array<BSON::Document>)

    역직렬화된 섹션.

다음을 발생시킵니다.

  • (NotImplementedError)

이후:

  • 2.5.0



337
338
339
340
341
342
343
344
345
346
347
348
349
# 파일 'build/ruby-driver-v2.19/lib/mongo/protocol/serializers.rb', 줄 337

def self.역직렬화(buffer)
  올리다 NotImplementedError

  start_size = buffer.분량
  섹션 크기 = buffer.get_int32 # 크기 가져오기
  end_size = start_size - 섹션 크기
  buffer.get_cstring # 식별자 가져오기
  문서 = []
  까지 buffer.분량 == end_size
    문서 << BSON::문서.from_bson(buffer)
  end
  문서
end

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

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

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

매개변수:

  • buffer (BSON::ByteBuffer)

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

  • value (BSON::Document, Hash)

    직렬화할 객체 입니다.

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

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

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

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

반환합니다:

  • (BSON::ByteBuffer)

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

이후:

  • 2.5.0



319
320
321
322
323
324
325
326
327
328
# 파일 'build/ruby-driver-v2.19/lib/mongo/protocol/serializers.rb', 줄 319

def self.직렬화(buffer, value, max_bson_size = nil, validation_keys = nil)
  buffer.put_byte(TYPE_BYTE)
  시작하기 = buffer.분량
  buffer.put_int32(0) # 크기만큼 유지
  buffer.put_cstring(value[:identifier])
  value[:sequence]. do |문서|
    문서.직렬화(buffer, 문서, max_bson_size)
  end
  buffer.replace_int32(시작하기, buffer.분량 - 시작하기)
end