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/threading/BasicLockbox.h"
10#include "mc/deps/core/utility/NonOwnerPointer.h"
14namespace Bedrock::Threading {
class Mutex; }
19namespace Core {
class Result; }
26class FileStorageArea :
public ::std::enable_shared_from_this<::Core::FileStorageArea> {
34 enum class FlushableLevelDbEnvType :
int {
40 struct StorageAreaSpaceInfo {
52 StorageAreaSpaceInfo& operator=(StorageAreaSpaceInfo
const&);
53 StorageAreaSpaceInfo(StorageAreaSpaceInfo
const&);
54 StorageAreaSpaceInfo();
81 FileStorageArea& operator=(FileStorageArea
const&);
82 FileStorageArea(FileStorageArea
const&);
88 virtual ~FileStorageArea();
90 virtual ::std::unique_ptr<::Core::FileSystemImpl> createTransaction(::Core::FileAccessType) = 0;
92 virtual ::std::unique_ptr<::Core::FileSystemImpl>
93 createTransaction(::Core::FileAccessType fileAccessType, ::Core::TransactionFlags);
95 virtual bool supportsSizeQuery()
const = 0;
97 virtual uint64 getTotalSize()
const = 0;
99 virtual ::Core::Result getUsedSize(uint64&) = 0;
101 virtual void setUsedSizeOverride(uint64);
103 virtual void clearUsedSizeOverride();
105 virtual void notifyChangeInFileSize(int64 changeInSize, int64 changeInAllocatedSize);
107 virtual bool handlesPendingWrites()
const;
109 virtual void informPendingWriteSize(uint64 numBytesWritePending,
bool const fromResourcePack);
111 virtual uint64 estimatePendingWriteDiskSize(uint64 rawFileSize)
const;
113 virtual void informStorageAreaCopy(uint64 storageAreaSize);
115 virtual bool supportsExtendSize()
const;
117 virtual bool canExtendSize()
const;
119 virtual void resetCanAttemptExtendSize();
121 virtual ::Core::Result getExtendSizeThreshold(uint64&)
const;
123 virtual void attemptExtendSize(int64
const& currentFreeSpace, ::std::function<
void()> onCompleteCallback);
125 virtual void preemptiveExtendSize(
126 uint64
const expectedContentSize,
127 ::std::function<
void()> successCallback,
128 ::std::function<
void()> failureCallback
131 virtual uint64 getAvailableUserStorageSize();
133 virtual void unloadFlatFileManifests(
bool shouldClearManifests);
137 virtual void flushImmediately();
139 virtual void enableFlushToDisk(
bool);
141 virtual void enableSequentialWrites(
bool);
143 virtual bool checkCorrupt(
bool handleCorruption);
145 virtual ::Bedrock::NonOwnerPointer<::Core::FileIndexLru> getFileIndexLru();
147 virtual ::Core::FileStorageArea::FlushableLevelDbEnvType getFlushableLevelDbEnvType()
const;
149 virtual uint64 getTransactionWriteSizeLimit()
const;
153 virtual bool shouldAllowCommit()
const;
155 virtual void trackBytesWritten(
::Core::PathView targetPath, uint64 amount, ::Core::WriteOperation writeOperation);
157 virtual void trackWriteOperation(
::Core::PathView targetPath, ::Core::WriteOperation writeOperation);
159 virtual ::Core::FileStorageArea::StorageAreaSpaceInfo getStorageAreaSpaceInfo();
161 virtual bool shouldRecordFileError(
::Core::PathView, ::std::error_code)
const;
163 virtual ::Core::Result _commit();
165 virtual ::Core::Result _onTransactionsEmpty(
bool fromChild);
167 virtual void _onTeardown();
174 ::Core::FileAccessType type,
177 bool isAccessedDirectly,
178 ::std::shared_ptr<::Core::FileStorageArea> parent
201 MCNAPI static ::Core::Result
204 MCNAPI_C static ::Core::Result
205 getStorageAreaForPath(::std::shared_ptr<::Core::FileStorageArea>& fileStorageArea,
::Core::PathView path);
221 ::Core::FileAccessType type,
224 bool isAccessedDirectly,
225 ::std::shared_ptr<::Core::FileStorageArea> parent
238 MCNAPI ::std::unique_ptr<::Core::FileSystemImpl>
263 MCNAPI
void $attemptExtendSize(int64
const& currentFreeSpace, ::std::function<
void()> onCompleteCallback);
266 uint64
const expectedContentSize,
267 ::std::function<
void()> successCallback,
268 ::std::function<
void()> failureCallback
Definition FileIndexLru.h:13
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
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 uint64 $estimatePendingWriteDiskSize(uint64 rawFileSize) const
MCAPI bool $handlesPendingWrites() const
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 removeStateListener(::Core::StorageAreaStateListener *l)
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 ::Bedrock::Threading::BasicLockbox<::std::vector<::Core::FileStats * >, ::Bedrock::Threading::Mutex > & sStorageAreaFileStats()
MCAPI bool $supportsExtendSize() const
Definition FileSystemImpl.h:30
Definition StorageAreaStateListener.h:16
Definition StorageAreasTree.h:16
Definition FileStorageArea.h:40