17#ifndef INDEXEDFILE_WRITER_V201_V301_CLASS_HEADER
18#define INDEXEDFILE_WRITER_V201_V301_CLASS_HEADER
40 virtual void write(
const void* data,
size_t data_size) = 0;
49 class IndexedFileWriterImpl;
50 a_util::memory::unique_ptr<IndexedFileWriterImpl> _d;
66 virtual void onChunkDropped(uint64_t index, uint16_t stream_id, uint16_t flags, timestamp_t time) = 0;
73 bool _catch_first_time;
74 timestamp_t _time_offset;
77 timestamp_t _last_chunk_time;
81 typedef struct TagStreamInfoAdd
88 StreamInfoAdd _stream_info_add[max_indexed_streams];
92 std::string _file_name;
93 std::string _temp_file_name;
95 std::string _prefix_of_temp_save_file_name;
151 void createAFileWithPrefixdAndAFileWithoutPrefix(
const std::string& filename,
152 std::string& save_filename,
153 uint32_t open_flags);
159 void renameTempSaveToFileName();
195 void open(
const std::string& filename,
197 uint64_t file_time_offset = 0,
198 timestamp_t history = 0,
201 timestamp_t index_delay = 1000000);
218 void writeChunk(uint16_t stream_id,
const void* data, uint32_t data_size, timestamp_t time_stamp, uint32_t flags);
230 const void* info_data,
231 uint32_t info_data_size,
232 bool use_as_reference =
false);
254 std::shared_ptr<OutputStream>
255 getExtensionStream(
const std::string& name, uint32_t user_id, uint32_t type_id, uint32_t file_version_id);
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
std::string getPrefix() const
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)
bool getPrefixTempFileExtensionMode() const
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 updateChecksumsExtension()
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)
void writeFileHeaderExt()
std::string getNewFileNameWithPrefix(const std::string &filename) const
std::string getTempSaveFileName()
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