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

继承:
对象
  • 对象
显示全部
定义于:
lib/ Mongo/ 协议/bit_vector.rb

Overview

此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。

用于为 MongoDB 传输协议消息定义位向量的类。

在初始化时定义序列化策略。

实例方法摘要折叠

构造函数详情

#initialize (layout) ⇒ BitVector

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

使用布局初始化 BitVector

参数:

  • 布局 ( Array< Symbol > ) —

    位向量中的字段大量



29
30
31
32
33
34
# File 'lib/ Mongo/ 协议/bit_vector.rb', line 29

def 初始化(布局)
  @masks = {}
  布局.each_with_index do |字段, 索引(index)|
    @masks[字段] = 2**索引(index) if 字段
  end
end

实例方法详细信息

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

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

通过根据掩码对符号进行解码来反序列化向量

参数:

  • 缓冲 ( string ) —

    包含要反序列化向量的缓冲区。

  • 选项 (哈希) —

    此方法当前不接受任何选项。

返回:

  • ( Array< Symbol > ) —

    向量中包含的标志



56
57
58
59
60
61
62
63
# File 'lib/ Mongo/ 协议/bit_vector.rb', line 56

def 反序列化(缓冲, _options = {})
  向量 = 缓冲.get_int32
  flags = []
  @masks.每 do |flag, 掩码|
    flags << flag if 掩码 和 向量 != 0
  end
  flags
end

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

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

根据掩码对每个符号进行编码,从而对向量进行序列化

参数:

  • 缓冲 ( string ) —

    用于接收序列化向量的缓冲区

  • 值 ( Array< Symbol > ) —

    要编码的标志数组

  • validating_keys ( true , false ) —

    序列化时是否应验证密钥。 此选项已弃用,不会使用。 它将在3.0版本中删除。

返回:

  • ( string ) —

    接收序列化向量的缓冲区



44
45
46
47
48
# File 'lib/ Mongo/ 协议/bit_vector.rb', line 44

def 序列化(缓冲, 值, _validating_keys = nil)
  位 = 0
  值.每 { |flag| 位 |= @masks[flag] || 0 }
  缓冲.put_int32(位)
end