BitVector — Documentation by YARD 0.9.37 (original) (raw)
Class: Mongo::Protocol::Serializers::BitVectorPrivate
Inherits:
Object
- Object
- Mongo::Protocol::Serializers::BitVector show all
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
- #deserialize(buffer, options = {}) ⇒ Array private
Deserializes vector by decoding the symbol according to its mask. - #initialize(layout) ⇒ BitVector constructor private
Initializes a BitVector with a layout. - #serialize(buffer, value, validating_keys = nil) ⇒ String private
Serializes vector by encoding each symbol according to its mask.
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 | | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | ------------------------------------ |