ADTF File Library
Loading...
Searching...
No Matches
indexedfilewriter_v201_v301.h
Go to the documentation of this file.
1
16
17#ifndef INDEXEDFILE_WRITER_V201_V301_CLASS_HEADER
18#define INDEXEDFILE_WRITER_V201_V301_CLASS_HEADER
19
22
23namespace ifhd
24{
25namespace v201_v301
26{
27
33{
34public:
40 virtual void write(const void* data, size_t data_size) = 0;
41};
42
47{
48private:
49 class IndexedFileWriterImpl;
50 a_util::memory::unique_ptr<IndexedFileWriterImpl> _d;
51
52public:
57 {
58 public:
66 virtual void onChunkDropped(uint64_t index, uint16_t stream_id, uint16_t flags, timestamp_t time) = 0;
67 };
68
69protected:
72 bool _is_open;
73 bool _catch_first_time;
74 timestamp_t _time_offset;
75
76 int64_t _ref_index;
77 timestamp_t _last_chunk_time;
78
79 IndexWriteTable _index_table;
80
81 typedef struct TagStreamInfoAdd
82 {
83 uint8_t* data;
84 int is_reference;
85 } StreamInfoAdd;
86
87 StreamInfoHeader _stream_info[max_indexed_streams];
88 StreamInfoAdd _stream_info_add[max_indexed_streams];
89
90 FilePos _file_pos_last_chunk;
91
92 std::string _file_name;
93 std::string _temp_file_name;
94
95 std::string _prefix_of_temp_save_file_name;
97
102
103public:
109 std::string getTempSaveFileName();
110
116 void setPrefixTempFileExtension(bool use_mode);
117
125
131 std::string getPrefix() const;
132
140 std::string getNewFileNameWithPrefix(const std::string& filename) const;
141
142private:
151 void createAFileWithPrefixdAndAFileWithoutPrefix(const std::string& filename,
152 std::string& save_filename,
153 uint32_t open_flags);
154
159 void renameTempSaveToFileName();
160
164 void addChecksum(const FileRangeChecksumXxh3_64& checksum);
165
166public:
175
181 void setDateTime(const a_util::datetime::DateTime& date_time);
182
195 void open(const std::string& filename,
196 uint32_t flags = 0,
197 uint64_t file_time_offset = 0,
198 timestamp_t history = 0,
199 utils5ext::FileSize history_size = 0,
200 ChunkDroppedCallback* drop_callback = nullptr,
201 timestamp_t index_delay = 1000000);
202
206 void close();
207
218 void writeChunk(uint16_t stream_id, const void* data, uint32_t data_size, timestamp_t time_stamp, uint32_t flags);
219
229 void setAdditionalStreamInfo(uint16_t stream_id,
230 const void* info_data,
231 uint32_t info_data_size,
232 bool use_as_reference = false);
239 void setStreamName(uint16_t stream_id, const char* stream_name);
240
245
254 std::shared_ptr<OutputStream>
255 getExtensionStream(const std::string& name, uint32_t user_id, uint32_t type_id, uint32_t file_version_id);
256
257protected:
262
266 void writeFileHeader(bool store_checksum = false);
267
272
277
282};
283
284} // namespace v201_v301
285} // namespace ifhd
286
287//*************************************************************************************************
288#endif // _INDEXEDFILE_WRITER_V201_V301_CLASS_HEADER_
Definition indexwritetable_v201_v301.h:32
Definition indexedfilewriter_v201_v301.h:57
virtual void onChunkDropped(uint64_t index, uint16_t stream_id, uint16_t flags, timestamp_t time)=0
void setAdditionalStreamInfo(uint16_t stream_id, const void *info_data, uint32_t info_data_size, bool use_as_reference=false)
void writeFileHeader(bool store_checksum=false)
void open(const std::string &filename, uint32_t flags=0, uint64_t file_time_offset=0, timestamp_t history=0, utils5ext::FileSize history_size=0, ChunkDroppedCallback *drop_callback=nullptr, timestamp_t index_delay=1000000)
void setStreamName(uint16_t stream_id, const char *stream_name)
void setDateTime(const a_util::datetime::DateTime &date_time)
Sets the date and time of the file.
std::shared_ptr< OutputStream > getExtensionStream(const std::string &name, uint32_t user_id, uint32_t type_id, uint32_t file_version_id)
Creates and gets an extension stream to write extension data directly to the underlying file.
bool _use_prefix_temp_file_extension
Definition indexedfilewriter_v201_v301.h:101
void setPrefixTempFileExtension(bool use_mode)
void writeChunk(uint16_t stream_id, const void *data, uint32_t data_size, timestamp_t time_stamp, uint32_t flags)
std::string getNewFileNameWithPrefix(const std::string &filename) const
Definition indexedfilewriter_v201_v301.h:33
virtual void write(const void *data, size_t data_size)=0
Writes the data to the output stream.
namespace for indexed file definitions in version 2.0, 2.1, 3.0 and 3.1
Definition indexedfile_types_v201_v301.h:28
namespace for IFHD File library
Definition indexedfile_types.h:30
utils5ext::FilePos FilePos
file pos type
Definition indexedfile_types.h:54
FilePos FileSize
Type for the file size.
Definition file.h:41
A checksum over a range within the file itself.
Definition indexedfile_types_v201_v301.h:299
Definition indexedfile_types_v201_v301.h:256