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>& uptFileOut,
71 ::Core::FileBufferingMode bufferingMode
80 virtual ::Core::Result _getFileSize(
::Core::PathView filePath, uint64* pFileSizeOut) = 0;
88 virtual ::Core::Result _copyFileWithLimit(
92 uint64& outBytesWritten,
93 uint64& outBytesRemaining
96 virtual ::Core::Result
99 virtual ::Core::Result _writeFileData(
::Core::PathView filePath,
void const* data, uint64 size);
101 virtual ::Core::Result _createOneDirectory(
::Core::PathView directoryPath) = 0;
103 virtual ::Core::Result _createOneDirectoryIfNotExisting(
::Core::PathView directoryPath);
105 virtual ::Core::Result _createDirectoryRecursively(
::Core::PathView directoryPath);
109 virtual ::Core::Result _deleteEmptyDirectory(
::Core::PathView directoryPath) = 0;
111 virtual ::Core::Result _deleteDirectoryAndContentsRecursively(
::Core::PathView directoryPath);
113 virtual ::Core::Result _deleteDirectoryContentsRecursively(
::Core::PathView directoryPath);
115 virtual ::Core::Result _deleteRecursively(
::Core::PathView directoryPath, ::Core::FileType deleteFileType);
117 virtual ::Core::Result
120 virtual ::Core::Result _iterateOverDirectory(
122 ::Core::DirectoryIterationFlags flags,
126 virtual ::Core::Result
129 virtual ::Core::Result _getDirectoryFilesRecursively(
134 virtual ::Core::Result _getDirectoryFilesSizeRecursively(uint64& totalSize,
::Core::PathView directoryPath);
136 virtual ::Core::Result _getDirectoryFilesAllocatedSizeRecursively(
138 uint64& totalSizeAllocated,
142 virtual ::Core::Result
147 virtual ::Core::Result _getFileOrDirectorySize(
::Core::PathView entryName, uint64* pFileSizeOut);
149 virtual ::Core::Result _getEntryType(
::Core::PathView entryPath, ::Core::FileType& fileTypeOut) = 0;
161 virtual ::Core::Result _flatFileIterateOverDirectory(
164 ::Core::DirectoryIterationFlags flags,
170 virtual ::Core::Result _copyFlatFile(
173 ::std::vector<::Core::ExcludedPath>
const& excludedDirectories,
174 ::std::vector<::Core::ExcludedPath>
const& excludedFiles
177 virtual ::Core::Result _flatFileDeleteFileOrDirectory(
180 bool directoryDeleteEnabled,
181 bool deleteRecursively
184 virtual ::Core::Result
187 virtual ::Core::Result _getLastModificationTime(
::Core::PathView filePath, int64* pModificationTime) = 0;
189 virtual ::Core::Result
192 virtual ::Core::Result _endTransaction();
194 virtual ::Core::Result _writeOperation(
198 uint64 numBytesWritten
201 virtual void _initializeInternal();
208 ::Core::FileAccessType accessType,
209 ::std::shared_ptr<::Core::FileStorageArea> storageArea,
210 ::Core::TransactionFlags transactionFlags,
211 ::std::shared_ptr<::Core::FlatFileManifestTracker> manifestTracker
215 ::std::unique_ptr<::Core::FileImpl>& fileOut,
219 ::Core::FileBufferingMode fileBufferingMode
230 uint64 numBytesWritten
235 MCNAPI ::Core::Result
243 uint64 startPosition,
244 uint64& outBytesWritten,
245 uint64& outBytesRemaining
251 ::std::vector<::Core::ExcludedPath>
const& excludedDirectories,
252 ::std::vector<::Core::ExcludedPath>
const& excludedFiles
291 ::Core::DirectoryIterationFlags flags,
296 ::std::unique_ptr<::Core::FileImpl>& fileOut,
299 ::Core::FileBufferingMode fileBufferingMode
316 MCNAPI static ::Core::FileStats&
sStats();
323 ::Core::FileAccessType accessType,
324 ::std::shared_ptr<::Core::FileStorageArea> storageArea,
325 ::Core::TransactionFlags transactionFlags,
326 ::std::shared_ptr<::Core::FlatFileManifestTracker> manifestTracker
358 uint64 startPosition,
359 uint64& outBytesWritten,
360 uint64& outBytesRemaining
363 MCNAPI ::Core::Result
378 MCNAPI ::Core::Result
390 uint64& totalSizeAllocated,
394 MCNAPI ::Core::Result
412 ::Core::DirectoryIterationFlags flags,
421 ::std::vector<::Core::ExcludedPath>
const& excludedDirectories,
422 ::std::vector<::Core::ExcludedPath>
const& excludedFiles
428 bool directoryDeleteEnabled,
429 bool deleteRecursively
432 MCNAPI ::Core::Result
441 uint64 numBytesWritten
Definition FileOpenMode.h:7
Definition FileStorageArea.h:32
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 $_readFileData(::Core::PathView filePath, ::brstd::function_ref< void *(uint64)> data, uint64 *bytesRead)
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 $_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::Core::Result $_writeFileData(::Core::PathView filePath, void const *data, uint64 size)
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