3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/deps/core/file/FileAccessType.h"
7#include "mc/deps/core/file/LevelStorageState.h"
8#include "mc/deps/core/file/WriteOperation.h"
9#include "mc/deps/core/file/file_system/TransactionFlags.h"
10#include "mc/deps/core/utility/NonOwnerPointer.h"
14namespace Core {
class FileIndexLru; }
15namespace Core {
class FileStats; }
16namespace Core {
class FileSystemImpl; }
17namespace Core {
class PathView; }
18namespace Core {
class Result; }
19namespace Core {
class StorageAreasTree; }
24class FileStorageArea :
public ::std::enable_shared_from_this<::Core::FileStorageArea> {
32 enum class FlushableLevelDbEnvType :
int {
89 virtual ::std::unique_ptr<::Core::FileSystemImpl> createTransaction(::Core::FileAccessType) = 0;
92 virtual ::std::unique_ptr<::Core::FileSystemImpl>
93 createTransaction(::Core::FileAccessType fileAccessType, ::Core::TransactionFlags);
96 virtual bool supportsSizeQuery()
const = 0;
99 virtual uint64 getTotalSize()
const = 0;
102 virtual ::Core::Result getUsedSize(uint64&) = 0;
105 virtual void setUsedSizeOverride(uint64);
108 virtual void clearUsedSizeOverride();
111 virtual void notifyChangeInFileSize(int64 changeInSize, int64 changeInAllocatedSize);
114 virtual bool handlesPendingWrites()
const;
117 virtual void informPendingWriteSize(uint64 numBytesWritePending,
bool const fromResourcePack);
120 virtual uint64 estimatePendingWriteDiskSize(uint64 rawFileSize)
const;
123 virtual void informStorageAreaCopy(uint64 storageAreaSize);
126 virtual bool supportsExtendSize()
const;
129 virtual bool canExtendSize()
const;
132 virtual void resetCanAttemptExtendSize();
135 virtual ::Core::Result getExtendSizeThreshold(uint64& outExtendSizeThreshold)
const;
138 virtual void attemptExtendSize(int64
const& currentFreeSpace, ::std::function<
void()> onCompleteCallback);
141 virtual void preemptiveExtendSize(
142 uint64
const expectedContentSize,
143 ::std::function<
void()> successCallback,
144 ::std::function<
void()> failureCallback
148 virtual uint64 getAvailableUserStorageSize();
151 virtual void unloadFlatFileManifests(
bool shouldClearManifests);
157 virtual void flushImmediately();
160 virtual void enableFlushToDisk(
bool);
163 virtual void enableSequentialWrites(
bool);
166 virtual bool checkCorrupt(
bool handleCorruption);
169 virtual ::Bedrock::NonOwnerPointer<::Core::FileIndexLru> getFileIndexLru();
172 virtual ::Core::FileStorageArea::FlushableLevelDbEnvType getFlushableLevelDbEnvType()
const;
175 virtual uint64 getTransactionWriteSizeLimit()
const;
181 virtual bool shouldAllowCommit()
const;
184 virtual void trackBytesWritten(
::Core::PathView targetPath, uint64 amount, ::Core::WriteOperation writeOperation);
187 virtual void trackWriteOperation(
::Core::PathView targetPath, ::Core::WriteOperation writeOperation);
190 virtual ::Core::FileStorageArea::StorageAreaSpaceInfo getStorageAreaSpaceInfo();
193 virtual ::std::optional<::std::string> getIntegrityResults()
const;
196 virtual ::Core::Result _commit();
199 virtual ::Core::Result _onTransactionsEmpty(
bool fromChild);
202 virtual void _onTeardown();
209 ::Core::FileAccessType type,
212 bool isAccessedDirectly,
213 ::std::shared_ptr<::Core::FileStorageArea> parent
238 MCNAPI static ::Core::Result
241 MCNAPI static ::Core::Result
259 ::Core::FileAccessType type,
262 bool isAccessedDirectly,
263 ::std::shared_ptr<::Core::FileStorageArea> parent
276 MCNAPI ::std::unique_ptr<::Core::FileSystemImpl>
301 MCNAPI
void $attemptExtendSize(int64
const& currentFreeSpace, ::std::function<
void()> onCompleteCallback);
304 uint64
const expectedContentSize,
305 ::std::function<
void()> successCallback,
306 ::std::function<
void()> failureCallback
Definition FileStorageArea.h:24
MCAPI void notifyCriticalDiskError(::Core::LevelStorageState const &errorCode)
MCAPI void _addWriteOperation(bool succeeded, uint64 numBytesWritten)
MCAPI bool isOutOfDiskSpaceError() const
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 void _notifyEndWrite()
MCAPI::Core::Result $setSaveDataIcon(::Core::PathView iconPath)
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)
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
MCAPI::Core::Result $getExtendSizeThreshold(uint64 &outExtendSizeThreshold) 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:31
Definition FileStorageArea.h:38