pjmsg_mcap_wrapper
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
mcap::McapWriter Class Referencefinal

Detailed Description

Provides a write interface to an MCAP file.

Definition at line 322 of file writer.hpp.

#include <writer.hpp>

Public Member Functions

 ~McapWriter ()
 
Status open (std::string_view filename, const McapWriterOptions &options)
 Open a new MCAP file for writing and write the header.
 
void open (IWritable &writer, const McapWriterOptions &options)
 Open a new MCAP file for writing and write the header.
 
void open (std::ostream &stream, const McapWriterOptions &options)
 Open a new MCAP file for writing and write the header.
 
void close ()
 Write the MCAP footer, flush pending writes to the output stream, and reset internal state. The writer may be re-used with another call to open afterwards.
 
void terminate ()
 Reset internal state without writing the MCAP footer or flushing pending writes. This should only be used in error cases as the output MCAP file will be truncated. The writer may be re-used with another call to open afterwards.
 
void addSchema (Schema &schema)
 Add a new schema to the MCAP file and set schema.id to a generated schema id. The schema id is used when adding channels to the file.
 
void addChannel (Channel &channel)
 Add a new channel to the MCAP file and set channel.id to a generated channel id. The channel id is used when adding messages to the file.
 
Status write (const Message &message)
 Write a message to the output stream.
 
Status write (Attachment &attachment)
 Write an attachment to the output stream.
 
Status write (const Metadata &metadata)
 Write a metadata record to the output stream.
 
const Statisticsstatistics () const
 Current MCAP file-level statistics. This is written as a Statistics record in the Summary section of the MCAP file.
 
IWritabledataSink ()
 Returns a pointer to the IWritable data destination backing this writer. Will return nullptr if the writer is not open.
 
void closeLastChunk ()
 finishes the current chunk in progress and writes it to the file, if a chunk is in progress.
 

Static Public Member Functions

static void writeMagic (IWritable &output)
 
static uint64_t write (IWritable &output, const Header &header)
 
static uint64_t write (IWritable &output, const Footer &footer, bool crcEnabled)
 
static uint64_t write (IWritable &output, const Schema &schema)
 
static uint64_t write (IWritable &output, const Channel &channel)
 
static uint64_t getRecordSize (const Message &message)
 
static uint64_t write (IWritable &output, const Message &message)
 
static uint64_t write (IWritable &output, const Attachment &attachment)
 
static uint64_t write (IWritable &output, const Metadata &metadata)
 
static uint64_t write (IWritable &output, const Chunk &chunk)
 
static uint64_t write (IWritable &output, const MessageIndex &index)
 
static uint64_t write (IWritable &output, const ChunkIndex &index)
 
static uint64_t write (IWritable &output, const AttachmentIndex &index)
 
static uint64_t write (IWritable &output, const MetadataIndex &index)
 
static uint64_t write (IWritable &output, const Statistics &stats)
 
static uint64_t write (IWritable &output, const SummaryOffset &summaryOffset)
 
static uint64_t write (IWritable &output, const DataEnd &dataEnd)
 
static uint64_t write (IWritable &output, const Record &record)
 
static void write (IWritable &output, const std::string_view str)
 
static void write (IWritable &output, const ByteArray bytes)
 
static void write (IWritable &output, OpCode value)
 
static void write (IWritable &output, uint16_t value)
 
static void write (IWritable &output, uint32_t value)
 
static void write (IWritable &output, uint64_t value)
 
static void write (IWritable &output, const std::byte *data, uint64_t size)
 
static void write (IWritable &output, const KeyValueMap &map, uint32_t size=0)
 

Private Member Functions

IWritablegetOutput ()
 
IChunkWritergetChunkWriter ()
 
void writeChunk (IWritable &output, IChunkWriter &chunkData)
 

Private Attributes

McapWriterOptions options_ {""}
 
uint64_t chunkSize_ = DefaultChunkSize
 
IWritableoutput_ = nullptr
 
std::unique_ptr< FileWriterfileOutput_
 
std::unique_ptr< StreamWriterstreamOutput_
 
std::unique_ptr< BufferWriteruncompressedChunk_
 
std::unique_ptr< LZ4Writerlz4Chunk_
 
std::unique_ptr< ZStdWriterzstdChunk_
 
std::vector< Schemaschemas_
 
std::vector< Channelchannels_
 
std::vector< AttachmentIndexattachmentIndex_
 
std::vector< MetadataIndexmetadataIndex_
 
std::vector< ChunkIndexchunkIndex_
 
Statistics statistics_ {}
 
std::unordered_set< SchemaIdwrittenSchemas_
 
std::unordered_map< ChannelId, MessageIndexcurrentMessageIndex_
 
Timestamp currentChunkStart_ = MaxTime
 
Timestamp currentChunkEnd_ = 0
 
Compression compression_ = Compression::None
 
uint64_t uncompressedSize_ = 0
 
bool opened_ = false
 

Constructor & Destructor Documentation

◆ ~McapWriter()

mcap::McapWriter::~McapWriter ( )

Definition at line 302 of file writer.inl.

Member Function Documentation

◆ addChannel()

void mcap::McapWriter::addChannel ( Channel channel)

Add a new channel to the MCAP file and set channel.id to a generated channel id. The channel id is used when adding messages to the file.

Channels are not cleared when the state is reset via close() or terminate(). If you're re-using a writer for multiple files in a row, the channels only need to be added once, before first use.

This method does not de-duplicate channels.

Parameters
channelDescription of the channel to register. The id value is ignored and will be set to a generated channel id.

Definition at line 520 of file writer.inl.

◆ addSchema()

void mcap::McapWriter::addSchema ( Schema schema)

Add a new schema to the MCAP file and set schema.id to a generated schema id. The schema id is used when adding channels to the file.

Schemas are not cleared when the state is reset via close() or terminate(). If you're re-using a writer for multiple files in a row, the schemas only need to be added once, before first use.

This method does not de-duplicate schemas.

Parameters
schemaDescription of the schema to register. The id field is ignored and will be set to a generated schema id.

Definition at line 515 of file writer.inl.

◆ close()

void mcap::McapWriter::close ( )

Write the MCAP footer, flush pending writes to the output stream, and reset internal state. The writer may be re-used with another call to open afterwards.

Definition at line 373 of file writer.inl.

◆ closeLastChunk()

void mcap::McapWriter::closeLastChunk ( )

finishes the current chunk in progress and writes it to the file, if a chunk is in progress.

Definition at line 362 of file writer.inl.

◆ dataSink()

IWritable * mcap::McapWriter::dataSink ( )

Returns a pointer to the IWritable data destination backing this writer. Will return nullptr if the writer is not open.

Definition at line 697 of file writer.inl.

◆ getChunkWriter()

IChunkWriter * mcap::McapWriter::getChunkWriter ( )
private

Definition at line 722 of file writer.inl.

◆ getOutput()

IWritable & mcap::McapWriter::getOutput ( )
private

Definition at line 703 of file writer.inl.

◆ getRecordSize()

uint64_t mcap::McapWriter::getRecordSize ( const Message message)
static

Definition at line 906 of file writer.inl.

◆ open() [1/3]

void mcap::McapWriter::open ( IWritable writer,
const McapWriterOptions options 
)

Open a new MCAP file for writing and write the header.

If the writer was already opened, this calls close() first to reset the state. A writer may be re-used after being reset via close() or terminate().

Parameters
writerAn implementation of the IWritable interface. Output bytes will be written to this object.
optionsOptions for MCAP writing. profile is required.

Definition at line 306 of file writer.inl.

◆ open() [2/3]

void mcap::McapWriter::open ( std::ostream stream,
const McapWriterOptions options 
)

Open a new MCAP file for writing and write the header.

Parameters
streamOutput stream to write to.
optionsOptions for MCAP writing. profile is required.

Definition at line 355 of file writer.inl.

◆ open() [3/3]

Status mcap::McapWriter::open ( std::string_view  filename,
const McapWriterOptions options 
)

Open a new MCAP file for writing and write the header.

If the writer was already opened, this calls close() first to reset the state. A writer may be re-used after being reset via close() or terminate().

Parameters
filenameFilename of the MCAP file to write.
optionsOptions for MCAP writing. profile is required.
Returns
A non-success status if the file could not be opened for writing.

Definition at line 342 of file writer.inl.

◆ statistics()

const Statistics & mcap::McapWriter::statistics ( ) const

Current MCAP file-level statistics. This is written as a Statistics record in the Summary section of the MCAP file.

Definition at line 693 of file writer.inl.

◆ terminate()

void mcap::McapWriter::terminate ( )

Reset internal state without writing the MCAP footer or flushing pending writes. This should only be used in error cases as the output MCAP file will be truncated. The writer may be re-used with another call to open afterwards.

Definition at line 486 of file writer.inl.

◆ write() [1/27]

Status mcap::McapWriter::write ( Attachment attachment)

Write an attachment to the output stream.

Parameters
attachmentAttachment to add. The attachment.crc will be calculated and set if configuration options allow CRC calculation.
Returns
A non-zero error code on failure.

Definition at line 617 of file writer.inl.

◆ write() [2/27]

Status mcap::McapWriter::write ( const Message message)

Write a message to the output stream.

Parameters
msgMessage to add.
Returns
A non-zero error code on failure.

Definition at line 525 of file writer.inl.

◆ write() [3/27]

Status mcap::McapWriter::write ( const Metadata metadata)

Write a metadata record to the output stream.

Parameters
metadataNamed group of key/value string pairs to add.
Returns
A non-zero error code on failure.

Definition at line 665 of file writer.inl.

◆ write() [4/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const Attachment attachment 
)
static

Definition at line 924 of file writer.inl.

◆ write() [5/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const AttachmentIndex index 
)
static

Definition at line 1021 of file writer.inl.

◆ write() [6/27]

void mcap::McapWriter::write ( IWritable output,
const ByteArray  bytes 
)
static

Definition at line 1126 of file writer.inl.

◆ write() [7/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const Channel channel 
)
static

Definition at line 887 of file writer.inl.

◆ write() [8/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const Chunk chunk 
)
static

Definition at line 953 of file writer.inl.

◆ write() [9/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const ChunkIndex index 
)
static

Definition at line 988 of file writer.inl.

◆ write() [10/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const DataEnd dataEnd 
)
static

Definition at line 1103 of file writer.inl.

◆ write() [11/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const Footer footer,
bool  crcEnabled 
)
static

Definition at line 853 of file writer.inl.

◆ write() [12/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const Header header 
)
static

Definition at line 842 of file writer.inl.

◆ write() [13/27]

void mcap::McapWriter::write ( IWritable output,
const KeyValueMap map,
uint32_t  size = 0 
)
static

Definition at line 1151 of file writer.inl.

◆ write() [14/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const Message message 
)
static

Definition at line 910 of file writer.inl.

◆ write() [15/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const MessageIndex index 
)
static

Definition at line 971 of file writer.inl.

◆ write() [16/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const Metadata metadata 
)
static

Definition at line 941 of file writer.inl.

◆ write() [17/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const MetadataIndex index 
)
static

Definition at line 1043 of file writer.inl.

◆ write() [18/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const Record record 
)
static

Definition at line 1113 of file writer.inl.

◆ write() [19/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const Schema schema 
)
static

Definition at line 871 of file writer.inl.

◆ write() [20/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const Statistics stats 
)
static

Definition at line 1057 of file writer.inl.

◆ write() [21/27]

void mcap::McapWriter::write ( IWritable output,
const std::byte data,
uint64_t  size 
)
static

Definition at line 1147 of file writer.inl.

◆ write() [22/27]

void mcap::McapWriter::write ( IWritable output,
const std::string_view  str 
)
static

Definition at line 1121 of file writer.inl.

◆ write() [23/27]

uint64_t mcap::McapWriter::write ( IWritable output,
const SummaryOffset summaryOffset 
)
static

Definition at line 1089 of file writer.inl.

◆ write() [24/27]

void mcap::McapWriter::write ( IWritable output,
OpCode  value 
)
static

Definition at line 1131 of file writer.inl.

◆ write() [25/27]

void mcap::McapWriter::write ( IWritable output,
uint16_t  value 
)
static

Definition at line 1135 of file writer.inl.

◆ write() [26/27]

void mcap::McapWriter::write ( IWritable output,
uint32_t  value 
)
static

Definition at line 1139 of file writer.inl.

◆ write() [27/27]

void mcap::McapWriter::write ( IWritable output,
uint64_t  value 
)
static

Definition at line 1143 of file writer.inl.

◆ writeChunk()

void mcap::McapWriter::writeChunk ( IWritable output,
IChunkWriter chunkData 
)
private

Definition at line 742 of file writer.inl.

◆ writeMagic()

void mcap::McapWriter::writeMagic ( IWritable output)
static

Definition at line 838 of file writer.inl.

Member Data Documentation

◆ attachmentIndex_

std::vector<AttachmentIndex> mcap::McapWriter::attachmentIndex_
private

Definition at line 493 of file writer.hpp.

◆ channels_

std::vector<Channel> mcap::McapWriter::channels_
private

Definition at line 492 of file writer.hpp.

◆ chunkIndex_

std::vector<ChunkIndex> mcap::McapWriter::chunkIndex_
private

Definition at line 495 of file writer.hpp.

◆ chunkSize_

uint64_t mcap::McapWriter::chunkSize_ = DefaultChunkSize
private

Definition at line 480 of file writer.hpp.

◆ compression_

Compression mcap::McapWriter::compression_ = Compression::None
private

Definition at line 501 of file writer.hpp.

◆ currentChunkEnd_

Timestamp mcap::McapWriter::currentChunkEnd_ = 0
private

Definition at line 500 of file writer.hpp.

◆ currentChunkStart_

Timestamp mcap::McapWriter::currentChunkStart_ = MaxTime
private

Definition at line 499 of file writer.hpp.

◆ currentMessageIndex_

std::unordered_map<ChannelId, MessageIndex> mcap::McapWriter::currentMessageIndex_
private

Definition at line 498 of file writer.hpp.

◆ fileOutput_

std::unique_ptr<FileWriter> mcap::McapWriter::fileOutput_
private

Definition at line 482 of file writer.hpp.

◆ lz4Chunk_

std::unique_ptr<LZ4Writer> mcap::McapWriter::lz4Chunk_
private

Definition at line 486 of file writer.hpp.

◆ metadataIndex_

std::vector<MetadataIndex> mcap::McapWriter::metadataIndex_
private

Definition at line 494 of file writer.hpp.

◆ opened_

bool mcap::McapWriter::opened_ = false
private

Definition at line 503 of file writer.hpp.

◆ options_

McapWriterOptions mcap::McapWriter::options_ {""}
private

Definition at line 479 of file writer.hpp.

◆ output_

IWritable* mcap::McapWriter::output_ = nullptr
private

Definition at line 481 of file writer.hpp.

◆ schemas_

std::vector<Schema> mcap::McapWriter::schemas_
private

Definition at line 491 of file writer.hpp.

◆ statistics_

Statistics mcap::McapWriter::statistics_ {}
private

Definition at line 496 of file writer.hpp.

◆ streamOutput_

std::unique_ptr<StreamWriter> mcap::McapWriter::streamOutput_
private

Definition at line 483 of file writer.hpp.

◆ uncompressedChunk_

std::unique_ptr<BufferWriter> mcap::McapWriter::uncompressedChunk_
private

Definition at line 484 of file writer.hpp.

◆ uncompressedSize_

uint64_t mcap::McapWriter::uncompressedSize_ = 0
private

Definition at line 502 of file writer.hpp.

◆ writtenSchemas_

std::unordered_set<SchemaId> mcap::McapWriter::writtenSchemas_
private

Definition at line 497 of file writer.hpp.

◆ zstdChunk_

std::unique_ptr<ZStdWriter> mcap::McapWriter::zstdChunk_
private

Definition at line 489 of file writer.hpp.


The documentation for this class was generated from the following files: