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

상속:
객체
  • 객체
모두 표시
다음에 정의됨:
빌드/ Ruby-driver-v2.19/lib/mongo/ 프로토콜/bit_vector.rb

개요

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

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

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

인스턴스 메서드 요약 접기

생성자 세부 정보

#initialize(layout) ⇒ BitVector

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

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

매개변수:

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

    비트 벡터의 필드 배열



31
32
33
34
35
36
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 프로토콜/bit_vector.rb', 줄 31

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

인스턴스 메서드 세부 정보

#역직렬화(버퍼, 옵션 = {}) ⇒ Array<기호>

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

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

매개변수:

  • buffer (string)

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

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

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

반환합니다:

  • (Array<기호>)

    벡터에 포함된 플래그



58
59
60
61
62
63
64
65
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 프로토콜/bit_vector.rb', 줄 58

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

#직렬화(버퍼, 값, validating_keys = nil) ⇒ string

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

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

매개변수:

  • buffer (string)

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

  • value (Array<기호>)

    인코딩할 플래그 배열

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

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

반환합니다:

  • (string)

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



46
47
48
49
50
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 프로토콜/bit_vector.rb', 줄 46

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