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"
17namespace Core {
class FileImpl; }
18namespace Core {
class FileOpenMode; }
19namespace Core {
class FileStats; }
20namespace Core {
class FileStorageArea; }
21namespace Core {
class FlatFileManifestTracker; }
22namespace Core {
class PathView; }
23namespace Core {
class Result; }
24namespace Core {
struct DirectoryIterationItem; }
25namespace Core {
struct ExcludedPath; }
26namespace Core {
struct PendingWrite; }
60 virtual ::Core::Result getLastModificationTime(
::Core::PathView entryPath, int64* lastModificationTime);
66 virtual void requestFlush(::std::vector<::Core::PendingWrite>
const& writeRequests);
69 virtual bool shouldCommit();
72 virtual ::Core::CrossStorageCopyMode getCrossStorageCopyMode();
75 virtual uint64 getTransactionWriteSizeLimit()
const;
78 virtual ::Core::Result _openFile(
79 ::std::unique_ptr<::Core::FileImpl>&,
82 ::Core::FileBufferingMode
107 virtual ::Core::Result _copyFileWithLimit(
110 uint64 startPosition,
111 uint64& outBytesWritten,
112 uint64& outBytesRemaining
116 virtual ::Core::Result _readFileData(
::Core::PathView filePath, ::std::vector<uchar>& data);
122 virtual ::Core::Result _createOneDirectoryIfNotExisting(
::Core::PathView directoryPath);
125 virtual ::Core::Result _createDirectoryRecursively(
::Core::PathView directoryPath);
134 virtual ::Core::Result _deleteDirectoryAndContentsRecursively(
::Core::PathView directoryPath);
137 virtual ::Core::Result _deleteDirectoryContentsRecursively(
::Core::PathView directoryPath);
140 virtual ::Core::Result _deleteRecursively(
::Core::PathView directoryPath, ::Core::FileType deleteFileType);
146 virtual ::Core::Result _iterateOverDirectory(
148 ::Core::DirectoryIterationFlags,
153 virtual ::Core::Result
157 virtual ::Core::Result _getDirectoryFilesRecursively(
163 virtual ::Core::Result _getDirectoryFilesSizeRecursively(uint64& totalSize,
::Core::PathView directoryPath);
166 virtual ::Core::Result _getDirectoryFilesAllocatedSizeRecursively(
168 uint64& totalSizeAllocated,
173 virtual ::Core::Result
180 virtual ::Core::Result _getFileOrDirectorySize(
::Core::PathView entryName, uint64* pFileSizeOut);
183 virtual ::Core::Result _getEntryType(
::Core::PathView, ::Core::FileType&) = 0;
201 virtual ::Core::Result _flatFileIterateOverDirectory(
204 ::Core::DirectoryIterationFlags flags,
212 virtual ::Core::Result _copyFlatFile(
215 ::std::vector<::Core::ExcludedPath>
const& excludedDirectories,
216 ::std::vector<::Core::ExcludedPath>
const& excludedFiles
220 virtual ::Core::Result _flatFileDeleteFileOrDirectory(
223 bool directoryDeleteEnabled,
224 bool deleteRecursively
228 virtual ::Core::Result
232 virtual ::Core::Result _getLastModificationTime(
::Core::PathView, int64*) = 0;
238 virtual ::Core::Result _endTransaction();
241 virtual ::Core::Result _writeOperation(
245 uint64 numBytesWritten
249 virtual void _initializeInternal();
256 ::Core::FileAccessType accessType,
257 ::std::shared_ptr<::Core::FileStorageArea> storageArea,
258 ::Core::TransactionFlags transactionFlags,
259 ::std::shared_ptr<::Core::FlatFileManifestTracker> manifestTracker
263 ::std::unique_ptr<::Core::FileImpl>& fileOut,
267 ::Core::FileBufferingMode fileBufferingMode
278 uint64 numBytesWritten
283 MCNAPI ::Core::Result
291 uint64 startPosition,
292 uint64& outBytesWritten,
293 uint64& outBytesRemaining
326 ::Core::DirectoryIterationFlags flags,
331 ::std::unique_ptr<::Core::FileImpl>& fileOut,
334 ::Core::FileBufferingMode fileBufferingMode
351 MCNAPI static ::Core::FileStats&
sStats();
358 ::Core::FileAccessType accessType,
359 ::std::shared_ptr<::Core::FileStorageArea> storageArea,
360 ::Core::TransactionFlags transactionFlags,
361 ::std::shared_ptr<::Core::FlatFileManifestTracker> manifestTracker
372 MCNAPI
void $requestFlush(::std::vector<::Core::PendingWrite>
const& writeRequests);
389 uint64 startPosition,
390 uint64& outBytesWritten,
391 uint64& outBytesRemaining
406 MCNAPI ::Core::Result
418 uint64& totalSizeAllocated,
422 MCNAPI ::Core::Result
440 ::Core::DirectoryIterationFlags flags,
449 ::std::vector<::Core::ExcludedPath>
const& excludedDirectories,
450 ::std::vector<::Core::ExcludedPath>
const& excludedFiles
456 bool directoryDeleteEnabled,
457 bool deleteRecursively
460 MCNAPI ::Core::Result
469 uint64 numBytesWritten
Definition FileOpenMode.h:7
Definition FileStorageArea.h:24
Definition FileSystemImpl.h:31
MCAPI::Core::Result renameDirectory(::Core::PathView sourceDirectoryPath, ::Core::PathView targetDirectoryPath)
MCAPI void $requestFlush(::std::vector<::Core::PendingWrite > const &writeRequests)
MCAPI bool isDirectoryPathAFlatFile(::Core::PathView directoryPath)
MCAPI::Core::Result $_deleteDirectoryAndContentsRecursively(::Core::PathView directoryPath)
MCAPI::Core::Result $_removeIgnoredThrottlePath(::Core::PathView)
MCAPI::Core::Result $_createEmptyFile(::Core::PathView fileName)
MCAPI bool fileOrDirectoryExists(::Core::PathView entryPath)
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 $_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 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 PathBuffer.h:8
Definition function_ref.h:60
Definition DirectoryIterationItem.h:15