void OStream::writeArchiveMetadata() { if (mRuntimeVersion >= 6) { // Max possible size. const std::size_t BufferLen = 1+5+5+1; char buffer[BufferLen] = {0}; buffer[0] = BeginArchiveMetadata; RCF::ByteBuffer byteBuffer(&buffer[0], BufferLen); std::size_t pos = 1; encodeInt(mRuntimeVersion, byteBuffer, pos); encodeInt(mArchiveVersion, byteBuffer, pos); if (mRuntimeVersion >= 10) { encodeBool(getTrackingContext().getEnabled(), byteBuffer, pos); } writeRaw(&buffer[0], static_cast<UInt32>(pos)); } }
uint32_t MamaRecordedMessageCodec::encodeField(char*& buffer, MamaMsgField& mmf) { uint32_t r = 0; mamaFieldType mft = mmf.getType(); // These modifications will be applied regardless of data type mama_fid_t mff = mmf.getFid(); memcpy(buffer, &mff, 2); buffer += 2; memcpy(buffer, &mft, 4); buffer += 4; r += 6; switch(mft) { case MAMA_FIELD_TYPE_BOOL: r += encodeBool(buffer, mmf); break; case MAMA_FIELD_TYPE_CHAR: r += encodeChar(buffer, mmf); break; case MAMA_FIELD_TYPE_I8: r += encodeI8(buffer, mmf); break; case MAMA_FIELD_TYPE_U8: r += encodeU8(buffer, mmf); break; case MAMA_FIELD_TYPE_I16: r += encodeI16(buffer, mmf); break; case MAMA_FIELD_TYPE_U16: r += encodeU16(buffer, mmf); break; case MAMA_FIELD_TYPE_I32: r += encodeI32(buffer, mmf); break; case MAMA_FIELD_TYPE_U32: r += encodeU32(buffer, mmf); break; case MAMA_FIELD_TYPE_I64: r += encodeI64(buffer, mmf); break; case MAMA_FIELD_TYPE_U64: r += encodeU64(buffer, mmf); break; case MAMA_FIELD_TYPE_F32: r += encodeF32(buffer, mmf); break; case MAMA_FIELD_TYPE_F64: r += encodeF64(buffer, mmf); break; case MAMA_FIELD_TYPE_TIME: r += encodeTime(buffer, mmf); break; case MAMA_FIELD_TYPE_PRICE: r += encodePrice(buffer, mmf); break; case MAMA_FIELD_TYPE_STRING: r += encodeString(buffer, mmf); break; case MAMA_FIELD_TYPE_VECTOR_STRING: r += encodeVectorString(buffer, mmf); break; case MAMA_FIELD_TYPE_VECTOR_I32: r += encodeVectorI32(buffer, mmf); break; case MAMA_FIELD_TYPE_VECTOR_F64: r += encodeVectorF64(buffer, mmf); break; case MAMA_FIELD_TYPE_MSG: r += encodeMsgField(buffer, mmf); break; case MAMA_FIELD_TYPE_VECTOR_MSG: r += encodeVectorMsg(buffer, mmf); break; default: break; } return r; }