adtf_file_library  0.13.2
indexedfilewriter_v201_v301.h
Go to the documentation of this file.
1 
17 #ifndef INDEXEDFILE_WRITER_V201_V301_CLASS_HEADER
18 #define INDEXEDFILE_WRITER_V201_V301_CLASS_HEADER
19 
22 
23 namespace ifhd
24 {
25 namespace v201_v301
26 {
27 
32 {
33  private:
34  class IndexedFileWriterImpl;
35  a_util::memory::unique_ptr<IndexedFileWriterImpl> _d;
36 
37  public:
42  {
43  public:
51  virtual void onChunkDropped(uint64_t index,
52  uint16_t stream_id,
53  uint16_t flags,
54  timestamp_t time) = 0;
55  };
56 
57  protected:
60  bool _is_open;
61  bool _catch_first_time;
62  timestamp_t _time_offset;
63 
64  int64_t _ref_index;
65  timestamp_t _last_chunk_time;
66 
67  IndexWriteTable _index_table;
68 
69  typedef struct TagStreamInfoAdd
70  {
71  uint8_t* data;
72  int is_reference;
73  } StreamInfoAdd;
74 
75  StreamInfoHeader _stream_info[max_indexed_streams];
76  StreamInfoAdd _stream_info_add[max_indexed_streams];
77 
78  FilePos _file_pos_last_chunk;
79 
80  std::string _file_name;
81  std::string _temp_file_name;
82 
83  std::string _prefix_of_temp_save_file_name;
85 
90 
91  public:
97  std::string getTempSaveFileName();
98 
104  void setPrefixTempFileExtension(bool use_mode);
105 
113 
119  std::string getPrefix() const;
120 
128  std::string getNewFileNameWithPrefix(const std::string& filename) const;
129  private:
138  void createAFileWithPrefixdAndAFileWithoutPrefix(const std::string& filename,
139  std::string& save_filename,
140  uint32_t open_flags);
141 
146  void renameTempSaveToFileName();
147 
148  public:
157 
163  void setDateTime(const a_util::datetime::DateTime& date_time);
164 
177  void open(const std::string& filename,
178  uint32_t flags=0,
179  uint64_t file_time_offset=0,
180  timestamp_t history = 0,
181  utils5ext::FileSize history_size = 0,
182  ChunkDroppedCallback* drop_callback = nullptr,
183  timestamp_t index_delay = 1000000);
184 
188  void close();
189 
200  void writeChunk(uint16_t stream_id,
201  const void* data,
202  uint32_t data_size,
203  timestamp_t time_stamp,
204  uint32_t flags);
216  void writeChunk(uint16_t stream_id,
217  const void* data,
218  uint32_t data_size,
219  timestamp_t time_stamp,
220  uint32_t flags,
221  bool& index_entry_appended);
222 
231  void setAdditionalStreamInfo(uint16_t stream_id,
232  const void* info_data,
233  uint32_t info_data_size,
234  bool use_as_reference=false);
241  void setStreamName(uint16_t stream_id,
242  const char* stream_name);
243 
247  void quitHistory();
248 
249  protected:
253  void initialize();
254 
259 
264 
269 };
270 
271 } // namespace V201_V301
272 } // namespace ifhd
273 
274 //*************************************************************************************************
275 #endif // _INDEXEDFILE_WRITER_V201_V301_CLASS_HEADER_
Definition: indexwritetable_v201_v301.h:33
Definition: indexedfilewriter_v201_v301.h:42
virtual void onChunkDropped(uint64_t index, uint16_t stream_id, uint16_t flags, timestamp_t time)=0
Definition: indexedfilewriter_v201_v301.h:32
void setAdditionalStreamInfo(uint16_t stream_id, const void *info_data, uint32_t info_data_size, bool use_as_reference=false)
void writeChunk(uint16_t stream_id, const void *data, uint32_t data_size, timestamp_t time_stamp, uint32_t flags, bool &index_entry_appended)
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.
bool _use_prefix_temp_file_extension
Definition: indexedfilewriter_v201_v301.h:89
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: indexedfile_v201_v301.h:86
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
Definition: indexedfile_types_v201_v301.h:255

Copyright © CARIAD SE.
Generated on Mon Jun 10 2024 by doxygen 1.9.1
GIT Commit Hash: eb3af397a6b49ad6fcad9a60d8277d909b458b48