3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/deps/core/file/DirectoryIterationFlags.h"
7#include "mc/deps/core/file/FileAccessType.h"
8#include "mc/deps/core/file/FileBufferingMode.h"
9#include "mc/deps/core/file/FileType.h"
10#include "mc/deps/core/file/PathBuffer.h"
11#include "mc/deps/core/file/file_system/CrossStorageCopyMode.h"
12#include "mc/deps/core/file/file_system/TransactionFlags.h"
13#include "mc/platform/brstd/function_ref.h"
23namespace Core {
class Result; }
48 FileSystemImpl& operator=(FileSystemImpl
const&);
49 FileSystemImpl(FileSystemImpl
const&);
55 virtual ~FileSystemImpl();
57 virtual ::Core::Result getLastModificationTime(
::Core::PathView entryPath, int64* lastModificationTime);
61 virtual bool shouldCommit();
63 virtual ::Core::CrossStorageCopyMode getCrossStorageCopyMode();
65 virtual uint64 getTransactionWriteSizeLimit()
const;
67 virtual ::Core::Result _openFile(
68 ::std::unique_ptr<::Core::FileImpl>&,
71 ::Core::FileBufferingMode
88 virtual ::Core::Result _copyFileWithLimit(
92 uint64& outBytesWritten,
93 uint64& outBytesRemaining
96 virtual ::Core::Result _readFileData(
::Core::PathView filePath, ::std::vector<uchar>& data);
100 virtual ::Core::Result _createOneDirectoryIfNotExisting(
::Core::PathView directoryPath);
102 virtual ::Core::Result _createDirectoryRecursively(
::Core::PathView directoryPath);
108 virtual ::Core::Result _deleteDirectoryAndContentsRecursively(
::Core::PathView directoryPath);
110 virtual ::Core::Result _deleteDirectoryContentsRecursively(
::Core::PathView directoryPath);
112 virtual ::Core::Result _deleteRecursively(
::Core::PathView directoryPath, ::Core::FileType deleteFileType);
116 virtual ::Core::Result _iterateOverDirectory(
118 ::Core::DirectoryIterationFlags,
122 virtual ::Core::Result
125 virtual ::Core::Result _getDirectoryFilesRecursively(
130 virtual ::Core::Result _getDirectoryFilesSizeRecursively(uint64& totalSize,
::Core::PathView directoryPath);
132 virtual ::Core::Result _getDirectoryFilesAllocatedSizeRecursively(
134 uint64& totalSizeAllocated,
138 virtual ::Core::Result
143 virtual ::Core::Result _getFileOrDirectorySize(
::Core::PathView entryName, uint64* pFileSizeOut);
145 virtual ::Core::Result _getEntryType(
::Core::PathView, ::Core::FileType&) = 0;
157 virtual ::Core::Result _flatFileIterateOverDirectory(
160 ::Core::DirectoryIterationFlags flags,
166 virtual ::Core::Result _copyFlatFile(
169 ::std::vector<::Core::ExcludedPath>
const& excludedDirectories,
170 ::std::vector<::Core::ExcludedPath>
const& excludedFiles
173 virtual ::Core::Result _flatFileDeleteFileOrDirectory(
176 bool directoryDeleteEnabled,
177 bool deleteRecursively
180 virtual ::Core::Result
183 virtual ::Core::Result _getLastModificationTime(
::Core::PathView, int64*) = 0;
187 virtual ::Core::Result _endTransaction();
189 virtual ::Core::Result _writeOperation(
193 uint64 numBytesWritten
196 virtual void _initializeInternal();
203 ::Core::FileAccessType accessType,
204 ::std::shared_ptr<::Core::FileStorageArea> storageArea,
205 ::Core::TransactionFlags transactionFlags,
206 ::std::shared_ptr<::Core::FlatFileManifestTracker> manifestTracker
210 ::std::unique_ptr<::Core::FileImpl>& fileOut,
214 ::Core::FileBufferingMode fileBufferingMode
225 uint64 numBytesWritten
230 MCNAPI ::Core::Result
238 uint64 startPosition,
239 uint64& outBytesWritten,
240 uint64& outBytesRemaining
246 ::std::vector<::Core::ExcludedPath>
const& excludedDirectories,
247 ::std::vector<::Core::ExcludedPath>
const& excludedFiles
286 ::Core::DirectoryIterationFlags flags,
291 ::std::unique_ptr<::Core::FileImpl>& fileOut,
294 ::Core::FileBufferingMode fileBufferingMode
311 MCNAPI static ::Core::FileStats&
sStats();
318 ::Core::FileAccessType accessType,
319 ::std::shared_ptr<::Core::FileStorageArea> storageArea,
320 ::Core::TransactionFlags transactionFlags,
321 ::std::shared_ptr<::Core::FlatFileManifestTracker> manifestTracker
353 uint64 startPosition,
354 uint64& outBytesWritten,
355 uint64& outBytesRemaining
370 MCNAPI ::Core::Result
382 uint64& totalSizeAllocated,
386 MCNAPI ::Core::Result
404 ::Core::DirectoryIterationFlags flags,
413 ::std::vector<::Core::ExcludedPath>
const& excludedDirectories,
414 ::std::vector<::Core::ExcludedPath>
const& excludedFiles
420 bool directoryDeleteEnabled,
421 bool deleteRecursively
424 MCNAPI ::Core::Result
433 uint64 numBytesWritten
Definition FileOpenMode.h:7
Definition FileStorageArea.h:26
MCAPI::Core::Result renameDirectory(::Core::PathView sourceDirectoryPath, ::Core::PathView targetDirectoryPath)
MCAPI bool isDirectoryPathAFlatFile(::Core::PathView directoryPath)
MCAPI::Core::Result $_deleteDirectoryAndContentsRecursively(::Core::PathView directoryPath)
MCAPI ::std::shared_ptr<::Core::FlatFileManifestTracker > getFlatFileManifestTracker() const
MCAPI::Core::Result $_removeIgnoredThrottlePath(::Core::PathView)
MCAPI::Core::Result $_createEmptyFile(::Core::PathView fileName)
MCAPI bool fileOrDirectoryExists(::Core::PathView entryPath)
MCAPI::Core::Result copyFlatFile(::Core::PathView flatFileParentDirectory, ::Core::PathView targetDirectory, ::std::vector<::Core::ExcludedPath > const &excludedDirectories, ::std::vector<::Core::ExcludedPath > const &excludedFiles)
static MCAPI ::Core::Result isValidPath(::Core::PathView path)
MCAPI bool directoryExists(::Core::PathView directoryPath)
MCAPI bool $_flatFileDirectoryExists(::Core::PathView directoryPath, ::Core::PathView manifestPath)
MCAPI::Core::Result _flatFileOpenFlatFile(::std::unique_ptr<::Core::FileImpl > &fileOut, ::Core::PathView filePath, ::Core::PathView manifestPath, ::Core::FileOpenMode openMode, ::Core::FileBufferingMode fileBufferingMode)
MCAPI::Core::Result $_readFileData(::Core::PathView filePath, ::std::vector< uchar > &data)
MCAPI::Core::Result $_copyFileWithLimit(::Core::PathView sourceFileName, ::Core::PathView targetFileName, uint64 startPosition, uint64 &outBytesWritten, uint64 &outBytesRemaining)
MCAPI bool fileExists(::Core::PathView filePath)
MCAPI::Core::Result $_addIgnoredThrottlePath(::Core::PathView)
MCAPI::Core::Result $_endTransaction()
MCAPI::Core::Result createFlatFile(::Core::PathView sourceDirectoryPath, ::Core::PathView targetDirectoryPath)
MCAPI::Core::Result $_createDirectoryRecursively(::Core::PathView directoryPath)
MCAPI::Core::Result $_deleteDirectoryContentsRecursively(::Core::PathView directoryPath)
MCAPI::Core::Result _readOperation(::Core::Result &&result, uint64 numBytesRead)
MCAPI::Core::Result $_createOneDirectoryIfNotExisting(::Core::PathView directoryPath)
MCAPI void * $ctor(::Core::FileAccessType accessType, ::std::shared_ptr<::Core::FileStorageArea > storageArea, ::Core::TransactionFlags transactionFlags, ::std::shared_ptr<::Core::FlatFileManifestTracker > manifestTracker)
MCAPI::Core::Result iterateOverDirectory(::Core::PathView directoryPath, ::Core::DirectoryIterationFlags flags, ::brstd::function_ref<::Core::Result(::Core::DirectoryIterationItem const &)> callbackFunction)
MCAPI::Core::Result $_getDirectoryFilesSizeRecursively(uint64 &totalSize, ::Core::PathView directoryPath)
MCAPI::Core::Result $_deleteRecursively(::Core::PathView directoryPath, ::Core::FileType deleteFileType)
MCAPI bool $_flatFileFileExists(::Core::PathView filePath, ::Core::PathView manifestPath)
MCAPI void $_initializeInternal()
MCAPI::Core::Result $_getDirectoryFiles(::std::vector<::Core::PathBuffer<::std::string > > &files, ::Core::PathView directoryPath)
MCAPI::Core::Result $_copyFile(::Core::PathView sourceFileName, ::Core::PathView targetFileName)
MCAPI::Core::Result commit()
MCAPI::Core::CrossStorageCopyMode $getCrossStorageCopyMode()
MCAPI::Core::Result createOneDirectoryIfNotExisting(::Core::PathView directoryPath)
MCAPI::Core::Result $_flatFileIterateOverDirectory(::Core::PathView directoryPath, ::Core::PathView manifestPath, ::Core::DirectoryIterationFlags flags, ::brstd::function_ref<::Core::Result(::Core::DirectoryIterationItem const &)> callbackFunction)
MCAPI::Core::Result $_flatFileGetFileSize(::Core::PathView filePath, ::Core::PathView manifestPath, uint64 *pFileSize)
MCAPI::Core::Result $getLastModificationTime(::Core::PathView entryPath, int64 *lastModificationTime)
MCAPI::Core::Result $_getDirectoryFilesAllocatedSizeRecursively(uint64 &totalSize, uint64 &totalSizeAllocated, ::Core::PathView directoryPath)
MCAPI::Core::Result $_writeOperation(::Core::PathView fullPath, ::Core::Result &&result, ::std::function< void(::Core::FileStorageArea *)> observerCallOrNull, uint64 numBytesWritten)
MCAPI::Core::Result copyFile(::Core::PathView sourceFilePath, ::Core::PathView targetFilePath)
MCAPI::Core::Result getFileSize(::Core::PathView filePath, uint64 *pFileSize)
MCAPI::Core::Result _readWriteOperation(::Core::Result &&result, ::std::function< void(::Core::FileStorageArea *)> observerCallOrNull, uint64 numBytesRead, uint64 numBytesWritten)
MCAPI void enumerateFiles(::std::function< void(::Core::FileImpl *)> const &fx)
MCAPI::Core::Result createEmptyFile(::Core::PathView filePath)
MCAPI::Core::Result _flatFileUnloadManifest(::Core::PathView filePath)
MCAPI::Core::Result openFile(::std::unique_ptr<::Core::FileImpl > &fileOut, ::Core::PathView filePath, ::Core::FileOpenMode openMode, ::Core::FileBufferingMode fileBufferingMode)
static MCAPI void ** $vftable()
MCAPI::Core::Result renameFile(::Core::PathView sourceFilePath, ::Core::PathView targetFilePath)
MCAPI::Core::Result deleteDirectoryContentsRecursively(::Core::PathView directoryPath)
MCAPI::Core::Result $copyTimeAndAccessRights(::Core::PathView sourceFilePath, ::Core::PathView targetFilePath)
MCAPI::Core::Result $_getFileOrDirectorySize(::Core::PathView entryName, uint64 *pFileSizeOut)
MCAPI FileSystemImpl(::Core::FileAccessType accessType, ::std::shared_ptr<::Core::FileStorageArea > storageArea, ::Core::TransactionFlags transactionFlags, ::std::shared_ptr<::Core::FlatFileManifestTracker > manifestTracker)
static MCAPI ::Core::FileStats & sStats()
MCAPI::Core::Result $_copyFlatFile(::Core::PathView sourceDirectoryPath, ::Core::PathView targetDirectoryPath, ::std::vector<::Core::ExcludedPath > const &excludedDirectories, ::std::vector<::Core::ExcludedPath > const &excludedFiles)
MCAPI::Core::Result copyFileWithLimit(::Core::PathView sourceFileName, ::Core::PathView targetFileName, uint64 startPosition, uint64 &outBytesWritten, uint64 &outBytesRemaining)
MCAPI::Core::Result $_createFlatFile(::Core::PathView sourceDirectoryPath, ::Core::PathView targetDirectoryPath)
MCAPI::Core::Result deleteDirectoryAndContentsRecursively(::Core::PathView directoryPath)
MCAPI::Core::Result $_getDirectoryFilesRecursively(::std::vector<::Core::PathBuffer<::std::string > > &filesOut, ::Core::PathView directoryPath)
MCAPI::Core::Result deleteFilePriority(::Core::PathView filePath)
MCAPI::Core::Result $_flatFileDeleteFileOrDirectory(::Core::PathView fileOrDirectoryPath, ::Core::PathView manifestPath, bool directoryDeleteEnabled, bool deleteRecursively)
MCAPI::Core::Result createOneDirectory(::Core::PathView directoryPath)
MCAPI::Core::Result copyDirectoryAndContentsRecursively(::Core::PathView sourceDirectoryPath, ::Core::PathView targetDirectoryPath)
MCAPI bool $_isDirectoryPathAFlatFile(::Core::PathView directoryPath)
MCAPI::Core::Result $_deleteFilePriority(::Core::PathView filePath)
MCAPI::Core::Result deleteEmptyDirectory(::Core::PathView directoryPath)
MCAPI uint64 $getTransactionWriteSizeLimit() const
MCAPI::Core::Result $_copyDirectoryAndContentsRecursively(::Core::PathView sourceDirectoryPath, ::Core::PathView targetDirectoryPath)
MCAPI::Core::Result deleteFile(::Core::PathView filePath)
MCAPI::Core::Result createDirectoryRecursively(::Core::PathView directoryPath)
MCAPI bool $shouldCommit()
Definition FlatFileManifestTracker.h:13
Definition PathBuffer.h:8
Definition function_ref.h:60
Definition DirectoryIterationItem.h:12
Definition ExcludedPath.h:10