BitVector — Documentation by YARD 0.9.37 (original) (raw)

Class: Mongo::Protocol::Serializers::BitVectorPrivate

Inherits:

Object

Defined in:

lib/mongo/protocol/bit_vector.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Class used to define a bitvector for a MongoDB wire protocol message.

Defines serialization strategy upon initialization.

Instance Method Summarycollapse

Constructor Details

#initialize(layout) ⇒ BitVector

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Initializes a BitVector with a layout

| 31 32 33 34 35 36 | # File 'lib/mongo/protocol/bit_vector.rb', line 31 def initialize(layout) @masks = {} layout.each_with_index do |field, index| @masks[field] = 2**index if field end end | | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

Instance Method Details

#deserialize(buffer, options = {}) ⇒ Array<Symbol>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Deserializes vector by decoding the symbol according to its mask

| 58 59 60 61 62 63 64 65 | # File 'lib/mongo/protocol/bit_vector.rb', line 58 def deserialize(buffer, options = {}) vector = buffer.get_int32 flags = [] @masks.each do |flag, mask| flags << flag if mask & vector != 0 end flags end | | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Serializes vector by encoding each symbol according to its mask

| 46 47 48 49 50 | # File 'lib/mongo/protocol/bit_vector.rb', line 46 def serialize(buffer, value, validating_keys = nil) bits = 0 value.each { |flag| bits | = (@masks[flag] | | 0) } buffer.put_int32(bits) end | | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | ------------------------------------ |