51 #include <boost/optional.hpp> 306 template <
typename T>
307 MIRA_DEPRECATED(
"Please use int compressionLevel(=0/-1) instead of bool compress(=false/true)",
313 MIRA_THROW(XIO,
"Tape is not opened in write mode");
315 value->timestamp, value.readSerialized(),
316 (compress ? -1 : 0), meta, metaDB);
330 template <
typename T>
336 MIRA_THROW(XIO,
"Tape is not opened in write mode");
338 value->timestamp, value.readSerialized(),
339 compressionLevel, meta, metaDB);
354 template <
typename T>
355 MIRA_DEPRECATED(
"Please use int compressionLevel(=0/-1) instead of bool compress(=false/true)",
357 std::list<BinarySerializerCodecPtr>& codecs,
362 MIRA_THROW(XIO,
"Tape is not opened in write mode");
364 value->timestamp, value.readSerialized(codecs),
365 (compress ? -1 : 0), meta, metaDB);
381 template <
typename T>
383 std::list<BinarySerializerCodecPtr>& codecs,
388 MIRA_THROW(XIO,
"Tape is not opened in write mode");
390 value->timestamp, value.readSerialized(codecs),
391 compressionLevel, meta, metaDB);
406 template <
typename T>
407 MIRA_DEPRECATED(
"Please use int compressionLevel(=0/-1) instead of bool compress(=false/true)",
408 std::size_t
write(
const std::string& channelID,
const Stamped<T>& value,
417 buffer, (compress ? -1 : 0), meta, metaDB);
433 template <
typename T>
443 buffer, compressionLevel, meta, metaDB);
460 MIRA_DEPRECATED(
"Please use int compressionLevel(=0/-1) instead of bool compress(=false/true)",
461 std::size_t
write(
const std::string& channelID,
const std::string&
typeName,
468 header.
sequenceID, data, (compress ? -1 : 0), meta, metaDB);
486 std::size_t
write(
const std::string& channelID,
const std::string&
typeName,
493 header.
sequenceID, data, compressionLevel, meta, metaDB);
511 MIRA_DEPRECATED(
"Please use int compressionLevel(=0/-1) instead of bool compress(=false/true)",
512 std::size_t
write(
const std::string& channelID,
const std::string&
typeName,
513 const Time& time,
const std::string& frameID,
uint32 sequenceID,
519 data, (compress ? -1 : 0), meta, metaDB);
538 std::size_t
write(
const std::string& channelID,
const std::string&
typeName,
539 const Time& time,
const std::string& frameID,
uint32 sequenceID,
687 void readMessage(
const MessageIndex& index, std::string& frameID,
695 void readMessage(
const MessageIndex& index, std::string& frameID,
MessageBlockMap mMessageBlocks
Pairs of offset - message block.
Definition: Tape.h:733
A tape is a binary file that contains recorded/serialized data of one or multiple channels...
Definition: Tape.h:142
static const uint32 sHeaderSize
size of the header packet
Definition: Tape.h:146
void openWrite(const Path &file)
Duration timezoneOffset
Offset of the timezone on the recording machine to UTC.
Definition: Tape.h:206
Definition: BinarySerializer.h:316
std::size_t write(const std::string &channelID, const std::string &typeName, const StampedHeader &header, const Buffer< uint8 > &data, int compressionLevel=0, TypeMetaPtr meta=TypeMetaPtr(), const MetaTypeDatabase &metaDB=MetaTypeDatabase())
Write the serialized data into the tape.
Definition: Tape.h:486
uint32 nrBlocks
Nr of message data blocks.
Definition: Tape.h:209
T & value()
Returns a read-write reference to the underlying data.
Definition: Stamped.h:202
Duration timeOffset
Time offset of the message relative to start time of tape.
Definition: Tape.h:182
HeaderType
The type of the header specifying the following packet.
Definition: Tape.h:162
std::vector< MessageIndex > MessageVector
Definition: Tape.h:188
boost::mutex mMutex
Definition: Tape.h:731
uint32 getVersion() const
Get the version of the tape.
Definition: Tape.h:659
Buffer< uint8 > buffer
Buffer for the block data.
Definition: Tape.h:222
PropertyHint file(const std::string &filters=std::string(), bool save=false)
Tells the property editor that the path is for a file, and that it should show a "File Open"/"File Sa...
Definition: Path.h:230
Time toLocal() const
Converts to local time zone based on the settings of the machine.
Definition: Time.h:552
MetaTypeDatabase metaDB
Database of meta information needed by this type.
Definition: Tape.h:196
specialize cv::DataType for our ImgPixel and inherit from cv::DataType<Vec>
Definition: IOService.h:67
uint64 offsetToIndexTable
Offset in bytes of the index table for the channel.
Definition: Tape.h:190
void repair(const Path &file, const Path &outFile, bool displayProgress=false)
Try to repair the tape given by file and store repaired version in outFile.
boost::filesystem::path Path
Typedef of a Path (shorter version for boost::filesystem::path)
Definition: Path.h:69
bool mIsOpen
Definition: Tape.h:725
Duration firstMessageOffset
Time offset of the first message in the channel.
Definition: Tape.h:191
bool mWaitForAlteredStartTime
Definition: Tape.h:726
void openRead(const Path &file)
void writeHeader(HeaderType type, uint32 size)
void alterStartTime(const Time &startTime)
Alters the start time of a tape in write mode.
Time getStartTime() const
Get the time when the recording started.
Definition: Tape.h:582
Duration mSortWindowSize
Size of the window used for sorting messages in a tape.
Definition: Tape.h:739
TypeMetaPtr meta
Type meta information.
Definition: Tape.h:195
Tape::Header readHeader()
const Tape::ChannelMap & getChannels() const
Get a list of channels in the tape.
Definition: Tape.h:635
static const uint32 sMessageBlockSize
Definition: Tape.h:148
Duration lastMessageOffset
Time offset of the last message in the block.
Definition: Tape.h:221
OpenMode
The open mode for a tape.
Definition: Tape.h:151
void writeChannelInfo(ChannelInfo &info)
static Time unixEpoch()
Returns the unix epoch 1.1.1970 0:0:0.000.
Definition: Time.h:506
Time getLocalStartTime() const
Get the time when the recording started in the local timezone of the machine the recording took place...
Definition: Tape.h:594
std::string name
Name of the messages channel.
Definition: Tape.h:229
Time start
Start recording time.
Definition: Tape.h:205
An object that allows read access to data of a channel.
Definition: ChannelReadWrite.h:494
std::size_t write(ChannelRead< T > value, int compressionLevel=0, TypeMetaPtr meta=TypeMetaPtr(), const MetaTypeDatabase &metaDB=MetaTypeDatabase())
Write the content of a channel into the tape.
Definition: Tape.h:331
#define MIRA_THROW(ex, msg)
Macro for throwing an exception.
Definition: Exception.h:78
void serialize(const T &value, bool enableTypeCheck=true)
Provides a special serialize interface for the BinarySerializer.
Definition: BinarySerializer.h:590
uint32 nrChannels
Nr of channels.
Definition: Tape.h:210
Information about a channel in a tape.
Definition: Tape.h:186
std::string filename
Name of the tape.
Definition: Tape.h:207
const Tape::MessageBlockMap & getMessageBlocks() const
Get a list of the tapes message blocks.
Definition: Tape.h:647
Wrapper class for boost::posix_time::ptime for adding more functionality to it.
Definition: Time.h:418
uint32 sequenceID
Sequence id of the message.
Definition: Tape.h:231
Duration getTZOffset() const
Get the time zone offset.
Definition: Tape.h:623
ChannelMap mChannels
Definition: Tape.h:728
uint32 size
Size of the block.
Definition: Tape.h:219
std::string type
Typename of the channel.
Definition: Tape.h:194
std::map< uint64, MessageBlock > MessageBlockMap
maps a message block to an offset
Definition: Tape.h:239
void readMessageBlock(uint64 offset)
std::string frameID
Frame id of the message.
Definition: Tape.h:230
static uint32 getCurrentVersion()
Returns the tape version that is supported by the local implementation.
std::size_t write(ChannelRead< T > value, std::list< BinarySerializerCodecPtr > &codecs, int compressionLevel=0, TypeMetaPtr meta=TypeMetaPtr(), const MetaTypeDatabase &metaDB=MetaTypeDatabase())
Write the content of a channel into the tape.
Definition: Tape.h:382
MIRA_DEPRECATED("Please use int compressionLevel(=0/-1) instead of bool compress(=false/true)", std::size_t write(const std::string &channelID, const std::string &typeName, const StampedHeader &header, const Buffer< uint8 > &data, bool compress, TypeMetaPtr meta=TypeMetaPtr(), const MetaTypeDatabase &metaDB=MetaTypeDatabase()))
Write the serialized data into the tape.
Definition: Tape.h:460
FileInfo mFile
File informations.
Definition: Tape.h:734
uint64 offsetToFirstInfo
Offset to the first channel info packet.
Definition: Tape.h:211
MessageVector messages
Messages.
Definition: Tape.h:197
PropertyHint type(const std::string &t)
Sets the attribute "type" to the specified value.
Definition: PropertyHint.h:295
bool compressed
Is message compressed.
Definition: Tape.h:228
void setMaxMessageBlockSize(uint32 size)
Set the maximum size of the chunks.
Definition: Tape.h:548
Use this class to represent time durations.
Definition: Time.h:106
void setStartTime(Time time)
Set an alternative start time for recording.
Definition: Tape.h:571
boost::optional< MessageBlock > mCurrentMessageBlock
Definition: Tape.h:730
std::size_t write(const std::string &channelID, const Stamped< T > &value, int compressionLevel=0, TypeMetaPtr meta=TypeMetaPtr(), const MetaTypeDatabase &metaDB=MetaTypeDatabase())
Write the stamped data into the tape.
Definition: Tape.h:434
uint64 offset
Offset in bytes of the info packet in the tape.
Definition: Tape.h:189
uint64 mLastInfo
Offset to the last written info field.
Definition: Tape.h:735
boost::mutex mMessageMutex
Definition: Tape.h:732
MessageMap mMessages
Messages we have not yet written to file (in the sort window)
Definition: Tape.h:738
MIRA_DEPRECATED("Please use int compressionLevel(=0/-1) instead of bool compress(=false/true)", std::size_t write(ChannelRead< T > value, std::list< BinarySerializerCodecPtr > &codecs, bool compress, TypeMetaPtr meta=TypeMetaPtr(), const MetaTypeDatabase &metaDB=MetaTypeDatabase()))
Write the content of a channel into the tape.
Definition: Tape.h:355
MIRA_DEPRECATED("Please use int compressionLevel(=0/-1) instead of bool compress(=false/true)", std::size_t write(const std::string &channelID, const Stamped< T > &value, bool compress, TypeMetaPtr meta=TypeMetaPtr(), const MetaTypeDatabase &metaDB=MetaTypeDatabase()))
Write the stamped data into the tape.
Definition: Tape.h:407
const std::string & getChannelID()
Definition: ChannelReadWrite.h:245
Mix in for adding a time stamp, an optional frame id and an optional sequence id to data types like P...
Definition: Stamped.h:149
boost::shared_ptr< TypeMeta > TypeMetaPtr
Definition: MetaSerializer.h:309
uint64 getFileHeaderSize() const
OpenMode mMode
Definition: Tape.h:727
uint64 dataSize
Size of all messages in bytes.
Definition: Tape.h:198
uint64 block
Offset in bytes of the containing block in the tape.
Definition: Tape.h:180
Time getEndTime() const
Get the time of the last entry.
Definition: Tape.h:606
void close()
Close the tape.
void waitForAlteredStartTime()
If this method is called in write mode (must be called before writing the first message to the tape) ...
uint32 mMaxMessageBlockSize
Maximum size of a message block.
Definition: Tape.h:736
MIRA_DEPRECATED("Please use int compressionLevel(=0/-1) instead of bool compress(=false/true)", std::size_t write(const std::string &channelID, const std::string &typeName, const Time &time, const std::string &frameID, uint32 sequenceID, const Buffer< uint8 > &data, bool compress, TypeMetaPtr meta=TypeMetaPtr(), const MetaTypeDatabase &metaDB=MetaTypeDatabase()))
Low level write method to write serialized binary data to the tape.
Definition: Tape.h:511
uint32 version
Tape version.
Definition: Tape.h:208
std::string getTypename() const
Definition: ChannelReadWrite.h:250
uint64 offset
Offset in bytes of the message in the containing block.
Definition: Tape.h:181
Functions for modifying file system paths.
std::multimap< Duration, Message > MessageMap
maps a message to an time offset
Definition: Tape.h:241
Struct for a message block in a tape.
Definition: Tape.h:215
Buffer< uint8 > data
Buffer for the message data.
Definition: Tape.h:232
void setSortWindowSize(const Duration &interval)
Messages get sorted before they are written to a tape to guarantee a correct temporal order...
Definition: Tape.h:560
Duration lastMessageOffset
Time offset of the last message in the channel.
Definition: Tape.h:192
uint64 offset
Offset in bytes of the block in the tape.
Definition: Tape.h:217
void openInfo(const Path &file)
std::map< std::string, ChannelInfo > ChannelMap
maps channel information to a channel names
Definition: Tape.h:237
void open(const Path &file, OpenMode mode)
Open the tape for reading or writing.
std::set< std::string > mWrittenChannels
Definition: Tape.h:729
std::fstream file
The file stream.
Definition: Tape.h:204
Duration firstMessageOffset
Time offset of the first message in the block.
Definition: Tape.h:220
Index entry for a message in the tape.
Definition: Tape.h:178
uint32 uncompressedSize
Uncompressed size of the message.
Definition: Tape.h:233
Information about a tape file.
Definition: Tape.h:202
void readMessage(const MessageIndex &index, std::string &frameID, uint32 &sequenceID, Buffer< uint8 > &oData, Duration &oTime)
Read a message from tape at the given index.
MIRA_DEPRECATED("Please use int compressionLevel(=0/-1) instead of bool compress(=false/true)", std::size_t write(ChannelRead< T > value, bool compress, TypeMetaPtr meta=TypeMetaPtr(), const MetaTypeDatabase &metaDB=MetaTypeDatabase()))
Write the content of a channel into the tape.
Definition: Tape.h:307
The framework that holds all manager classes and provides startup and shutdown of all framework relat...
void startMessageBlock(Duration time)
Struct for message data in a tape.
Definition: Tape.h:226
Typename typeName(bool cvqualify=true)
Returns a compiler and platform independent typename of T.
Definition: Typename.h:103
void openRepair(const Path &file)
std::string name
Name of the channel.
Definition: Tape.h:193
void finishMessageBlock()
Tape()
Definition: Tape.h:243
uint32 nrMessages
Nr of contained messages.
Definition: Tape.h:218