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

Definido em:
lib/mongo/protocol/serializers.rb

Visão geral

Este módulo faz parte de uma API privada. Você deve evitar usar este módulo, se possível, pois ele pode ser removido ou alterado no futuro.

Estratégia de serialização de protocolo de conexão do MongoDB para uma seção de OP_MSG.

Serializa e desserializa uma lista de seções.

Desde:

  • 2.5.0

Definido sob namespace

Módulos: payloadOne, payloadZero

Recolhimento do Resumo do método de classe

Detalhes do método de classe

.desserializar(buffer, opções = {}) ➤ Array<BSON::Document>

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Deserializa uma seção de um OP_MSG do fluxo IO.

Parâmetros:

  • buffer (BSON::ByteBuffer)

    Buffer contendo as seções.

  • opções (Hash) (padrão para: {})

Hash de opções (opções):

  • :deserialize_as_bson (Booleano)

    Se deve executar a desserialização de seção usando BSON types em vez de tipos Ruby nativos, sempre que possível.

Retorna:

  • (Array<BSON::Document>)

    Seções desserializadas.

Desde:

  • 2.5.0



219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# Arquivo 'lib/mongo/protocol/serializers.rb', linha 219

def auto.desserializar(buffer, opções = {})
  end_long = (@marca_bits & Msg::Bandeiras.index(:checksum_present)) == 1 ? 32 : 0
  Seções = []
  até que buffer.Tamanho == end_long
    caso byte = buffer.get_byte
    quando PlayloadZero::TYPE_BYTE
      Seções << PlayloadZero.desserializar(buffer, opções)
    quando Carga útil uma::TYPE_BYTE
      Seções += Carga útil uma.desserializar(buffer, opções)
    mais
      aumentar Erro::UnknownPayloadType.Novo(byte)
    end
  end
  Seções
end

.serializar(buffer, valor, max_bson_size = nil, validate_keys = nil) ➤ BSON::ByteBuffer

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Serializa as seções de um OP_MSG, tipo de carga útil 0 ou 1.

Parâmetros:

  • buffer (BSON::ByteBuffer)

    Buffer para receber as seções serializadas.

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

    As seções a serem serializadas.

  • max_bson_size (Fixnum) (padrão para: nil)

    O tamanho máximo BSON dos documentos nas seções.

  • validate_keys (verdadeiro, falso) (padrão para: nil)

    Se deve validar as chaves do documento . Esta opção é preterida e não será utilizada. Ele será removido na versão 3.0.

Retorna:

  • (BSON::ByteBuffer)

    Buffer com valor serializado.

Desde:

  • 2.5.0



192
193
194
195
196
197
198
199
200
201
202
203
204
205
# Arquivo 'lib/mongo/protocol/serializers.rb', linha 192

def auto.serializar(buffer, valor, max_bson_size = nada, validate_keys = nada)
  valor.cada fazer |Seção|
    caso Seção[:type]
    quando PlayloadZero::Tipo
      PlayloadZero.serializar(buffer, Seção[: payload], max_bson_size)
    quando nada
      PlayloadZero.serializar(buffer, Seção[: payload], max_bson_size)
    quando Carga útil uma::Tipo
      Carga útil uma.serializar(buffer, Seção[: payload], max_bson_size)
    mais
      aumentar Erro::UnknownPayloadType.Novo(Seção[:type])
    end
  end
end

.size_limited?verdadeiro

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Se pode haver um limite de tamanho para esse tipo após a serialização.

Retorna:

  • (verdadeiro)

    Os documentos podem ter tamanho limitado após a serialização.

Desde:

  • 2.5.0



240
241
242
# Arquivo 'lib/mongo/protocol/serializers.rb', linha 240

def auto.size_limited?
  true
end