24 #include <Vector/BLF/platform.h>
30 #include <Vector/BLF/CompressedFile.h>
31 #include <Vector/BLF/FileStatistics.h>
32 #include <Vector/BLF/ObjectHeaderBase.h>
33 #include <Vector/BLF/ObjectQueue.h>
34 #include <Vector/BLF/UncompressedFile.h>
35 #include <Vector/BLF/VectorTypes.h>
38 #include <Vector/BLF/CanMessage.h>
39 #include <Vector/BLF/CanErrorFrame.h>
40 #include <Vector/BLF/CanOverloadFrame.h>
41 #include <Vector/BLF/CanDriverStatistic.h>
42 #include <Vector/BLF/AppTrigger.h>
43 #include <Vector/BLF/EnvironmentVariable.h>
44 #include <Vector/BLF/EnvironmentVariable.h>
45 #include <Vector/BLF/EnvironmentVariable.h>
46 #include <Vector/BLF/EnvironmentVariable.h>
47 #include <Vector/BLF/LogContainer.h>
48 #include <Vector/BLF/LinMessage.h>
49 #include <Vector/BLF/LinCrcError.h>
50 #include <Vector/BLF/LinDlcInfo.h>
51 #include <Vector/BLF/LinReceiveError.h>
52 #include <Vector/BLF/LinSendError.h>
53 #include <Vector/BLF/LinSlaveTimeout.h>
54 #include <Vector/BLF/LinSchedulerModeChange.h>
55 #include <Vector/BLF/LinSyncError.h>
56 #include <Vector/BLF/LinBaudrateEvent.h>
57 #include <Vector/BLF/LinSleepModeEvent.h>
58 #include <Vector/BLF/LinWakeupEvent.h>
59 #include <Vector/BLF/MostSpy.h>
60 #include <Vector/BLF/MostCtrl.h>
61 #include <Vector/BLF/MostLightLock.h>
62 #include <Vector/BLF/MostStatistic.h>
66 #include <Vector/BLF/FlexRayData.h>
67 #include <Vector/BLF/FlexRaySync.h>
68 #include <Vector/BLF/CanDriverError.h>
69 #include <Vector/BLF/MostPkt.h>
70 #include <Vector/BLF/MostPkt2.h>
71 #include <Vector/BLF/MostHwMode.h>
72 #include <Vector/BLF/MostReg.h>
73 #include <Vector/BLF/MostGenReg.h>
74 #include <Vector/BLF/MostNetState.h>
75 #include <Vector/BLF/MostDataLost.h>
76 #include <Vector/BLF/MostTrigger.h>
77 #include <Vector/BLF/FlexRayV6StartCycleEvent.h>
78 #include <Vector/BLF/FlexRayV6Message.h>
79 #include <Vector/BLF/LinChecksumInfo.h>
80 #include <Vector/BLF/LinSpikeEvent.h>
81 #include <Vector/BLF/CanDriverHwSync.h>
82 #include <Vector/BLF/FlexRayStatusEvent.h>
83 #include <Vector/BLF/GpsEvent.h>
84 #include <Vector/BLF/FlexRayVFrError.h>
85 #include <Vector/BLF/FlexRayVFrStatus.h>
86 #include <Vector/BLF/FlexRayVFrStartCycle.h>
87 #include <Vector/BLF/FlexRayVFrReceiveMsg.h>
88 #include <Vector/BLF/RealtimeClock.h>
91 #include <Vector/BLF/LinStatisticEvent.h>
92 #include <Vector/BLF/J1708Message.h>
93 #include <Vector/BLF/J1708Message.h>
94 #include <Vector/BLF/LinMessage2.h>
95 #include <Vector/BLF/LinSendError2.h>
96 #include <Vector/BLF/LinSyncError2.h>
97 #include <Vector/BLF/LinCrcError2.h>
98 #include <Vector/BLF/LinReceiveError2.h>
99 #include <Vector/BLF/LinWakeupEvent2.h>
100 #include <Vector/BLF/LinSpikeEvent2.h>
101 #include <Vector/BLF/LinLongDomSignalEvent.h>
102 #include <Vector/BLF/AppText.h>
103 #include <Vector/BLF/FlexRayVFrReceiveMsgEx.h>
104 #include <Vector/BLF/MostStatisticEx.h>
105 #include <Vector/BLF/MostTxLight.h>
106 #include <Vector/BLF/MostAllocTab.h>
107 #include <Vector/BLF/MostStress.h>
108 #include <Vector/BLF/EthernetFrame.h>
109 #include <Vector/BLF/SystemVariable.h>
110 #include <Vector/BLF/CanErrorFrameExt.h>
111 #include <Vector/BLF/CanDriverErrorExt.h>
112 #include <Vector/BLF/LinLongDomSignalEvent2.h>
113 #include <Vector/BLF/Most150Message.h>
114 #include <Vector/BLF/Most150Pkt.h>
115 #include <Vector/BLF/MostEthernetPkt.h>
116 #include <Vector/BLF/Most150MessageFragment.h>
117 #include <Vector/BLF/Most150PktFragment.h>
118 #include <Vector/BLF/MostEthernetPktFragment.h>
119 #include <Vector/BLF/MostSystemEvent.h>
120 #include <Vector/BLF/Most150AllocTab.h>
121 #include <Vector/BLF/Most50Message.h>
122 #include <Vector/BLF/Most50Pkt.h>
123 #include <Vector/BLF/CanMessage2.h>
124 #include <Vector/BLF/LinUnexpectedWakeup.h>
125 #include <Vector/BLF/LinShortOrSlowResponse.h>
126 #include <Vector/BLF/LinDisturbanceEvent.h>
127 #include <Vector/BLF/SerialEvent.h>
128 #include <Vector/BLF/DriverOverrun.h>
129 #include <Vector/BLF/EventComment.h>
130 #include <Vector/BLF/WlanFrame.h>
131 #include <Vector/BLF/WlanStatistic.h>
132 #include <Vector/BLF/MostEcl.h>
133 #include <Vector/BLF/GlobalMarker.h>
134 #include <Vector/BLF/AfdxFrame.h>
135 #include <Vector/BLF/AfdxStatistic.h>
136 #include <Vector/BLF/KLineStatusEvent.h>
137 #include <Vector/BLF/CanFdMessage.h>
138 #include <Vector/BLF/CanFdMessage64.h>
139 #include <Vector/BLF/EthernetRxError.h>
140 #include <Vector/BLF/EthernetStatus.h>
141 #include <Vector/BLF/CanFdErrorFrame64.h>
142 #include <Vector/BLF/LinShortOrSlowResponse2.h>
143 #include <Vector/BLF/AfdxStatus.h>
144 #include <Vector/BLF/AfdxBusStatistic.h>
146 #include <Vector/BLF/AfdxErrorEvent.h>
147 #include <Vector/BLF/A429Error.h>
148 #include <Vector/BLF/A429Status.h>
149 #include <Vector/BLF/A429BusStatistic.h>
150 #include <Vector/BLF/A429Message.h>
151 #include <Vector/BLF/EthernetStatistic.h>
152 #include <Vector/BLF/Unknown115.h>
155 #include <Vector/BLF/TestStructure.h>
156 #include <Vector/BLF/DiagRequestInterpretation.h>
157 #include <Vector/BLF/EthernetFrameEx.h>
158 #include <Vector/BLF/EthernetFrameForwarded.h>
159 #include <Vector/BLF/EthernetErrorEx.h>
160 #include <Vector/BLF/EthernetErrorForwarded.h>
161 #include <Vector/BLF/FunctionBus.h>
162 #include <Vector/BLF/DataLostBegin.h>
163 #include <Vector/BLF/DataLostEnd.h>
164 #include <Vector/BLF/WaterMarkEvent.h>
165 #include <Vector/BLF/TriggerCondition.h>
167 #include <Vector/BLF/vector_blf_export.h>
177 class VECTOR_BLF_EXPORT
File final {
192 ULONGLONG currentUncompressedFileSize {};
199 std::atomic<DWORD> currentObjectCount {};
204 int compressionLevel {6};
209 bool writeUnknown115 {
true};
217 virtual void open(
const char * filename,
const std::ios_base::openmode mode = std::ios_base::in);
225 virtual void open(
const std::string & filename,
const std::ios_base::openmode mode = std::ios_base::in);
232 virtual bool is_open()
const;
239 virtual bool good()
const;
246 virtual bool eof()
const;
275 virtual void close();
282 virtual DWORD defaultLogContainerSize()
const;
289 virtual void setDefaultLogContainerSize(DWORD defaultLogContainerSize);
303 std::ios_base::openmode m_openMode {};
317 ObjectQueue<ObjectHeaderBase> m_readWriteQueue {};
328 UncompressedFile m_uncompressedFile {};
333 std::thread m_uncompressedFileThread {};
338 std::atomic<bool> m_uncompressedFileThreadRunning {};
349 CompressedFile m_compressedFile {};
354 std::thread m_compressedFileThread {};
359 std::atomic<bool> m_compressedFileThreadRunning {};
366 void uncompressedFile2ReadWriteQueue();
371 void readWriteQueue2UncompressedFile();
376 void compressedFile2UncompressedFile();
381 void uncompressedFile2CompressedFile();
386 static void uncompressedFileReadThread(File * file);
391 static void uncompressedFileWriteThread(File * file);
396 static void compressedFileReadThread(File * file);
401 static void compressedFileWriteThread(File * file);
Definition: FileStatistics.h:79