adtf_file_library  0.13.2
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ifhd::v201_v301::IndexedFileWriter Class Reference

#include <indexedfilewriter_v201_v301.h>

Inheritance diagram for ifhd::v201_v301::IndexedFileWriter:
[legend]
Collaboration diagram for ifhd::v201_v301::IndexedFileWriter:
[legend]

Classes

class  ChunkDroppedCallback
 

Public Member Functions

std::string getTempSaveFileName ()
 
void setPrefixTempFileExtension (bool use_mode)
 
bool getPrefixTempFileExtensionMode () const
 
std::string getPrefix () const
 
std::string getNewFileNameWithPrefix (const std::string &filename) const
 
 IndexedFileWriter ()
 
 ~IndexedFileWriter ()
 
void setDateTime (const a_util::datetime::DateTime &date_time)
 Sets the date and time of the file. More...
 
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 close ()
 
void writeChunk (uint16_t stream_id, const void *data, uint32_t data_size, timestamp_t time_stamp, uint32_t flags)
 
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 setAdditionalStreamInfo (uint16_t stream_id, const void *info_data, uint32_t info_data_size, bool use_as_reference=false)
 
void setStreamName (uint16_t stream_id, const char *stream_name)
 
void quitHistory ()
 
- Public Member Functions inherited from ifhd::v201_v301::IndexedFile
 IndexedFile ()
 
virtual ~IndexedFile ()
 
virtual std::set< uint32_t > getSupportedVersions () const
 Get a set of all supported versions. More...
 
void setDescription (const std::string &description)
 
std::string getDescription () const
 
std::string getGUID () const
 
a_util::datetime::DateTime getDateTime () const
 
uint8_t getByteOrder () const
 
size_t getExtensionCount () const
 
bool findExtension (const char *identifier, FileExtension **extension_info, void **data) const
 
void getExtension (size_t index, FileExtension **extension_info, void **data) const
 
void appendExtension (const char *identifier, const void *data, size_t data_size, uint32_t type_id=0, uint32_t file_version_id=0, uint16_t stream_id=0, uint32_t user_id=0)
 
void appendExtension (const void *data, const FileExtension *extension_info)
 
void freeExtensions ()
 
void getHeaderRef (FileHeader **file_header) const
 

Protected Member Functions

void initialize ()
 
void writeFileHeader ()
 
void writeFileHeaderExt ()
 
void writeIndexTable ()
 
- Protected Member Functions inherited from ifhd::v201_v301::IndexedFile
void setDateTime (const a_util::datetime::DateTime &date_time)
 
void allocBuffer (uint64_t size)
 
void freeBuffer ()
 
void allocHeader ()
 
void freeHeader ()
 
void allocExtensionPage (utils5ext::FileSize size, void **data) const
 
void setGUID ()
 
void generateNewGUID (std::string &generated_guid)
 
void allocCache (int64_t size)
 
void freeCache ()
 
void * getCacheAddr () const
 
void * internalMalloc (size_t size) const
 
void internalFree (void *memory) const
 

Protected Attributes

bool _use_prefix_temp_file_extension
 
- Protected Attributes inherited from ifhd::v201_v301::IndexedFile
utils5ext::File _file
 the open file
 
FilePos _file_pos
 current filepos
 
uint8_t * _buffer
 internal Buffer
 
int64_t _buffer_size
 internal Buffer size
 
FileHeader_file_header
 current file header
 
bool _write_guid
 protection for writing GUID
 
FileExtensionList _extensions
 list with all extensions
 
void * _cache
 cache data area
 
uint64_t _cache_size
 size of cache
 
bool _write_mode
 For internal use only (will be moved to a private implementation).
 

Additional Inherited Members

- Protected Types inherited from ifhd::v201_v301::IndexedFile
typedef std::list< FileExtensionStruct * > FileExtensionList
 own type definition for a better work with file extension lists
 
- Static Protected Attributes inherited from ifhd::v201_v301::IndexedFile
static const uint8_t byte_order
 current value of platform ByteOrder ( More...
 
static int64_t default_block_size
 Default block size in bytes.
 
static int64_t default_cache_size
 Default cache size in bytes.
 

Detailed Description

Class for writing indexed files.

Constructor & Destructor Documentation

◆ IndexedFileWriter()

ifhd::v201_v301::IndexedFileWriter::IndexedFileWriter ( )

Default constructor.

◆ ~IndexedFileWriter()

ifhd::v201_v301::IndexedFileWriter::~IndexedFileWriter ( )

Destructor.

Member Function Documentation

◆ close()

void ifhd::v201_v301::IndexedFileWriter::close ( )
virtual

Finishes writing to and closes the file.

Reimplemented from ifhd::v201_v301::IndexedFile.

◆ getNewFileNameWithPrefix()

std::string ifhd::v201_v301::IndexedFileWriter::getNewFileNameWithPrefix ( const std::string &  filename) const

Set a prefix to the incoming filename and return the new name

Parameters
filenameThe filename to prefix.
Returns
the new name.

◆ getPrefix()

std::string ifhd::v201_v301::IndexedFileWriter::getPrefix ( ) const

Returns the prefix

Returns
std::string the prefix.

◆ getPrefixTempFileExtensionMode()

bool ifhd::v201_v301::IndexedFileWriter::getPrefixTempFileExtensionMode ( ) const

Retrieves the mode, if the prefix mode was set with setPrefixTempFileExtension.

Return values
trueThe mode is set.
falseThe mode is set.

◆ getTempSaveFileName()

std::string ifhd::v201_v301::IndexedFileWriter::getTempSaveFileName ( )

Get the Temp Save File Name (Filename during the Save Mode)

Returns
The filename.

◆ initialize()

void ifhd::v201_v301::IndexedFileWriter::initialize ( )
protectedvirtual

Initializes the writer.

Reimplemented from ifhd::v201_v301::IndexedFile.

◆ open()

void ifhd::v201_v301::IndexedFileWriter::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 
)

Create a new indexed file.

Parameters
filenameThe filename.
flagsCreation flags, see OpenMode
file_time_offsetunused.
historyTimestamp of history.
history_sizeSize of the history.
index_delayThe maximum time difference between index entries.
drop_callbackCallBack implementation if chunk was dropped
Exceptions
exceptions::ErrorFileAccess,exceptions::ErrorFileAlreadyExists

◆ quitHistory()

void ifhd::v201_v301::IndexedFileWriter::quitHistory ( )

In case there is a history set up, this switches over to permanent storage.

◆ setAdditionalStreamInfo()

void ifhd::v201_v301::IndexedFileWriter::setAdditionalStreamInfo ( uint16_t  stream_id,
const void *  info_data,
uint32_t  info_data_size,
bool  use_as_reference = false 
)

Sets additional info for a stream.

Parameters
stream_idThe stream id.
info_dataThe info data.
info_data_sizeThe info data size.
use_as_referenceWhether to store the data in an internal buffer or not (The data is accessed when the file is closed).

◆ setDateTime()

void ifhd::v201_v301::IndexedFileWriter::setDateTime ( const a_util::datetime::DateTime &  date_time)

Sets the date and time of the file.

Parameters
date_timethe date and time to set
Exceptions
std::logic_error

◆ setPrefixTempFileExtension()

void ifhd::v201_v301::IndexedFileWriter::setPrefixTempFileExtension ( bool  use_mode)

Set the mode, if a prefix is set by a temp Save File Name or not

Parameters
use_modeThe filename.

◆ setStreamName()

void ifhd::v201_v301::IndexedFileWriter::setStreamName ( uint16_t  stream_id,
const char *  stream_name 
)

Set the name of a stream.

Parameters
stream_idThe stream id.
stream_nameThe new name.

◆ writeChunk() [1/2]

void ifhd::v201_v301::IndexedFileWriter::writeChunk ( uint16_t  stream_id,
const void *  data,
uint32_t  data_size,
timestamp_t  time_stamp,
uint32_t  flags 
)

Writes a new chunk to the file. This function is not thread safe! (sync must be done outside in caller)!

Parameters
stream_idThe stream id.
dataThe chunk data.
data_sizeThe data size.
time_stampThe timestamp of the chunk.
flagsChunk flags, see ChunkHeader

◆ writeChunk() [2/2]

void ifhd::v201_v301::IndexedFileWriter::writeChunk ( uint16_t  stream_id,
const void *  data,
uint32_t  data_size,
timestamp_t  time_stamp,
uint32_t  flags,
bool &  index_entry_appended 
)

Writes a new chunk to the file. This function is not thread safe! (sync must be done outside in caller)!

Parameters
stream_idThe stream id.
dataThe chunk data.
data_sizeThe data size.
time_stampThe timestamp of the chunk.
flagsChunk flags, see ChunkHeader
index_entry_appendedreturn value Index Entry Added

◆ writeFileHeader()

void ifhd::v201_v301::IndexedFileWriter::writeFileHeader ( )
protected

Write the file header

◆ writeFileHeaderExt()

void ifhd::v201_v301::IndexedFileWriter::writeFileHeaderExt ( )
protected

write the extension file header

◆ writeIndexTable()

void ifhd::v201_v301::IndexedFileWriter::writeIndexTable ( )
protected

write index table

Member Data Documentation

◆ _use_prefix_temp_file_extension

bool ifhd::v201_v301::IndexedFileWriter::_use_prefix_temp_file_extension
protected

if true the tempfilename (savemode) is used with prefix


The documentation for this class was generated from the following file:

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