123456789_123456789_123456789_123456789_123456789_

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

Do not use. This class is for internal use only.
Relationships & Source Files
Inherits: Object
Defined in: lib/mongo/protocol/bit_vector.rb

Overview

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

Defines serialization strategy upon initialization.

Class Method Summary

Instance Method Summary

Instance Method Details

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

Deserializes vector by decoding the symbol according to its mask

Parameters:

  • buffer (String)

    Buffer containing the vector to be deserialized.

  • options (Hash) (defaults to: {})

    This method does not currently accept any options.

Returns:

  • (Array<Symbol>)

    Flags contained in the vector

[ GitHub ]

  
# 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

Serializes vector by encoding each symbol according to its mask

Parameters:

  • buffer (String)

    Buffer to receive the serialized vector

  • value (Array<Symbol>)

    Array of flags to encode

  • validating_keys (true, false) (defaults to: nil)

    Whether keys should be validated when serializing. This option is deprecated and will not be used. It will removed in version 3.0.

Returns:

  • (String)

    Buffer that received the serialized vector

[ GitHub ]

  
# 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