Class: Mongo::Protocol::Serializers::BitVector Private

상속:
객체
  • 객체
모두 표시
다음에 정의됨:
lib/ Mongo/ 프로토콜/bit_vector.rb

개요

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

MongoDB 유선 프로토콜 메시지에 대한 비트벡터를 정의하는 데 사용되는 클래스입니다.

초기화 시 직렬화 전략을 정의합니다.

인스턴스 메서드 요약 접기

생성자 세부 정보

#initialize(layout) ⇒ BitVector

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

레이아웃을 사용하여 BitVector를 초기화합니다.

매개변수:

  • 레이아웃 (Array<기호>)

    비트 벡터의 필드 배열



29
30
31
32
33
34
# 파일 'lib/ Mongo/ 프로토콜/bit_vector.rb', 줄 29

def 초기화(레이아웃)
  @masks = {}
  레이아웃.each_with_index do |필드, index|
    @masks[필드] = 2**index 만약 필드
  end
end

인스턴스 메서드 세부 정보

#deserialize(buffer, _options = {}) ⇒ 배열<기호>

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

마스크에 따라 기호를 디코딩하여 벡터를 역직렬화합니다.

매개변수:

  • buffer (string)

    역직렬화할 벡터를 포함하는 버퍼입니다.

  • 옵션 (해시)

    이 메서드는 현재 어떤 옵션도 허용하지 않습니다.

반환합니다:

  • (Array<기호>)

    벡터에 포함된 플래그



56
57
58
59
60
61
62
63
# 파일 'lib/ Mongo/ 프로토콜/bit_vector.rb', 줄 56

def 역직렬화(buffer, _options = {})
  벡터 = buffer.get_int32
  flags = []
  @masks. do |flag, 마스크|
    flags << flag 만약 마스크 & 벡터 != 0
  end
  flags
end

#serialize(buffer, value, _validating_keys = nil) ⇒ String

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

마스크에 따라 각 기호를 인코딩하여 벡터를 직렬화합니다.

매개변수:

  • buffer (string)

    직렬화된 벡터를 수신할 버퍼입니다.

  • value (Array<기호>)

    인코딩할 플래그 배열

  • validation_keys (true, false)

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

반환합니다:

  • (string)

    직렬화된 벡터를 수신한 버퍼입니다.



44
45
46
47
48
# 파일 'lib/ Mongo/ 프로토콜/bit_vector.rb', 줄 44

def 직렬화(buffer, value, _validating_keys = nil)
  비트 = 0
  value. { |flag| 비트 |= @masks[flag] || 0 }
  buffer.put_int32(비트)
end