25#include <vrs/DataSource.h>
26#include <vrs/ForwardDefinitions.h>
27#include <vrs/RecordManager.h>
28#include <vrs/StreamId.h>
29#include <vrs/VrsExport.h>
40 map<string, string>
vrs;
67 return getStreamId().getName();
85 return StreamId{typeId_, instanceId_};
121 bool addRecordFormat(
123 uint32_t formatVersion,
125 const vector<const DataLayout*>& layouts = {});
154 uint32_t recordFormatVersion,
165 createRecordDelegate_ = std::move(delegate);
172 void setTag(
const string& tagName,
const string& tagValue);
175 void addTags(
const map<string, string>& newTags);
199 return getTag(tags_.vrs, getSerialNumberTagName());
204 return getTag(tags_.vrs, getFlavorTagName());
210 static const string sOriginalRecordableNameTagName(
"VRS_Original_Recordable_Name");
211 return sOriginalRecordableNameTagName;
217 static const string sFlavorTagName(
"VRS_Recordable_Flavor");
218 return sFlavorTagName;
224 return recordManager_;
229 static const string sSerialNumberTagName(
"VRS_Serial_Number");
230 return sSerialNumberTagName;
244 static void resetNewInstanceIds();
274 uint32_t formatVersion,
276 return createRecordDelegate_
277 ? createRecordDelegate_(getStreamId(), timestampSec, recordType, formatVersion, data)
278 : recordManager_.createRecord(timestampSec, recordType, formatVersion, data);
308 uint32_t formatVersion,
310 std::unique_ptr<DirectWriteRecordData>&& directWriteRecordData) {
311 return recordManager_.createUncompressedRecord(
312 timestampSec, recordType, formatVersion, data, std::move(directWriteRecordData));
322 const uint16_t instanceId_;
325 CreateRecordDelegate createRecordDelegate_;
337 static const string& getTag(
const map<string, string>& tags,
const string& name);
350 std::unique_lock<std::recursive_mutex> lock_;
351 map<RecordableTypeId, uint16_t> preservedState_;
A class referencing data to be captured in a record at creation.
Definition DataSource.h:153
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:82
Type
Definition Record.h:91
VRS internal class to manage the records of a specific Recordable after their creation.
Definition RecordManager.h:39
Class to override to implement a record producing device, or virtual device.
Definition Recordable.h:51
const Record * createRecord(double timestampSec, Record::Type recordType, uint32_t formatVersion, const DataSource &data=DataSource())
Definition Recordable.h:271
StreamId getStreamId() const
Definition Recordable.h:84
uint16_t getRecordableInstanceId() const
Definition Recordable.h:78
static const string & getFlavorTagName()
Definition Recordable.h:216
const string & getStreamFlavor() const
Get the stream's flavor, if any.
Definition Recordable.h:203
string getRecordableName() const
Definition Recordable.h:66
const StreamTags & getStreamTags() const
Definition Recordable.h:188
static const string & getSerialNumberTagName()
Get the name of the VRS tag used to store the stream's serial number.
Definition Recordable.h:228
std::function< const Record *(StreamId streamId, double timestamp, Record::Type recordType, uint32_t recordFormatVersion, const DataSource &data)> CreateRecordDelegate
Definition Recordable.h:155
const string & getSerialNumber() const
Definition Recordable.h:198
map< string, string > & getVRSTags()
When direct edits of VRS tags is convenient (record filters)
Definition Recordable.h:316
const Record * createUncompressedRecord(double timestampSec, Record::Type recordType, uint32_t formatVersion, const DataSource &data, std::unique_ptr< DirectWriteRecordData > &&directWriteRecordData)
Definition Recordable.h:305
RecordManager & getRecordManager()
Definition Recordable.h:223
void setRecordableIsActive(bool isActive)
Definition Recordable.h:92
void setCreateRecordDelegate(CreateRecordDelegate delegate)
Definition Recordable.h:164
static const string & getOriginalNameTagName()
Definition Recordable.h:209
virtual const Record * createStateRecord()=0
virtual const Record * createConfigurationRecord()=0
bool isRecordableActive() const
Definition Recordable.h:99
RecordableTypeId getRecordableTypeId() const
Definition Recordable.h:72
const map< string, string > & getTags() const
Definition Recordable.h:183
VRS stream identifier class.
Definition StreamId.h:251
Definition Recordable.h:344
Definition Compressor.cpp:113
CompressionPreset
VRS Compression setting.
Definition Compressor.h:39
RecordableTypeId
VRS stream type or class identifier enum.
Definition StreamId.h:51