25#include "DataSource.h"
26#include "ForwardDefinitions.h"
27#include "RecordManager.h"
39 map<string, string>
vrs;
84 return StreamId{typeId_, instanceId_};
122 uint32_t formatVersion,
124 const vector<const DataLayout*>& layouts = {});
153 uint32_t recordFormatVersion,
164 createRecordDelegate_ = std::move(delegate);
171 void setTag(
const string& tagName,
const string& tagValue);
174 void addTags(
const map<string, string>& newTags);
204 static const string sOriginalRecordableNameTagName(
"VRS_Original_Recordable_Name");
205 return sOriginalRecordableNameTagName;
211 static const string sFlavorTagName(
"VRS_Recordable_Flavor");
212 return sFlavorTagName;
218 return recordManager_;
223 static const string sSerialNumberTagName(
"VRS_Serial_Number");
224 return sSerialNumberTagName;
268 uint32_t formatVersion,
270 return createRecordDelegate_
271 ? createRecordDelegate_(
getStreamId(), timestampSec, recordType, formatVersion, data)
272 : recordManager_.
createRecord(timestampSec, recordType, formatVersion, data);
302 uint32_t formatVersion,
304 std::unique_ptr<DirectWriteRecordData>&& directWriteRecordData) {
306 timestampSec, recordType, formatVersion, data, std::move(directWriteRecordData));
316 const uint16_t instanceId_;
331 static const string& getTag(
const map<string, string>& tags,
const string& name);
344 std::unique_lock<std::recursive_mutex> lock_;
345 map<RecordableTypeId, uint16_t> preservedState_;
A class referencing data to be captured in a record at creation.
Definition DataSource.h:151
The class to create VRS files.
Definition RecordFileWriter.h:91
Essential VRS class holding a record's details and payload in memory during creation.
Definition Record.h:79
Type
Definition Record.h:88
VRS internal class to manage the records of a specific Recordable after their creation.
Definition RecordManager.h:38
Record * createUncompressedRecord(double timestamp, Record::Type type, uint32_t formatVersion, const DataSource &data, std::unique_ptr< DirectWriteRecordData > &&directWriteData)
Definition RecordManager.cpp:116
Record * createRecord(double timestamp, Record::Type type, uint32_t formatVersion, const DataSource &data)
Definition RecordManager.cpp:55
Class to override to implement a record producing device, or virtual device.
Definition Recordable.h:50
const Record * createRecord(double timestampSec, Record::Type recordType, uint32_t formatVersion, const DataSource &data=DataSource())
Definition Recordable.h:265
static void resetNewInstanceIds()
Definition Recordable.cpp:88
StreamId getStreamId() const
Definition Recordable.h:83
uint16_t getRecordableInstanceId() const
Definition Recordable.h:77
static const string & getFlavorTagName()
Definition Recordable.h:210
void setTag(const string &tagName, const string &tagValue)
Definition Recordable.cpp:59
string getRecordableName() const
Definition Recordable.h:65
const StreamTags & getStreamTags() const
Definition Recordable.h:187
static const string & getSerialNumberTagName()
Get the name of the VRS tag used to store the stream's serial number.
Definition Recordable.h:222
std::function< const Record *(StreamId streamId, double timestamp, Record::Type recordType, uint32_t recordFormatVersion, const DataSource &data)> CreateRecordDelegate
Definition Recordable.h:154
const string & getSerialNumber() const
Definition Recordable.h:197
void setCompression(CompressionPreset preset)
Definition Recordable.cpp:47
map< string, string > & getVRSTags()
When direct edits of VRS tags is convenient (record filters)
Definition Recordable.h:310
const Record * createUncompressedRecord(double timestampSec, Record::Type recordType, uint32_t formatVersion, const DataSource &data, std::unique_ptr< DirectWriteRecordData > &&directWriteRecordData)
Definition Recordable.h:299
RecordManager & getRecordManager()
Definition Recordable.h:217
void setRecordableIsActive(bool isActive)
Definition Recordable.h:91
bool addRecordFormat(Record::Type recordType, uint32_t formatVersion, const RecordFormat &format, const vector< const DataLayout * > &layouts={})
Definition Recordable.cpp:51
void setCreateRecordDelegate(CreateRecordDelegate delegate)
Definition Recordable.h:163
static const string & getOriginalNameTagName()
Definition Recordable.h:203
virtual const Record * createStateRecord()=0
virtual const Record * createConfigurationRecord()=0
bool isRecordableActive() const
Definition Recordable.h:98
void addTags(const map< string, string > &newTags)
Definition Recordable.cpp:63
RecordableTypeId getRecordableTypeId() const
Definition Recordable.h:71
const map< string, string > & getTags() const
Definition Recordable.h:182
VRS stream identifier class.
Definition StreamId.h:242
string getName() const
Definition StreamId.cpp:218
Definition Recordable.h:338
Definition AsyncDiskFileChunk.hpp:49
CompressionPreset
VRS Compression setting.
Definition Compressor.h:38
RecordableTypeId
VRS stream type or class identifier enum.
Definition StreamId.h:49