UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NonBufferingReadOnlyArchive.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "HAL/FileManager.h"
8
9/*
10* This archive uses non-buffered IO to avoid overhead caused by reading into the OS cache manager
11* rather than not reading into an archive owned buffer (it does that). It is intended to be
12* used when reads will occur in parallel, contention would be caused at an OS level to allocate cache pages,
13* and typically the whole file is not read sequentially but instead only a smaller portion of the file
14* is needed (otherwise OS caching likely performs better since it can predict more accurately without waste).
15* This archive is intended to be re-usable by opening new files on top so the internal buffer can be re-used.
16*/
18{
19public:
22
23 // FArchive API
24 virtual void Seek(int64 InPos) override final;
25 virtual int64 Tell() override final
26 {
27 return Pos;
28 }
29 virtual int64 TotalSize() override final
30 {
31 return Size;
32 }
33 virtual bool Close() override final;
34 virtual void Serialize(void* V, int64 Length) override final;
35 virtual FString GetArchiveName() const override
36 {
37 return Filename;
38 }
39 virtual bool Precache(int64 PrecacheOffset, int64 PrecacheSize) override;
40 //End FArchive API
41
43 bool OpenFile(const TCHAR* InFilename);
44
45protected:
48
55
58
60 void CloseLowLevel();
61
64
66 bool IsSilent() const
67 {
69 }
70
71 FString Filename;
76
81};
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
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
@ FILEREAD_Silent
Definition FileManager.h:30
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition NonBufferingReadOnlyArchive.h:18
uint32 Flags
Definition NonBufferingReadOnlyArchive.h:80
int64 BufferReadAlignment
Definition NonBufferingReadOnlyArchive.h:78
bool SeekLowLevel(int64 InPos)
Definition NonBufferingReadOnlyArchive.cpp:59
TUniquePtr< IFileHandle > Handle
Definition NonBufferingReadOnlyArchive.h:75
bool IsSilent() const
Definition NonBufferingReadOnlyArchive.h:66
bool InternalPrecache(int64 PrecacheOffset, int64 PrecacheSize)
Definition NonBufferingReadOnlyArchive.cpp:122
virtual bool Precache(int64 PrecacheOffset, int64 PrecacheSize) override
Definition NonBufferingReadOnlyArchive.cpp:91
FString Filename
Definition NonBufferingReadOnlyArchive.h:71
virtual int64 TotalSize() override final
Definition NonBufferingReadOnlyArchive.h:29
void CloseLowLevel()
Definition NonBufferingReadOnlyArchive.cpp:80
int64 BufferSize
Definition NonBufferingReadOnlyArchive.h:79
int64 Size
Definition NonBufferingReadOnlyArchive.h:72
void OpenFileLowLevel(const TCHAR *InFilename)
Definition NonBufferingReadOnlyArchive.cpp:64
virtual bool Close() override final
Definition NonBufferingReadOnlyArchive.cpp:85
int64 Pos
Definition NonBufferingReadOnlyArchive.h:73
bool OpenFile(const TCHAR *InFilename)
Definition NonBufferingReadOnlyArchive.cpp:103
virtual FString GetArchiveName() const override
Definition NonBufferingReadOnlyArchive.h:35
uint8 * Buffer
Definition NonBufferingReadOnlyArchive.h:77
~FNonBufferingReadOnlyArchive()
Definition NonBufferingReadOnlyArchive.cpp:30
virtual int64 Tell() override final
Definition NonBufferingReadOnlyArchive.h:25
void ReadLowLevel(uint8 *Dest, int64 CountToRead, int64 &OutBytesRead)
Definition NonBufferingReadOnlyArchive.cpp:46
int64 BufferBase
Definition NonBufferingReadOnlyArchive.h:74
Definition UniquePtr.h:107