7#include <Vector/BLF/platform.h>
13#include <Vector/BLF/CompressedFile.h>
14#include <Vector/BLF/FileStatistics.h>
15#include <Vector/BLF/ObjectHeaderBase.h>
16#include <Vector/BLF/ObjectQueue.h>
17#include <Vector/BLF/RestorePoints.h>
18#include <Vector/BLF/UncompressedFile.h>
21#include <Vector/BLF/CanMessage.h>
22#include <Vector/BLF/CanErrorFrame.h>
23#include <Vector/BLF/CanOverloadFrame.h>
24#include <Vector/BLF/CanDriverStatistic.h>
25#include <Vector/BLF/AppTrigger.h>
26#include <Vector/BLF/EnvironmentVariable.h>
27#include <Vector/BLF/EnvironmentVariable.h>
28#include <Vector/BLF/EnvironmentVariable.h>
29#include <Vector/BLF/EnvironmentVariable.h>
30#include <Vector/BLF/LogContainer.h>
31#include <Vector/BLF/LinMessage.h>
32#include <Vector/BLF/LinCrcError.h>
33#include <Vector/BLF/LinDlcInfo.h>
34#include <Vector/BLF/LinReceiveError.h>
35#include <Vector/BLF/LinSendError.h>
36#include <Vector/BLF/LinSlaveTimeout.h>
37#include <Vector/BLF/LinSchedulerModeChange.h>
38#include <Vector/BLF/LinSyncError.h>
39#include <Vector/BLF/LinBaudrateEvent.h>
40#include <Vector/BLF/LinSleepModeEvent.h>
41#include <Vector/BLF/LinWakeupEvent.h>
42#include <Vector/BLF/MostSpy.h>
43#include <Vector/BLF/MostCtrl.h>
44#include <Vector/BLF/MostLightLock.h>
45#include <Vector/BLF/MostStatistic.h>
49#include <Vector/BLF/FlexRayData.h>
50#include <Vector/BLF/FlexRaySync.h>
51#include <Vector/BLF/CanDriverError.h>
52#include <Vector/BLF/MostPkt.h>
53#include <Vector/BLF/MostPkt2.h>
54#include <Vector/BLF/MostHwMode.h>
55#include <Vector/BLF/MostReg.h>
56#include <Vector/BLF/MostGenReg.h>
57#include <Vector/BLF/MostNetState.h>
58#include <Vector/BLF/MostDataLost.h>
59#include <Vector/BLF/MostTrigger.h>
60#include <Vector/BLF/FlexRayV6StartCycleEvent.h>
61#include <Vector/BLF/FlexRayV6Message.h>
62#include <Vector/BLF/LinChecksumInfo.h>
63#include <Vector/BLF/LinSpikeEvent.h>
64#include <Vector/BLF/CanDriverHwSync.h>
65#include <Vector/BLF/FlexRayStatusEvent.h>
66#include <Vector/BLF/GpsEvent.h>
67#include <Vector/BLF/FlexRayVFrError.h>
68#include <Vector/BLF/FlexRayVFrStatus.h>
69#include <Vector/BLF/FlexRayVFrStartCycle.h>
70#include <Vector/BLF/FlexRayVFrReceiveMsg.h>
71#include <Vector/BLF/RealtimeClock.h>
74#include <Vector/BLF/LinStatisticEvent.h>
75#include <Vector/BLF/J1708Message.h>
76#include <Vector/BLF/J1708Message.h>
77#include <Vector/BLF/LinMessage2.h>
78#include <Vector/BLF/LinSendError2.h>
79#include <Vector/BLF/LinSyncError2.h>
80#include <Vector/BLF/LinCrcError2.h>
81#include <Vector/BLF/LinReceiveError2.h>
82#include <Vector/BLF/LinWakeupEvent2.h>
83#include <Vector/BLF/LinSpikeEvent2.h>
84#include <Vector/BLF/LinLongDomSignalEvent.h>
85#include <Vector/BLF/AppText.h>
86#include <Vector/BLF/FlexRayVFrReceiveMsgEx.h>
87#include <Vector/BLF/MostStatisticEx.h>
88#include <Vector/BLF/MostTxLight.h>
89#include <Vector/BLF/MostAllocTab.h>
90#include <Vector/BLF/MostStress.h>
91#include <Vector/BLF/EthernetFrame.h>
92#include <Vector/BLF/SystemVariable.h>
93#include <Vector/BLF/CanErrorFrameExt.h>
94#include <Vector/BLF/CanDriverErrorExt.h>
95#include <Vector/BLF/LinLongDomSignalEvent2.h>
96#include <Vector/BLF/Most150Message.h>
97#include <Vector/BLF/Most150Pkt.h>
98#include <Vector/BLF/MostEthernetPkt.h>
99#include <Vector/BLF/Most150MessageFragment.h>
100#include <Vector/BLF/Most150PktFragment.h>
101#include <Vector/BLF/MostEthernetPktFragment.h>
102#include <Vector/BLF/MostSystemEvent.h>
103#include <Vector/BLF/Most150AllocTab.h>
104#include <Vector/BLF/Most50Message.h>
105#include <Vector/BLF/Most50Pkt.h>
106#include <Vector/BLF/CanMessage2.h>
107#include <Vector/BLF/LinUnexpectedWakeup.h>
108#include <Vector/BLF/LinShortOrSlowResponse.h>
109#include <Vector/BLF/LinDisturbanceEvent.h>
110#include <Vector/BLF/SerialEvent.h>
111#include <Vector/BLF/DriverOverrun.h>
112#include <Vector/BLF/EventComment.h>
113#include <Vector/BLF/WlanFrame.h>
114#include <Vector/BLF/WlanStatistic.h>
115#include <Vector/BLF/MostEcl.h>
116#include <Vector/BLF/GlobalMarker.h>
117#include <Vector/BLF/AfdxFrame.h>
118#include <Vector/BLF/AfdxStatistic.h>
119#include <Vector/BLF/KLineStatusEvent.h>
120#include <Vector/BLF/CanFdMessage.h>
121#include <Vector/BLF/CanFdMessage64.h>
122#include <Vector/BLF/EthernetRxError.h>
123#include <Vector/BLF/EthernetStatus.h>
124#include <Vector/BLF/CanFdErrorFrame64.h>
125#include <Vector/BLF/LinShortOrSlowResponse2.h>
126#include <Vector/BLF/AfdxStatus.h>
127#include <Vector/BLF/AfdxBusStatistic.h>
129#include <Vector/BLF/AfdxErrorEvent.h>
130#include <Vector/BLF/A429Error.h>
131#include <Vector/BLF/A429Status.h>
132#include <Vector/BLF/A429BusStatistic.h>
133#include <Vector/BLF/A429Message.h>
134#include <Vector/BLF/EthernetStatistic.h>
135#include <Vector/BLF/RestorePointContainer.h>
138#include <Vector/BLF/TestStructure.h>
139#include <Vector/BLF/DiagRequestInterpretation.h>
140#include <Vector/BLF/EthernetFrameEx.h>
141#include <Vector/BLF/EthernetFrameForwarded.h>
142#include <Vector/BLF/EthernetErrorEx.h>
143#include <Vector/BLF/EthernetErrorForwarded.h>
144#include <Vector/BLF/FunctionBus.h>
145#include <Vector/BLF/DataLostBegin.h>
146#include <Vector/BLF/DataLostEnd.h>
147#include <Vector/BLF/WaterMarkEvent.h>
148#include <Vector/BLF/TriggerCondition.h>
149#include <Vector/BLF/CanSettingChanged.h>
150#include <Vector/BLF/DistributedObjectMember.h>
151#include <Vector/BLF/AttributeEvent.h>
153#include <Vector/BLF/vector_blf_export.h>
163class VECTOR_BLF_EXPORT
File final {
178 uint64_t currentUncompressedFileSize {};
185 std::atomic<uint32_t> currentObjectCount {};
200 int compressionLevel {1};
205 bool writeRestorePoints {
true};
213 virtual void open(
const char * filename,
const std::ios_base::openmode mode = std::ios_base::in);
221 virtual void open(
const std::string & filename,
const std::ios_base::openmode mode = std::ios_base::in);
228 virtual bool is_open()
const;
235 virtual bool good()
const;
242 virtual bool eof()
const;
271 virtual void close();
278 virtual uint32_t defaultLogContainerSize()
const;
285 virtual void setDefaultLogContainerSize(uint32_t defaultLogContainerSize);
299 std::ios_base::openmode m_openMode {};
313 ObjectQueue<ObjectHeaderBase> m_readWriteQueue {};
324 UncompressedFile m_uncompressedFile {};
329 std::thread m_uncompressedFileThread {};
334 std::exception_ptr m_uncompressedFileThreadException {
nullptr};
339 std::atomic<bool> m_uncompressedFileThreadRunning {};
350 CompressedFile m_compressedFile {};
355 std::thread m_compressedFileThread {};
360 std::exception_ptr m_compressedFileThreadException {
nullptr};
365 std::atomic<bool> m_compressedFileThreadRunning {};
372 void uncompressedFile2ReadWriteQueue();
377 void readWriteQueue2UncompressedFile();
382 void compressedFile2UncompressedFile();
387 void uncompressedFile2CompressedFile();
392 static void uncompressedFileReadThread(File * file);
397 static void uncompressedFileWriteThread(File * file);
402 static void compressedFileReadThread(File * file);
407 static void compressedFileWriteThread(File * file);
Definition FileStatistics.h:104