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>
163 class 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:103