Provides a write interface to an MCAP file. More...
#include <writer.hpp>
Public Member Functions | |
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. More... | |
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. More... | |
void | close () |
Write the MCAP footer, flush pending writes to the output stream, and reset internal state. More... | |
void | closeLastChunk () |
finishes the current chunk in progress and writes it to the file, if a chunk is in progress. More... | |
IWritable * | dataSink () |
Returns a pointer to the IWritable data destination backing this writer. Will return nullptr if the writer is not open. More... | |
void | open (IWritable &writer, const McapWriterOptions &options) |
Open a new MCAP file for writing and write the header. More... | |
void | open (std::ostream &stream, const McapWriterOptions &options) |
Open a new MCAP file for writing and write the header. More... | |
Status | open (std::string_view filename, const McapWriterOptions &options) |
Open a new MCAP file for writing and write the header. More... | |
const Statistics & | statistics () const |
Current MCAP file-level statistics. This is written as a Statistics record in the Summary section of the MCAP file. More... | |
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. More... | |
Status | write (Attachment &attachment) |
Write an attachment to the output stream. More... | |
Status | write (const Message &message) |
Write a message to the output stream. More... | |
Status | write (const Metadata &metadata) |
Write a metadata record to the output stream. More... | |
~McapWriter () | |
Static Public Member Functions | |
static uint64_t | write (IWritable &output, const Attachment &attachment) |
static uint64_t | write (IWritable &output, const AttachmentIndex &index) |
static void | write (IWritable &output, const ByteArray bytes) |
static uint64_t | write (IWritable &output, const Channel &channel) |
static uint64_t | write (IWritable &output, const Chunk &chunk) |
static uint64_t | write (IWritable &output, const ChunkIndex &index) |
static uint64_t | write (IWritable &output, const DataEnd &dataEnd) |
static uint64_t | write (IWritable &output, const Footer &footer, bool crcEnabled) |
static uint64_t | write (IWritable &output, const Header &header) |
static void | write (IWritable &output, const KeyValueMap &map, uint32_t size=0) |
static uint64_t | write (IWritable &output, const Message &message) |
static uint64_t | write (IWritable &output, const MessageIndex &index) |
static uint64_t | write (IWritable &output, const Metadata &metadata) |
static uint64_t | write (IWritable &output, const MetadataIndex &index) |
static uint64_t | write (IWritable &output, const Record &record) |
static uint64_t | write (IWritable &output, const Schema &schema) |
static uint64_t | write (IWritable &output, const Statistics &stats) |
static void | write (IWritable &output, const std::byte *data, uint64_t size) |
static void | write (IWritable &output, const std::string_view str) |
static uint64_t | write (IWritable &output, const SummaryOffset &summaryOffset) |
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 | writeMagic (IWritable &output) |
Private Member Functions | |
IChunkWriter * | getChunkWriter () |
IWritable & | getOutput () |
void | writeChunk (IWritable &output, IChunkWriter &chunkData) |
Private Attributes | |
std::vector< AttachmentIndex > | attachmentIndex_ |
std::vector< Channel > | channels_ |
std::vector< ChunkIndex > | chunkIndex_ |
uint64_t | chunkSize_ = DefaultChunkSize |
Compression | compression_ = Compression::None |
Timestamp | currentChunkEnd_ = 0 |
Timestamp | currentChunkStart_ = MaxTime |
std::unordered_map< ChannelId, MessageIndex > | currentMessageIndex_ |
std::unique_ptr< FileWriter > | fileOutput_ |
std::unique_ptr< LZ4Writer > | lz4Chunk_ |
std::vector< MetadataIndex > | metadataIndex_ |
bool | opened_ = false |
McapWriterOptions | options_ {""} |
IWritable * | output_ = nullptr |
std::vector< Schema > | schemas_ |
Statistics | statistics_ {} |
std::unique_ptr< StreamWriter > | streamOutput_ |
std::unique_ptr< BufferWriter > | uncompressedChunk_ |
uint64_t | uncompressedSize_ = 0 |
std::unordered_set< SchemaId > | writtenSchemas_ |
std::unique_ptr< ZStdWriter > | zstdChunk_ |
Provides a write interface to an MCAP file.
Definition at line 304 of file writer.hpp.
mcap::McapWriter::~McapWriter | ( | ) |
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.
channel | Description of the channel to register. The id value is ignored and will be set to a generated channel id. |
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.
schema | Description of the schema to register. The id field is ignored and will be set to a generated schema id. |
void mcap::McapWriter::close | ( | ) |
Write the MCAP footer, flush pending writes to the output stream, and reset internal state.
void mcap::McapWriter::closeLastChunk | ( | ) |
finishes the current chunk in progress and writes it to the file, if a chunk is in progress.
IWritable* mcap::McapWriter::dataSink | ( | ) |
Returns a pointer to the IWritable data destination backing this writer. Will return nullptr if the writer is not open.
|
private |
|
private |
void mcap::McapWriter::open | ( | IWritable & | writer, |
const McapWriterOptions & | options | ||
) |
Open a new MCAP file for writing and write the header.
writer | An implementation of the IWritable interface. Output bytes will be written to this object. |
options | Options for MCAP writing. profile is required. |
void mcap::McapWriter::open | ( | std::ostream & | stream, |
const McapWriterOptions & | options | ||
) |
Open a new MCAP file for writing and write the header.
stream | Output stream to write to. |
options | Options for MCAP writing. profile is required. |
Status mcap::McapWriter::open | ( | std::string_view | filename, |
const McapWriterOptions & | options | ||
) |
Open a new MCAP file for writing and write the header.
filename | Filename of the MCAP file to write. |
options | Options for MCAP writing. profile is required. |
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.
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.
Status mcap::McapWriter::write | ( | Attachment & | attachment | ) |
Write an attachment to the output stream.
attachment | Attachment to add. The attachment.crc will be calculated and set if configuration options allow CRC calculation. |
Write a message to the output stream.
msg | Message to add. |
Write a metadata record to the output stream.
metadata | Named group of key/value string pairs to add. |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
private |
|
static |
|
private |
Definition at line 452 of file writer.hpp.
|
private |
Definition at line 451 of file writer.hpp.
|
private |
Definition at line 454 of file writer.hpp.
|
private |
Definition at line 443 of file writer.hpp.
|
private |
Definition at line 460 of file writer.hpp.
|
private |
Definition at line 459 of file writer.hpp.
Definition at line 458 of file writer.hpp.
|
private |
Definition at line 457 of file writer.hpp.
|
private |
Definition at line 445 of file writer.hpp.
|
private |
Definition at line 448 of file writer.hpp.
|
private |
Definition at line 453 of file writer.hpp.
|
private |
Definition at line 462 of file writer.hpp.
|
private |
Definition at line 442 of file writer.hpp.
Definition at line 444 of file writer.hpp.
|
private |
Definition at line 450 of file writer.hpp.
|
private |
Definition at line 455 of file writer.hpp.
|
private |
Definition at line 446 of file writer.hpp.
|
private |
Definition at line 447 of file writer.hpp.
|
private |
Definition at line 461 of file writer.hpp.
|
private |
Definition at line 456 of file writer.hpp.
|
private |
Definition at line 449 of file writer.hpp.