Module: Mongo::Protocol::Serializers::Sections Private

定义于:
build/Ruby-driver-v 2.19 /lib/mongo/protocol/serializers.rb

Overview

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

针对 OP_MSG 部分的MongoDB传输协议序列化策略。

对节列表进行序列化和反序列化。

由于:

  • 2.5.0

在命名空间下定义

模块: PayloadOne , PayloadZero

类方法摘要折叠

类方法详细信息

deserialize (buffer, options = {}) ⇒ Array<BSON::Document>

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

从 IO流中反序列化 OP_MSG 的一部分。

参数:

  • 缓冲 ( BSON::ByteBuffer )

    包含这些部分的缓冲区。

  • 选项 哈希 (默认为: {}

选项哈希 ( options ):

  • :deserialize_as_bson 布尔值

    是否尽可能使用BSON types而不是原生Ruby类型来执行节反序列化。

返回:

  • ( Array<BSON::Document> )

    反序列化部分。

由于:

  • 2.5.0



219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# File 'build/Ruby-driver-v 2.19 /lib/mongo/protocol/serializers.rb', 第219行

def self.反序列化(缓冲, 选项 = {})
  end_length = (@flag_bits  消息::标记.索引(index)(:checksum_present)) == 1 ? 32 : 0
  部分 = []
  直到 缓冲.长度 == end_length
    案例 byte = 缓冲.get_byte
    when PayloadZero::TYPE_BYTE
      部分 << PayloadZero.反序列化(缓冲, 选项)
    when PayloadOne::TYPE_BYTE
      部分 += PayloadOne.反序列化(缓冲, 选项)
    else
      提高 错误::UnknownPayloadType.new(byte)
    end
  end
  部分
end

序列化(buffer, value, max_bson_size = nil, validating_keys = nil) ⇒ BSON::ByteBuffer

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

对 OP_MSG、有效负载类型0或1的各部分进行序列化。

参数:

  • 缓冲 ( BSON::ByteBuffer )

    用于接收序列化部分的缓冲区。

  • ( Array<Hash, BSON::Document> )

    要序列化的部分。

  • max_bson_size (Fixnum) (默认为: nil

    各节中文档的最大BSON大小。

  • validating_keys ( true , false ) (默认为: nil

    是否验证文档密钥。 此选项已弃用,不会使用。 它将在3.0版本中删除。

返回:

  • ( BSON::ByteBuffer )

    具有序列化值的缓冲区。

由于:

  • 2.5.0



192
193
194
195
196
197
198
199
200
201
202
203
204
205
# File 'build/Ruby-driver-v 2.19 /lib/mongo/protocol/serializers.rb', 第192行

def self.序列化(缓冲, , max_bson_size = nil, validating_keys = nil)
  . do |部分|
    案例 部分[:type]
    when PayloadZero::类型
      PayloadZero.序列化(缓冲, 部分[:payload], max_bson_size)
    when nil
      PayloadZero.序列化(缓冲, 部分[:payload], max_bson_size)
    when PayloadOne::类型
      PayloadOne.序列化(缓冲, 部分[:payload], max_bson_size)
    else
      提高 错误::UnknownPayloadType.new(部分[:type])
    end
  end
end

size_limited?true

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

序列化后是否对此类型有大小限制。

返回:

  • ( true )

    文档在序列化时可能会受到大小限制。

由于:

  • 2.5.0



240
241
242
# File 'build/Ruby-driver-v 2.19 /lib/mongo/protocol/serializers.rb', 第240行

def self.size_limited?
  true
end