22class FileStorageArea :
public ::std::enable_shared_from_this<::Core::FileStorageArea> {
30 enum class FlushableLevelDbEnvType :
int {
87 virtual ::std::unique_ptr<::Core::FileSystemImpl> createTransaction(::Core::FileAccessType) = 0;
90 virtual ::std::unique_ptr<::Core::FileSystemImpl>
91 createTransaction(::Core::FileAccessType fileAccessType, ::Core::TransactionFlags);
94 virtual bool supportsSizeQuery()
const = 0;
97 virtual uint64 getTotalSize()
const = 0;
100 virtual ::Core::Result getUsedSize(uint64&) = 0;
103 virtual void setUsedSizeOverride(uint64);
106 virtual void clearUsedSizeOverride();
109 virtual void notifyChangeInFileSize(int64 changeInSize, int64 changeInAllocatedSize);
112 virtual bool handlesPendingWrites()
const;
115 virtual void informPendingWriteSize(uint64 numBytesWritePending,
bool const fromResourcePack);
118 virtual uint64 estimatePendingWriteDiskSize(uint64 rawFileSize)
const;
121 virtual void informStorageAreaCopy(uint64 storageAreaSize);
124 virtual bool supportsExtendSize()
const;
127 virtual bool canExtendSize()
const;
130 virtual void resetCanAttemptExtendSize();
133 virtual ::Core::Result getExtendSizeThreshold(uint64& outExtendSizeThreshold)
const;
136 virtual void attemptExtendSize(int64
const& currentFreeSpace, ::std::function<
void()> onCompleteCallback);
139 virtual void preemptiveExtendSize(
140 uint64
const expectedContentSize,
141 ::std::function<
void()> successCallback,
142 ::std::function<
void()> failureCallback
146 virtual uint64 getAvailableUserStorageSize();
149 virtual void unloadFlatFileManifests(
bool shouldClearManifests);
155 virtual void flushImmediately();
158 virtual void enableFlushToDisk(
bool);
161 virtual bool checkCorrupt(
bool handleCorruption);
164 virtual ::Core::FileStorageArea::FlushableLevelDbEnvType getFlushableLevelDbEnvType()
const;
167 virtual uint64 getTransactionWriteSizeLimit()
const;
173 virtual bool shouldAllowCommit()
const;
176 virtual void trackBytesWritten(
::Core::PathView targetPath, uint64 amount, ::Core::WriteOperation writeOperation);
179 virtual void trackWriteOperation(
::Core::PathView targetPath, ::Core::WriteOperation writeOperation);
182 virtual ::Core::FileStorageArea::StorageAreaSpaceInfo getStorageAreaSpaceInfo();
185 virtual ::Core::Result _commit();
188 virtual ::Core::Result _onTransactionsEmpty(
bool fromChild);
191 virtual void _onTeardown();
198 ::Core::FileAccessType type,
202 ::std::shared_ptr<::Core::FileStorageArea> isAccessedDirectly
205 MCAPI
void _addReadOperation(
bool succeeded, uint64 numBytesRead);
207 MCAPI
void _addWriteOperation(
bool succeeded, uint64 numBytesWritten);
213 MCAPI
void _notifyEndWrite();
215 MCAPI
bool canWrite()
const;
217 MCAPI
void checkUserStorage();
219 MCAPI
bool isOutOfDiskSpaceError()
const;
221 MCAPI
void notifyCriticalDiskError(::Core::LevelStorageState
const& errorCode);
227 MCAPI static ::Core::Result
228 _getStorageAreaForPathImpl(::std::shared_ptr<::Core::FileStorageArea>& fileStorageArea,
::Core::PathView path);
230 MCAPI static ::Core::Result
231 getStorageAreaForPath(::std::shared_ptr<::Core::FileStorageArea>& fileStorageArea,
::Core::PathView path);
237 MCAPI static ::std::vector<::Core::FileStats*>& sStorageAreaFileStats();
239 MCAPI static ::std::recursive_mutex& sStorageAreaLock();
241 MCAPI static ::Core::StorageAreasTree& sStorageAreas();
248 ::Core::FileAccessType type,
252 ::std::shared_ptr<::Core::FileStorageArea> isAccessedDirectly
265 MCFOLD ::std::unique_ptr<::Core::FileSystemImpl>
266 $createTransaction(::Core::FileAccessType fileAccessType, ::Core::TransactionFlags);
268 MCFOLD
void $setUsedSizeOverride(uint64);
270 MCFOLD
void $clearUsedSizeOverride();
272 MCAPI
void $notifyChangeInFileSize(int64 changeInSize, int64 changeInAllocatedSize);
274 MCFOLD
bool $handlesPendingWrites()
const;
276 MCFOLD
void $informPendingWriteSize(uint64 numBytesWritePending,
bool const fromResourcePack);
278 MCFOLD uint64 $estimatePendingWriteDiskSize(uint64 rawFileSize)
const;
280 MCFOLD
void $informStorageAreaCopy(uint64 storageAreaSize);
282 MCFOLD
bool $supportsExtendSize()
const;
284 MCFOLD
bool $canExtendSize()
const;
286 MCAPI
void $resetCanAttemptExtendSize();
288 MCAPI ::Core::Result $getExtendSizeThreshold(uint64& outExtendSizeThreshold)
const;
290 MCAPI
void $attemptExtendSize(int64
const& currentFreeSpace, ::std::function<
void()> onCompleteCallback);
292 MCAPI
void $preemptiveExtendSize(
293 uint64
const expectedContentSize,
294 ::std::function<
void()> successCallback,
295 ::std::function<
void()> failureCallback
298 MCAPI uint64 $getAvailableUserStorageSize();
300 MCAPI
void $unloadFlatFileManifests(
bool shouldClearManifests);
304 MCFOLD
void $flushImmediately();
306 MCFOLD
void $enableFlushToDisk(
bool);
308 MCFOLD
bool $checkCorrupt(
bool handleCorruption);
310 MCFOLD ::Core::FileStorageArea::FlushableLevelDbEnvType $getFlushableLevelDbEnvType()
const;
312 MCFOLD uint64 $getTransactionWriteSizeLimit()
const;
316 MCAPI
bool $shouldAllowCommit()
const;
318 MCAPI
void $trackBytesWritten(
::Core::PathView targetPath, uint64 amount, ::Core::WriteOperation writeOperation);
320 MCAPI
void $trackWriteOperation(
::Core::PathView targetPath, ::Core::WriteOperation writeOperation);
322 MCAPI ::Core::FileStorageArea::StorageAreaSpaceInfo $getStorageAreaSpaceInfo();
324 MCFOLD ::Core::Result $_commit();
326 MCFOLD ::Core::Result $_onTransactionsEmpty(
bool fromChild);
328 MCFOLD
void $_onTeardown();
334 MCAPI
static void** $vftable();