模块:Mongo::Protocol::Serializers::Sections::PayloadOne Private

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

Overview

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

OP_MSG 的有效负载1类型部分的MongoDB传输协议序列化策略。

由于:

  • 2.5.0

常量摘要折叠

TYPE =

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

此有效负载类型的字节标识符。

由于:

  • 2.5.0

0 x 1
TYPE_BYTE =

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

与此有效负载类型对应的字节。

由于:

  • 2.5.0

类型.chr.force_encoding(BSON::二进制文件).冻结

类方法摘要折叠

类方法详细信息

deserialize (buffer) ⇒ Array<BSON::Document>

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

从 IO流中反序列化 OP_MSG 有效负载类型为1的部分。

参数:

  • 缓冲 ( BSON::ByteBuffer )

    包含这些部分的缓冲区。

返回:

  • ( Array<BSON::Document> )

    反序列化部分。

引发:

  • ( NotImplementedError )

由于:

  • 2.5.0



337
338
339
340
341
342
343
344
345
346
347
348
349
# File 'build/Ruby-driver-v 2.19 /lib/mongo/protocol/serializers.rb', 第337行

def self.反序列化(缓冲)
  提高 NotImplementedError

  start_size = 缓冲.长度
  section_size = 缓冲.get_int32 # 获取大小
  end_size = start_size - section_size
  缓冲.get_cstring # 获取标识符
  文档 = []
  直到 缓冲.长度 == end_size
    文档 << BSON::文档.from_bson(缓冲)
  end
  文档
end

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

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

序列化 OP_MSG 的一部分,有效负载类型为1 。

参数:

  • 缓冲 ( BSON::ByteBuffer )

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

  • ( BSON::Document , Hash )

    要序列化的对象。

  • max_bson_size (Fixnum) (默认为: nil

    该部分中文档的最大BSON大小。

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

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

返回:

  • ( BSON::ByteBuffer )

    具有序列化值的缓冲区。

由于:

  • 2.5.0



319
320
321
322
323
324
325
326
327
328
# File 'build/Ruby-driver-v 2.19 /lib/mongo/protocol/serializers.rb', 第319行

def self.序列化(缓冲, , max_bson_size = nil, validating_keys = nil)
  缓冲.put_byte(TYPE_BYTE)
  开始 = 缓冲.长度
  缓冲.put_int32(0) # 保持大小
  缓冲.put_cstring([:identifier])
  [:sequence]. do |文档|
    文档.序列化(缓冲, 文档, max_bson_size)
  end
  缓冲.replace_int 32(开始, 缓冲.长度 - 开始)
end