UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IPlatformFileLogWrapper.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Map.h"
7#include "CoreTypes.h"
10#include "HAL/PlatformMisc.h"
11#include "HAL/PlatformTime.h"
12#include "Logging/LogCategory.h"
13#include "Logging/LogMacros.h"
14#include "Math/Color.h"
15#include "Misc/DateTime.h"
16#include "Misc/ScopeLock.h"
17#include "Templates/UniquePtr.h"
19
21class FOutputDevice;
24
29
30extern bool bSuppressFileLog;
31
32#define FILE_LOG(CategoryName, Verbosity, Format, ...) \
33 if (!bSuppressFileLog) \
34 { \
35 bSuppressFileLog = true; \
36 UE_LOG(CategoryName, Verbosity, Format, ##__VA_ARGS__); \
37 bSuppressFileLog = false; \
38 }
39
41
43{
44 TUniquePtr<IFileHandle> FileHandle;
45 FString Filename;
46#if !UE_BUILD_SHIPPING
47 FLoggedPlatformFile& PlatformFile;
48#endif
49public:
50
53
54 virtual int64 Tell() override
55 {
56 FILE_LOG(LogPlatformFile, VeryVerbose, TEXT("Tell %s"), *Filename);
57 double StartTime = FPlatformTime::Seconds();
58 int64 Result = FileHandle->Tell();
59 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
60 FILE_LOG(LogPlatformFile, VeryVerbose, TEXT("Tell return %lld [%fms]"), Result, ThisTime);
61 return Result;
62 }
63 virtual bool Seek(int64 NewPosition) override
64 {
65 FILE_LOG(LogPlatformFile, VeryVerbose, TEXT("Seek %s %lld"), *Filename, NewPosition);
66 double StartTime = FPlatformTime::Seconds();
67 bool Result = FileHandle->Seek(NewPosition);
68 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
69 FILE_LOG(LogPlatformFile, VeryVerbose, TEXT("Seek return %d [%fms]"), int32(Result), ThisTime);
70 return Result;
71 }
73 {
74 FILE_LOG(LogPlatformFile, VeryVerbose, TEXT("SeekFromEnd %s %lld"), *Filename, NewPositionRelativeToEnd);
75 double StartTime = FPlatformTime::Seconds();
76 bool Result = FileHandle->SeekFromEnd(NewPositionRelativeToEnd);
77 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
78 FILE_LOG(LogPlatformFile, VeryVerbose, TEXT("SeekFromEnd return %d [%fms]"), int32(Result), ThisTime);
79 return Result;
80 }
81 virtual bool Read(uint8* Destination, int64 BytesToRead) override
82 {
83 FILE_LOG(LogPlatformFile, VeryVerbose, TEXT("Read %s %lld"), *Filename, BytesToRead);
84 double StartTime = FPlatformTime::Seconds();
85 bool Result = FileHandle->Read(Destination, BytesToRead);
86 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
87 FILE_LOG(LogPlatformFile, VeryVerbose, TEXT("Read return %d [%fms]"), int32(Result), ThisTime);
88 return Result;
89 }
90 virtual bool ReadAt(uint8* Destination, int64 BytesToRead, int64 Offset) override
91 {
92 FILE_LOG(LogPlatformFile, VeryVerbose, TEXT("ReadAt %s %lld %lld"), *Filename, BytesToRead, Offset);
93 double StartTime = FPlatformTime::Seconds();
94 bool Result = FileHandle->ReadAt(Destination, BytesToRead, Offset);
95 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
96 FILE_LOG(LogPlatformFile, VeryVerbose, TEXT("ReadAt return %d [%fms]"), int32(Result), ThisTime);
97 return Result;
98 }
99 virtual bool Write(const uint8* Source, int64 BytesToWrite) override
100 {
101 FILE_LOG(LogPlatformFile, VeryVerbose, TEXT("Write %s %lld"), *Filename, BytesToWrite);
102 double StartTime = FPlatformTime::Seconds();
103 bool Result = FileHandle->Write(Source, BytesToWrite);
104 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
105 FILE_LOG(LogPlatformFile, VeryVerbose, TEXT("Write return %d [%fms]"), int32(Result), ThisTime);
106 return Result;
107 }
108 virtual int64 Size() override
109 {
110 FILE_LOG(LogPlatformFile, Verbose, TEXT("Size %s"), *Filename);
111 double StartTime = FPlatformTime::Seconds();
112 int64 Result = FileHandle->Size();
113 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
114 FILE_LOG(LogPlatformFile, Verbose, TEXT("Size return %lld [%fms]"), Result, ThisTime);
115 return Result;
116 }
117 virtual bool Flush(const bool bFullFlush = false) override
118 {
119 FILE_LOG(LogPlatformFile, Verbose, TEXT("Flush %s %s"), *Filename, (bFullFlush ? TEXT("full") : TEXT("partial")));
120 double StartTime = FPlatformTime::Seconds();
121 bool bResult = FileHandle->Flush(bFullFlush);
122 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
123 FILE_LOG(LogPlatformFile, Verbose, TEXT("Flush return %d [%fms]"), int32(bResult), ThisTime);
124 return bResult;
125 }
126 virtual bool Truncate(int64 NewSize) override
127 {
128 FILE_LOG(LogPlatformFile, Verbose, TEXT("Truncate %s %lld"), *Filename, NewSize);
129 double StartTime = FPlatformTime::Seconds();
130 bool bResult = FileHandle->Truncate(NewSize);
131 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
132 FILE_LOG(LogPlatformFile, Verbose, TEXT("Truncate return %d [%fms]"), int32(bResult), ThisTime);
133 return bResult;
134 }
135 virtual void ShrinkBuffers() override
136 {
137 FILE_LOG(LogPlatformFile, Verbose, TEXT("ShrinkBuffers %s"), *Filename);
138 double StartTime = FPlatformTime::Seconds();
139 FileHandle->ShrinkBuffers();
140 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
141 FILE_LOG(LogPlatformFile, Verbose, TEXT("ShrinkBuffers return [%fms]"), ThisTime);
142 }
143};
144
146{
147 IPlatformFile* LowerLevel;
148
149#if !UE_BUILD_SHIPPING
150 FCriticalSection LogFileCritical;
151 TMap<FString, int32> OpenHandles;
152#endif
153
154public:
155 static const TCHAR* GetTypeName()
156 {
157 return TEXT("LogFile");
158 }
159
161 : LowerLevel(nullptr)
162 {
163 }
164
165 //~ For visibility of overloads we don't override
170
171 CORE_API virtual bool ShouldBeUsed(IPlatformFile* Inner, const TCHAR* CmdLine) const override;
172
173 CORE_API virtual bool Initialize(IPlatformFile* Inner, const TCHAR* CommandLineParam) override;
174
176 {
177 return LowerLevel;
178 }
180 {
181 LowerLevel = NewLowerLevel;
182 }
183 virtual const TCHAR* GetName() const override
184 {
186 }
187
188 virtual bool FileExists(const TCHAR* Filename) override
189 {
190 FString DataStr = FString::Printf(TEXT("FileExists %s"), Filename);
193 double StartTime = FPlatformTime::Seconds();
194 bool Result = LowerLevel->FileExists(Filename);
195 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
196 FILE_LOG(LogPlatformFile, Log, TEXT("FileExists return %d [%fms]"), int32(Result), ThisTime);
197 return Result;
198 }
199 virtual int64 FileSize(const TCHAR* Filename) override
200 {
201 FString DataStr = FString::Printf(TEXT("FileSize %s"), Filename);
204 double StartTime = FPlatformTime::Seconds();
205 int64 Result = LowerLevel->FileSize(Filename);
206 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
207 FILE_LOG(LogPlatformFile, Log, TEXT("FileSize return %lld [%fms]"), Result, ThisTime);
208 return Result;
209 }
210 virtual bool DeleteFile(const TCHAR* Filename) override
211 {
212 FString DataStr = FString::Printf(TEXT("DeleteFile %s"), Filename);
215 double StartTime = FPlatformTime::Seconds();
216 bool Result = LowerLevel->DeleteFile(Filename);
217 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
218 FILE_LOG(LogPlatformFile, Log, TEXT("DeleteFile return %d [%fms]"), int32(Result), ThisTime);
219 return Result;
220 }
221 virtual bool IsReadOnly(const TCHAR* Filename) override
222 {
223 FString DataStr = FString::Printf(TEXT("IsReadOnly %s"), Filename);
226 double StartTime = FPlatformTime::Seconds();
227 bool Result = LowerLevel->IsReadOnly(Filename);
228 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
229 FILE_LOG(LogPlatformFile, Log, TEXT("IsReadOnly return %d [%fms]"), int32(Result), ThisTime);
230 return Result;
231 }
232 virtual bool MoveFile(const TCHAR* To, const TCHAR* From) override
233 {
234 FString DataStr = FString::Printf(TEXT("MoveFile %s %s"), To, From);
237 double StartTime = FPlatformTime::Seconds();
238 bool Result = LowerLevel->MoveFile(To, From);
239 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
240 FILE_LOG(LogPlatformFile, Log, TEXT("MoveFile return %d [%fms]"), int32(Result), ThisTime);
241 return Result;
242 }
243 virtual bool SetReadOnly(const TCHAR* Filename, bool bNewReadOnlyValue) override
244 {
245 FString DataStr = FString::Printf(TEXT("SetReadOnly %s %d"), Filename, int32(bNewReadOnlyValue));
248 double StartTime = FPlatformTime::Seconds();
249 bool Result = LowerLevel->SetReadOnly(Filename, bNewReadOnlyValue);
250 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
251 FILE_LOG(LogPlatformFile, Log, TEXT("SetReadOnly return %d [%fms]"), int32(Result), ThisTime);
252 return Result;
253 }
254 virtual FDateTime GetTimeStamp(const TCHAR* Filename) override
255 {
256 FString DataStr = FString::Printf(TEXT("GetTimeStamp %s"), Filename);
259 double StartTime = FPlatformTime::Seconds();
260 FDateTime Result = LowerLevel->GetTimeStamp(Filename);
261 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
262 FILE_LOG(LogPlatformFile, Log, TEXT("GetTimeStamp return %llx [%fms]"), Result.GetTicks(), ThisTime);
263 return Result;
264 }
265 virtual void SetTimeStamp(const TCHAR* Filename, FDateTime DateTime) override
266 {
267 FString DataStr = FString::Printf(TEXT("SetTimeStamp %s"), Filename);
270 double StartTime = FPlatformTime::Seconds();
271 LowerLevel->SetTimeStamp(Filename, DateTime);
272 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
273 FILE_LOG(LogPlatformFile, Log, TEXT("SetTimeStamp [%fms]"), ThisTime);
274 }
275 virtual FDateTime GetAccessTimeStamp(const TCHAR* Filename) override
276 {
277 FString DataStr = FString::Printf(TEXT("GetAccessTimeStamp %s"), Filename);
280 double StartTime = FPlatformTime::Seconds();
281 FDateTime Result = LowerLevel->GetAccessTimeStamp(Filename);
282 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
283 FILE_LOG(LogPlatformFile, Log, TEXT("GetAccessTimeStamp return %llx [%fms]"), Result.GetTicks(), ThisTime);
284 return Result;
285 }
286 virtual FString GetFilenameOnDisk(const TCHAR* Filename) override
287 {
288 FString DataStr = FString::Printf(TEXT("GetFilenameOnDisk %s"), Filename);
291 double StartTime = FPlatformTime::Seconds();
292 FString Result = LowerLevel->GetFilenameOnDisk(Filename);
293 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
294 FILE_LOG(LogPlatformFile, Log, TEXT("GetFilenameOnDisk return %s [%fms]"), *Result, ThisTime);
295 return Result;
296 }
297 virtual IFileHandle* OpenRead(const TCHAR* Filename, bool bAllowWrite) override
298 {
299 FString DataStr = FString::Printf(TEXT("OpenRead %s"), Filename);
302 double StartTime = FPlatformTime::Seconds();
303 IFileHandle* Result = LowerLevel->OpenRead(Filename, bAllowWrite);
304 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
305 FILE_LOG(LogPlatformFile, Log, TEXT("OpenRead return %llx [%fms]"), uint64(Result), ThisTime);
306 return Result ? (new FLoggedFileHandle(Result, Filename, *this)) : Result;
307 }
308 virtual IFileHandle* OpenWrite(const TCHAR* Filename, bool bAppend = false, bool bAllowRead = false) override
309 {
310 FString DataStr = FString::Printf(TEXT("OpenWrite %s %d %d"), Filename, int32(bAppend), int32(bAllowRead));
313 double StartTime = FPlatformTime::Seconds();
314 IFileHandle* Result = LowerLevel->OpenWrite(Filename, bAppend, bAllowRead);
315 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
316 FILE_LOG(LogPlatformFile, Log, TEXT("OpenWrite return %llx [%fms]"), uint64(Result), ThisTime);
317 return Result ? (new FLoggedFileHandle(Result, Filename, *this)) : Result;
318 }
319
320 virtual bool DirectoryExists(const TCHAR* Directory) override
321 {
322 FString DataStr = FString::Printf(TEXT("DirectoryExists %s"), Directory);
325 double StartTime = FPlatformTime::Seconds();
326 bool Result = LowerLevel->DirectoryExists(Directory);
327 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
328 FILE_LOG(LogPlatformFile, Log, TEXT("DirectoryExists return %d [%fms]"), int32(Result), ThisTime);
329 return Result;
330 }
331 virtual bool CreateDirectory(const TCHAR* Directory) override
332 {
333 FString DataStr = FString::Printf(TEXT("CreateDirectory %s"), Directory);
336 double StartTime = FPlatformTime::Seconds();
337 bool Result = LowerLevel->CreateDirectory(Directory);
338 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
339 FILE_LOG(LogPlatformFile, Log, TEXT("CreateDirectory return %d [%fms]"), int32(Result), ThisTime);
340 return Result;
341 }
342 virtual bool DeleteDirectory(const TCHAR* Directory) override
343 {
344 FString DataStr = FString::Printf(TEXT("DeleteDirectory %s"), Directory);
347 double StartTime = FPlatformTime::Seconds();
348 bool Result = LowerLevel->DeleteDirectory(Directory);
349 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
350 FILE_LOG(LogPlatformFile, Log, TEXT("DeleteDirectory return %d [%fms]"), int32(Result), ThisTime);
351 return Result;
352 }
354 {
355 FString DataStr = FString::Printf(TEXT("GetStatData %s"), FilenameOrDirectory);
358 double StartTime = FPlatformTime::Seconds();
359 FFileStatData Result = LowerLevel->GetStatData(FilenameOrDirectory);
360 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
361 FILE_LOG(LogPlatformFile, Log, TEXT("GetStatData return %d [%fms]"), int32(Result.bIsValid), ThisTime);
362 return Result;
363 }
364
366 {
367 public:
373 virtual bool Visit(const TCHAR* FilenameOrDirectory, bool bIsDirectory) override
374 {
375 FILE_LOG(LogPlatformFile, Verbose, TEXT("Visit %s %d"), FilenameOrDirectory, int32(bIsDirectory));
376 double StartTime = FPlatformTime::Seconds();
377 bool Result = Visitor.CallShouldVisitAndVisit(FilenameOrDirectory, bIsDirectory);
378 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
379 FILE_LOG(LogPlatformFile, Verbose, TEXT("Visit return %d [%fms]"), int32(Result), ThisTime);
380 return Result;
381 }
382 };
383
384 virtual bool IterateDirectory(const TCHAR* Directory, IPlatformFile::FDirectoryVisitor& Visitor) override
385 {
386 FString DataStr = FString::Printf(TEXT("IterateDirectory %s"), Directory);
389 double StartTime = FPlatformTime::Seconds();
390 FLogVisitor LogVisitor(Visitor);
391 bool Result = LowerLevel->IterateDirectory(Directory, LogVisitor);
392 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
393 FILE_LOG(LogPlatformFile, Log, TEXT("IterateDirectory return %d [%fms]"), int32(Result), ThisTime);
394 return Result;
395 }
396 virtual bool IterateDirectoryRecursively(const TCHAR* Directory, IPlatformFile::FDirectoryVisitor& Visitor) override
397 {
398 FString DataStr = FString::Printf(TEXT("IterateDirectoryRecursively %s"), Directory);
401 double StartTime = FPlatformTime::Seconds();
402 FLogVisitor LogVisitor(Visitor);
403 bool Result = LowerLevel->IterateDirectoryRecursively(Directory, LogVisitor);
404 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
405 FILE_LOG(LogPlatformFile, Log, TEXT("IterateDirectoryRecursively return %d [%fms]"), int32(Result), ThisTime);
406 return Result;
407 }
408
410 {
411 public:
417 virtual bool Visit(const TCHAR* FilenameOrDirectory, const FFileStatData& StatData) override
418 {
419 FILE_LOG(LogPlatformFile, Verbose, TEXT("Visit %s %d"), FilenameOrDirectory, int32(StatData.bIsDirectory));
420 double StartTime = FPlatformTime::Seconds();
422 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
423 FILE_LOG(LogPlatformFile, Verbose, TEXT("Visit return %d [%fms]"), int32(Result), ThisTime);
424 return Result;
425 }
426 };
427
428 virtual bool IterateDirectoryStat(const TCHAR* Directory, IPlatformFile::FDirectoryStatVisitor& Visitor) override
429 {
430 FString DataStr = FString::Printf(TEXT("IterateDirectoryStat %s"), Directory);
433 double StartTime = FPlatformTime::Seconds();
435 bool Result = LowerLevel->IterateDirectoryStat(Directory, LogVisitor);
436 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
437 FILE_LOG(LogPlatformFile, Log, TEXT("IterateDirectoryStat return %d [%fms]"), int32(Result), ThisTime);
438 return Result;
439 }
440 virtual bool IterateDirectoryStatRecursively(const TCHAR* Directory, IPlatformFile::FDirectoryStatVisitor& Visitor) override
441 {
442 FString DataStr = FString::Printf(TEXT("IterateDirectoryStatRecursively %s"), Directory);
445 double StartTime = FPlatformTime::Seconds();
447 bool Result = LowerLevel->IterateDirectoryStatRecursively(Directory, LogVisitor);
448 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
449 FILE_LOG(LogPlatformFile, Log, TEXT("IterateDirectoryStatRecursively return %d [%fms]"), int32(Result), ThisTime);
450 return Result;
451 }
452
453 virtual bool DeleteDirectoryRecursively(const TCHAR* Directory) override
454 {
455 FString DataStr = FString::Printf(TEXT("DeleteDirectoryRecursively %s"), Directory);
458 double StartTime = FPlatformTime::Seconds();
459 bool Result = LowerLevel->DeleteDirectoryRecursively(Directory);
460 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
461 FILE_LOG(LogPlatformFile, Log, TEXT("DeleteDirectoryRecursively return %d [%fms]"), int32(Result), ThisTime);
462 return Result;
463 }
465 {
466 FString DataStr = FString::Printf(TEXT("CopyFile %s %s"), To, From);
469 double StartTime = FPlatformTime::Seconds();
470 bool Result = LowerLevel->CopyFile(To, From, ReadFlags, WriteFlags);
471 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
472 FILE_LOG(LogPlatformFile, Log, TEXT("CopyFile return %d [%fms]"), int32(Result), ThisTime);
473 return Result;
474 }
475
476#if !UE_BUILD_SHIPPING
477 void OnHandleOpen(const FString& Filename)
478 {
479 FScopeLock LogFileLock(&LogFileCritical);
480 int32& NumOpenHandles = OpenHandles.FindOrAdd(Filename);
482 }
483 void OnHandleClosed(const FString& Filename)
484 {
485 FScopeLock LogFileLock(&LogFileCritical);
486 int32& NumOpenHandles = OpenHandles.FindChecked(Filename);
487 if (--NumOpenHandles == 0)
488 {
489 OpenHandles.Remove(Filename);
490 }
491 }
492 CORE_API void HandleDumpCommand(const TCHAR* Cmd, FOutputDevice& Ar);
493#endif
494 virtual IAsyncReadFileHandle* OpenAsyncRead(const TCHAR* Filename, bool bAllowWrite = false) override
495 {
496 FString DataStr = FString::Printf(TEXT("OpenAsyncRead %s"), Filename);
499 double StartTime = FPlatformTime::Seconds();
500 IAsyncReadFileHandle* Result = LowerLevel->OpenAsyncRead(Filename, bAllowWrite);
501 double ThisTime = (FPlatformTime::Seconds() - StartTime) / 1000.0;
502 FILE_LOG(LogPlatformFile, Log, TEXT("OpenAsyncRead return %llx [%fms]"), uint64(Result), ThisTime);
503 //@todo no wrapped logging for async file handles (yet)
504 return Result;
505 }
506 virtual FOpenMappedResult OpenMappedEx(const TCHAR* Filename, EOpenReadFlags OpenOptions = EOpenReadFlags::None, int64 MaximumSize = 0) override;
507
512 virtual bool FileJournalIsAvailable(const TCHAR* VolumeOrPath = nullptr,
513 ELogVerbosity::Type* OutErrorLevel = nullptr, FString* OutError = nullptr) override
514 {
516 }
517 virtual bool FileJournalIterateDirectory(const TCHAR* Directory,
518 FDirectoryJournalVisitorFunc Visitor, FString* OutError = nullptr) override
519 {
520 return LowerLevel->FileJournalIterateDirectory(Directory, Visitor, OutError);
521 }
523 FFileJournalEntryHandle& OutEntryHandle, FString* OutError = nullptr) override
524 {
525 return LowerLevel->FileJournalGetLatestEntry(VolumeName, OutJournalId, OutEntryHandle, OutError);
526 }
536 FString* OutError = nullptr) override
537 {
539 }
541 {
542 return LowerLevel->FileJournalGetVolumeName(InPath);
543 }
545 ELogVerbosity::Type* OutErrorLevel = nullptr, FString* OutError = nullptr) const override
546 {
548 }
549};
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
uint64 FFileJournalEntryHandle
Definition GenericPlatformFile.h:250
EPlatformFileRead
Definition GenericPlatformFile.h:59
uint64 FFileJournalId
Definition GenericPlatformFile.h:244
EFileJournalResult
Definition GenericPlatformFile.h:100
EPlatformFileWrite
Definition GenericPlatformFile.h:70
EAsyncIOPriorityAndFlags
Definition GenericPlatformFile.h:31
bool bSuppressFileLog
Definition IPlatformFileLogWrapper.cpp:8
#define FILE_LOG(CategoryName, Verbosity, Format,...)
Definition IPlatformFileLogWrapper.h:32
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
#define SCOPED_NAMED_EVENT_FSTRING(Text, Color)
Definition PlatformMisc.h:184
uint32 Offset
Definition VulkanMemory.cpp:4033
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition IPlatformFileLogWrapper.h:43
virtual bool Read(uint8 *Destination, int64 BytesToRead) override
Definition IPlatformFileLogWrapper.h:81
virtual int64 Tell() override
Definition IPlatformFileLogWrapper.h:54
virtual bool SeekFromEnd(int64 NewPositionRelativeToEnd) override
Definition IPlatformFileLogWrapper.h:72
virtual bool ReadAt(uint8 *Destination, int64 BytesToRead, int64 Offset) override
Definition IPlatformFileLogWrapper.h:90
virtual bool Flush(const bool bFullFlush=false) override
Definition IPlatformFileLogWrapper.h:117
virtual bool Write(const uint8 *Source, int64 BytesToWrite) override
Definition IPlatformFileLogWrapper.h:99
virtual CORE_API ~FLoggedFileHandle()
Definition IPlatformFileLogWrapper.cpp:83
virtual void ShrinkBuffers() override
Definition IPlatformFileLogWrapper.h:135
virtual bool Truncate(int64 NewSize) override
Definition IPlatformFileLogWrapper.h:126
virtual int64 Size() override
Definition IPlatformFileLogWrapper.h:108
virtual bool Seek(int64 NewPosition) override
Definition IPlatformFileLogWrapper.h:63
Definition IPlatformFileLogWrapper.h:410
FLogStatVisitor(FDirectoryStatVisitor &InVisitor)
Definition IPlatformFileLogWrapper.h:413
virtual bool Visit(const TCHAR *FilenameOrDirectory, const FFileStatData &StatData) override
Definition IPlatformFileLogWrapper.h:417
FDirectoryStatVisitor & Visitor
Definition IPlatformFileLogWrapper.h:412
Definition IPlatformFileLogWrapper.h:366
FDirectoryVisitor & Visitor
Definition IPlatformFileLogWrapper.h:368
virtual bool Visit(const TCHAR *FilenameOrDirectory, bool bIsDirectory) override
Definition IPlatformFileLogWrapper.h:373
FLogVisitor(FDirectoryVisitor &InVisitor)
Definition IPlatformFileLogWrapper.h:369
Definition IPlatformFileLogWrapper.h:146
static const TCHAR * GetTypeName()
Definition IPlatformFileLogWrapper.h:155
virtual bool DeleteFile(const TCHAR *Filename) override
Definition IPlatformFileLogWrapper.h:210
IPlatformFile * GetLowerLevel() override
Definition IPlatformFileLogWrapper.h:175
virtual FDateTime GetTimeStamp(const TCHAR *Filename) override
Definition IPlatformFileLogWrapper.h:254
virtual FString GetFilenameOnDisk(const TCHAR *Filename) override
Definition IPlatformFileLogWrapper.h:286
void OnHandleOpen(const FString &Filename)
Definition IPlatformFileLogWrapper.h:477
CORE_API void HandleDumpCommand(const TCHAR *Cmd, FOutputDevice &Ar)
Definition IPlatformFileLogWrapper.cpp:58
virtual FFileJournalData FileJournalGetFileData(const TCHAR *FilenameOrDirectory, FString *OutError=nullptr) override
Definition IPlatformFileLogWrapper.h:535
virtual void SetAsyncMinimumPriority(EAsyncIOPriorityAndFlags Priority) override
Definition IPlatformFileLogWrapper.h:508
virtual uint64 FileJournalGetMaximumSize(const TCHAR *VolumeOrPath=nullptr, ELogVerbosity::Type *OutErrorLevel=nullptr, FString *OutError=nullptr) const override
Definition IPlatformFileLogWrapper.h:544
virtual const TCHAR * GetName() const override
Definition IPlatformFileLogWrapper.h:183
virtual FOpenMappedResult OpenMappedEx(const TCHAR *Filename, EOpenReadFlags OpenOptions=EOpenReadFlags::None, int64 MaximumSize=0) override
Definition IPlatformFileLogWrapper.cpp:91
virtual EFileJournalResult FileJournalReadModified(const TCHAR *VolumeName, const FFileJournalId &JournalIdOfStartingEntry, const FFileJournalEntryHandle &StartingJournalEntry, TMap< FFileJournalFileHandle, FString > &KnownDirectories, TSet< FString > &OutModifiedDirectories, FFileJournalEntryHandle &OutNextJournalEntry, FString *OutError=nullptr) override
Definition IPlatformFileLogWrapper.h:527
virtual FFileStatData GetStatData(const TCHAR *FilenameOrDirectory) override
Definition IPlatformFileLogWrapper.h:353
virtual bool DeleteDirectory(const TCHAR *Directory) override
Definition IPlatformFileLogWrapper.h:342
FLoggedPlatformFile()
Definition IPlatformFileLogWrapper.h:160
virtual bool FileJournalIsAvailable(const TCHAR *VolumeOrPath=nullptr, ELogVerbosity::Type *OutErrorLevel=nullptr, FString *OutError=nullptr) override
Definition IPlatformFileLogWrapper.h:512
virtual bool CopyFile(const TCHAR *To, const TCHAR *From, EPlatformFileRead ReadFlags=EPlatformFileRead::None, EPlatformFileWrite WriteFlags=EPlatformFileWrite::None) override
Definition IPlatformFileLogWrapper.h:464
virtual EFileJournalResult FileJournalGetLatestEntry(const TCHAR *VolumeName, FFileJournalId &OutJournalId, FFileJournalEntryHandle &OutEntryHandle, FString *OutError=nullptr) override
Definition IPlatformFileLogWrapper.h:522
virtual bool IsReadOnly(const TCHAR *Filename) override
Definition IPlatformFileLogWrapper.h:221
virtual bool CreateDirectory(const TCHAR *Directory) override
Definition IPlatformFileLogWrapper.h:331
virtual bool IterateDirectory(const TCHAR *Directory, IPlatformFile::FDirectoryVisitor &Visitor) override
Definition IPlatformFileLogWrapper.h:384
virtual bool DeleteDirectoryRecursively(const TCHAR *Directory) override
Definition IPlatformFileLogWrapper.h:453
virtual IAsyncReadFileHandle * OpenAsyncRead(const TCHAR *Filename, bool bAllowWrite=false) override
Definition IPlatformFileLogWrapper.h:494
virtual bool IterateDirectoryRecursively(const TCHAR *Directory, IPlatformFile::FDirectoryVisitor &Visitor) override
Definition IPlatformFileLogWrapper.h:396
virtual bool MoveFile(const TCHAR *To, const TCHAR *From) override
Definition IPlatformFileLogWrapper.h:232
virtual bool SetReadOnly(const TCHAR *Filename, bool bNewReadOnlyValue) override
Definition IPlatformFileLogWrapper.h:243
virtual bool IterateDirectoryStatRecursively(const TCHAR *Directory, IPlatformFile::FDirectoryStatVisitor &Visitor) override
Definition IPlatformFileLogWrapper.h:440
virtual bool FileJournalIterateDirectory(const TCHAR *Directory, FDirectoryJournalVisitorFunc Visitor, FString *OutError=nullptr) override
Definition IPlatformFileLogWrapper.h:517
virtual FString FileJournalGetVolumeName(FStringView InPath) override
Definition IPlatformFileLogWrapper.h:540
virtual bool IterateDirectoryStat(const TCHAR *Directory, IPlatformFile::FDirectoryStatVisitor &Visitor) override
Definition IPlatformFileLogWrapper.h:428
virtual bool FileExists(const TCHAR *Filename) override
Definition IPlatformFileLogWrapper.h:188
virtual CORE_API bool ShouldBeUsed(IPlatformFile *Inner, const TCHAR *CmdLine) const override
Definition IPlatformFileLogWrapper.cpp:39
virtual IFileHandle * OpenWrite(const TCHAR *Filename, bool bAppend=false, bool bAllowRead=false) override
Definition IPlatformFileLogWrapper.h:308
void OnHandleClosed(const FString &Filename)
Definition IPlatformFileLogWrapper.h:483
virtual FDateTime GetAccessTimeStamp(const TCHAR *Filename) override
Definition IPlatformFileLogWrapper.h:275
virtual void SetTimeStamp(const TCHAR *Filename, FDateTime DateTime) override
Definition IPlatformFileLogWrapper.h:265
virtual void SetLowerLevel(IPlatformFile *NewLowerLevel) override
Definition IPlatformFileLogWrapper.h:179
virtual int64 FileSize(const TCHAR *Filename) override
Definition IPlatformFileLogWrapper.h:199
virtual IFileHandle * OpenRead(const TCHAR *Filename, bool bAllowWrite) override
Definition IPlatformFileLogWrapper.h:297
virtual bool DirectoryExists(const TCHAR *Directory) override
Definition IPlatformFileLogWrapper.h:320
Definition OutputDevice.h:133
Definition ScopeLock.h:141
Definition AsyncFileHandle.h:211
Definition GenericPlatformFile.h:117
Definition MappedFileHandle.h:115
Definition GenericPlatformFile.h:623
CORE_API bool CallShouldVisitAndVisit(const TCHAR *FilenameOrDirectory, const FFileStatData &StatData)
Definition GenericPlatformFile.cpp:626
Definition GenericPlatformFile.h:576
CORE_API bool CallShouldVisitAndVisit(const TCHAR *FilenameOrDirectory, bool bIsDirectory)
Definition GenericPlatformFile.cpp:616
Definition GenericPlatformFile.h:342
virtual CORE_API EFileJournalResult FileJournalReadModified(const TCHAR *VolumeName, const FFileJournalId &JournalIdOfStartingEntry, const FFileJournalEntryHandle &StartingJournalEntry, TMap< FFileJournalFileHandle, FString > &KnownDirectories, TSet< FString > &OutModifiedDirectories, FFileJournalEntryHandle &OutNextJournalEntry, FString *OutError=nullptr)
Definition GenericPlatformFile.cpp:1138
virtual CORE_API bool IterateDirectoryRecursively(const TCHAR *Directory, FDirectoryVisitor &Visitor)
Definition GenericPlatformFile.cpp:677
virtual CORE_API FString FileJournalGetVolumeName(FStringView InPath)
Definition GenericPlatformFile.cpp:1151
virtual CORE_API uint64 FileJournalGetMaximumSize(const TCHAR *VolumeOrPath=nullptr, ELogVerbosity::Type *OutErrorLevel=nullptr, FString *OutError=nullptr) const
Definition GenericPlatformFile.cpp:1098
virtual CORE_API bool CopyFile(const TCHAR *To, const TCHAR *From, EPlatformFileRead ReadFlags=EPlatformFileRead::None, EPlatformFileWrite WriteFlags=EPlatformFileWrite::None)
Definition GenericPlatformFile.cpp:870
virtual CORE_API FFileOpenResult OpenRead(const TCHAR *Filename, EOpenReadFlags Flags)
Definition GenericPlatformFile.cpp:497
virtual IFileHandle * OpenWrite(const TCHAR *Filename, bool bAppend=false, bool bAllowRead=false)=0
virtual FFileStatData GetStatData(const TCHAR *FilenameOrDirectory)=0
virtual CORE_API FFileOpenAsyncResult OpenAsyncRead(const TCHAR *Filename, EOpenReadFlags Flags)
Definition GenericPlatformFile.cpp:517
virtual bool IterateDirectoryStat(const TCHAR *Directory, FDirectoryStatVisitor &Visitor)=0
virtual bool MoveFile(const TCHAR *To, const TCHAR *From)=0
virtual CORE_API bool DeleteDirectoryRecursively(const TCHAR *Directory)
Definition GenericPlatformFile.cpp:822
virtual void SetAsyncMinimumPriority(EAsyncIOPriorityAndFlags MinPriority)
Definition GenericPlatformFile.h:779
virtual bool IterateDirectory(const TCHAR *Directory, FDirectoryVisitor &Visitor)=0
virtual bool IsReadOnly(const TCHAR *Filename)=0
virtual bool DeleteDirectory(const TCHAR *Directory)=0
virtual void SetTimeStamp(const TCHAR *Filename, FDateTime DateTime)=0
virtual bool DirectoryExists(const TCHAR *Directory)=0
virtual bool DeleteFile(const TCHAR *Filename)=0
virtual CORE_API FFileJournalData FileJournalGetFileData(const TCHAR *FilenameOrDirectory, FString *OutError=nullptr)
Definition GenericPlatformFile.cpp:1133
virtual bool SetReadOnly(const TCHAR *Filename, bool bNewReadOnlyValue)=0
virtual CORE_API EFileJournalResult FileJournalGetLatestEntry(const TCHAR *VolumeName, FFileJournalId &OutJournalId, FFileJournalEntryHandle &OutEntryHandle, FString *OutError=nullptr)
Definition GenericPlatformFile.cpp:1112
virtual CORE_API bool FileJournalIterateDirectory(const TCHAR *Directory, FDirectoryJournalVisitorFunc Visitor, FString *OutError=nullptr)
Definition GenericPlatformFile.cpp:1124
virtual bool FileExists(const TCHAR *Filename)=0
virtual int64 FileSize(const TCHAR *Filename)=0
virtual CORE_API bool FileJournalIsAvailable(const TCHAR *VolumeOrPath=nullptr, ELogVerbosity::Type *OutErrorLevel=nullptr, FString *OutError=nullptr)
Definition GenericPlatformFile.cpp:1084
virtual bool CreateDirectory(const TCHAR *Directory)=0
EOpenReadFlags
Definition GenericPlatformFile.h:496
virtual FString GetFilenameOnDisk(const TCHAR *Filename)=0
virtual CORE_API bool IterateDirectoryStatRecursively(const TCHAR *Directory, FDirectoryStatVisitor &Visitor)
Definition GenericPlatformFile.cpp:734
virtual FDateTime GetTimeStamp(const TCHAR *Filename)=0
virtual FDateTime GetAccessTimeStamp(const TCHAR *Filename)=0
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
Definition ValueOrError.h:58
Type
Definition LogVerbosity.h:17
static double Seconds()
Definition AndroidPlatformTime.h:20
static CORE_API const FColor Emerald
Definition Color.h:762
Definition DateTime.h:76
Definition GenericPlatformFile.h:271
Definition GenericPlatformFile.h:195