Module: Mongo::Protocol::Serializers::Sections Private
- Defined in:
- lib/mongo/protocol/serializers.rb
Overview
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
MongoDB wire protocol serialization strategy for a Section of OP_MSG.
Serializes and de-serializes a list of Sections.
Defined Under Namespace
Modules: PayloadOne, PayloadZero
Class Method Summary collapse
-
.deserialize(buffer, options = {}) ⇒ Array<BSON::Document>
private
Deserializes a section of an OP_MSG from the IO stream.
-
.serialize(buffer, value, max_bson_size = nil, validating_keys = nil) ⇒ BSON::ByteBuffer
private
Serializes the sections of an OP_MSG, payload type 0 or 1.
-
.size_limited? ⇒ true
private
Whether there can be a size limit on this type after serialization.
Class Method Details
.deserialize(buffer, options = {}) ⇒ Array<BSON::Document>
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 a section of an OP_MSG from the IO stream.
219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 |
# File 'lib/mongo/protocol/serializers.rb', line 219 def self.deserialize(buffer, = {}) end_length = (@flag_bits & Msg::FLAGS.index(:checksum_present)) == 1 ? 32 : 0 sections = [] until buffer.length == end_length case byte = buffer.get_byte when PayloadZero::TYPE_BYTE sections << PayloadZero.deserialize(buffer, ) when PayloadOne::TYPE_BYTE sections += PayloadOne.deserialize(buffer, ) else raise Error::UnknownPayloadType.new(byte) end end sections end |
.serialize(buffer, value, max_bson_size = nil, validating_keys = nil) ⇒ BSON::ByteBuffer
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 the sections of an OP_MSG, payload type 0 or 1.
192 193 194 195 196 197 198 199 200 201 202 203 204 205 |
# File 'lib/mongo/protocol/serializers.rb', line 192 def self.serialize(buffer, value, max_bson_size = nil, validating_keys = nil) value.each do |section| case section[:type] when PayloadZero::TYPE PayloadZero.serialize(buffer, section[:payload], max_bson_size) when nil PayloadZero.serialize(buffer, section[:payload], max_bson_size) when PayloadOne::TYPE PayloadOne.serialize(buffer, section[:payload], max_bson_size) else raise Error::UnknownPayloadType.new(section[:type]) end end end |
.size_limited? ⇒ true
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.
Whether there can be a size limit on this type after serialization.
240 241 242 |
# File 'lib/mongo/protocol/serializers.rb', line 240 def self.size_limited? true end |