3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/deps/core/file/FileAccessType.h"
7#include "mc/deps/core/file/WriteOperation.h"
8#include "mc/deps/core/file/file_system/TransactionFlags.h"
9#include "mc/deps/core/utility/NonOwnerPointer.h"
13namespace Core {
class FileIndexLru; }
14namespace Core {
class FileStats; }
15namespace Core {
class FileSystemImpl; }
16namespace Core {
class PathView; }
17namespace Core {
class Result; }
18namespace Core {
class StorageAreasTree; }
23class FileStorageArea :
public ::std::enable_shared_from_this<::Core::FileStorageArea> {
31 enum class FlushableLevelDbEnvType :
int {
88 virtual ::std::unique_ptr<::Core::FileSystemImpl> createTransaction(::Core::FileAccessType) = 0;
91 virtual ::std::unique_ptr<::Core::FileSystemImpl>
92 createTransaction(::Core::FileAccessType fileAccessType, ::Core::TransactionFlags);
95 virtual bool supportsSizeQuery()
const = 0;
98 virtual uint64 getTotalSize()
const = 0;
101 virtual ::Core::Result getUsedSize(uint64&) = 0;
104 virtual void setUsedSizeOverride(uint64);
107 virtual void clearUsedSizeOverride();
110 virtual void notifyChangeInFileSize(int64 changeInSize, int64 changeInAllocatedSize);
113 virtual bool handlesPendingWrites()
const;
116 virtual void informPendingWriteSize(uint64 numBytesWritePending,
bool const fromResourcePack);
119 virtual uint64 estimatePendingWriteDiskSize(uint64 rawFileSize)
const;
122 virtual void informStorageAreaCopy(uint64 storageAreaSize);
125 virtual bool supportsExtendSize()
const;
128 virtual bool canExtendSize()
const;
131 virtual void resetCanAttemptExtendSize();
134 virtual ::Core::Result getExtendSizeThreshold(uint64&)
const;
137 virtual void attemptExtendSize(int64
const& currentFreeSpace, ::std::function<
void()> onCompleteCallback);
140 virtual void preemptiveExtendSize(
141 uint64
const expectedContentSize,
142 ::std::function<
void()> successCallback,
143 ::std::function<
void()> failureCallback
147 virtual uint64 getAvailableUserStorageSize();
150 virtual void unloadFlatFileManifests(
bool shouldClearManifests);
156 virtual void flushImmediately();
159 virtual void enableFlushToDisk(
bool);
162 virtual void enableSequentialWrites(
bool);
165 virtual bool checkCorrupt(
bool handleCorruption);
168 virtual ::Bedrock::NonOwnerPointer<::Core::FileIndexLru> getFileIndexLru();
171 virtual ::Core::FileStorageArea::FlushableLevelDbEnvType getFlushableLevelDbEnvType()
const;
174 virtual uint64 getTransactionWriteSizeLimit()
const;
180 virtual bool shouldAllowCommit()
const;
183 virtual void trackBytesWritten(
::Core::PathView targetPath, uint64 amount, ::Core::WriteOperation writeOperation);
186 virtual void trackWriteOperation(
::Core::PathView targetPath, ::Core::WriteOperation writeOperation);
189 virtual ::Core::FileStorageArea::StorageAreaSpaceInfo getStorageAreaSpaceInfo();
192 virtual ::std::optional<::std::string> getIntegrityResults()
const;
195 virtual bool shouldRecordFileError(
::Core::PathView, ::std::error_code)
const;
198 virtual ::Core::Result _commit();
201 virtual ::Core::Result _onTransactionsEmpty(
bool fromChild);
204 virtual void _onTeardown();
211 ::Core::FileAccessType type,
214 bool isAccessedDirectly,
215 ::std::shared_ptr<::Core::FileStorageArea> parent
234 MCNAPI static ::Core::Result
237 MCNAPI static ::Core::Result
255 ::Core::FileAccessType type,
258 bool isAccessedDirectly,
259 ::std::shared_ptr<::Core::FileStorageArea> parent
272 MCNAPI ::std::unique_ptr<::Core::FileSystemImpl>
297 MCNAPI
void $attemptExtendSize(int64
const& currentFreeSpace, ::std::function<
void()> onCompleteCallback);
300 uint64
const expectedContentSize,
301 ::std::function<
void()> successCallback,
302 ::std::function<
void()> failureCallback
Definition FileStorageArea.h:23
MCAPI::Core::Result $setSaveDataIcon(::Core::PathView)
MCAPI void _addWriteOperation(bool succeeded, uint64 numBytesWritten)
MCAPI void $_onTeardown()
MCAPI void $trackWriteOperation(::Core::PathView targetPath, ::Core::WriteOperation writeOperation)
MCAPI void $clearUsedSizeOverride()
MCAPI::Core::FileStorageArea::StorageAreaSpaceInfo $getStorageAreaSpaceInfo()
MCAPI ::Bedrock::NonOwnerPointer<::Core::FileIndexLru > $getFileIndexLru()
MCAPI uint64 $getAvailableUserStorageSize()
MCAPI void $preemptiveExtendSize(uint64 const expectedContentSize, ::std::function< void()> successCallback, ::std::function< void()> failureCallback)
MCAPI void $informStorageAreaCopy(uint64 storageAreaSize)
MCAPI bool $shouldAllowCommit() const
MCAPI::Core::FileStorageArea::FlushableLevelDbEnvType $getFlushableLevelDbEnvType() const
MCAPI void $attemptExtendSize(int64 const ¤tFreeSpace, ::std::function< void()> onCompleteCallback)
MCAPI::Core::Result _endTransaction(::Core::FileSystemImpl *pTransaction, bool fromChild)
MCAPI bool $shouldRecordFileError(::Core::PathView, ::std::error_code) const
MCAPI::Core::Result $getExtendSizeThreshold(uint64 &) const
static MCAPI ::Core::Result getStorageAreaForPath(::std::shared_ptr<::Core::FileStorageArea > &fileStorageArea, ::Core::PathView path)
MCAPI bool $canExtendSize() const
MCAPI void $informPendingWriteSize(uint64 numBytesWritePending, bool const fromResourcePack)
MCAPI::Core::Result $_commit()
MCAPI void $enableFlushToDisk(bool)
MCAPI bool canWrite() const
MCAPI void $setUsedSizeOverride(uint64)
MCAPI void $trackBytesWritten(::Core::PathView targetPath, uint64 amount, ::Core::WriteOperation writeOperation)
static MCAPI ::Core::StorageAreasTree & sStorageAreas()
MCAPI ::std::optional<::std::string > $getIntegrityResults() const
MCAPI uint64 $estimatePendingWriteDiskSize(uint64 rawFileSize) const
MCAPI bool $handlesPendingWrites() const
static MCAPI ::std::recursive_mutex & sStorageAreaLock()
MCAPI void $notifyChangeInFileSize(int64 changeInSize, int64 changeInAllocatedSize)
MCAPI void $flushImmediately()
MCAPI FileStorageArea(::Core::FileAccessType type, ::Core::PathView rootPath, bool usesFlatFiles, bool isAccessedDirectly, ::std::shared_ptr<::Core::FileStorageArea > parent)
MCAPI bool $checkCorrupt(bool handleCorruption)
MCAPI void * $ctor(::Core::FileAccessType type, ::Core::PathView rootPath, bool usesFlatFiles, bool isAccessedDirectly, ::std::shared_ptr<::Core::FileStorageArea > parent)
MCAPI::Core::Result $_onTransactionsEmpty(bool fromChild)
MCAPI void _beginTransaction(::Core::FileSystemImpl *pTransaction, bool fromChild)
static MCAPI void ** $vftable()
MCAPI void _addReadOperation(bool succeeded, uint64 numBytesRead)
MCAPI void $resetCanAttemptExtendSize()
MCAPI void $enableSequentialWrites(bool)
MCAPI uint64 $getTransactionWriteSizeLimit() const
MCAPI void $unloadFlatFileManifests(bool shouldClearManifests)
MCAPI void checkUserStorage()
MCAPI ::std::unique_ptr<::Core::FileSystemImpl > $createTransaction(::Core::FileAccessType fileAccessType, ::Core::TransactionFlags)
static MCAPI ::Core::Result _getStorageAreaForPathImpl(::std::shared_ptr<::Core::FileStorageArea > &fileStorageArea, ::Core::PathView path)
static MCAPI ::std::vector<::Core::FileStats * > & sStorageAreaFileStats()
MCAPI bool $supportsExtendSize() const
Definition FileSystemImpl.h:30
Definition FileStorageArea.h:37