LeviLamina
Loading...
Searching...
No Matches
FileSystemImpl.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
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"
14
15// auto generated forward declare list
16// clang-format off
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; }
27// clang-format on
28
29namespace Core {
30
32public:
33 // member variables
34 // NOLINTBEGIN
45 // NOLINTEND
46
47public:
48 // prevent constructor by default
49 FileSystemImpl& operator=(FileSystemImpl const&);
52
53public:
54 // virtual functions
55 // NOLINTBEGIN
56 // vIndex: 0
57 virtual ~FileSystemImpl() = default;
58
59 // vIndex: 1
60 virtual ::Core::Result getLastModificationTime(::Core::PathView entryPath, int64* lastModificationTime);
61
62 // vIndex: 2
63 virtual ::Core::Result copyTimeAndAccessRights(::Core::PathView sourceFilePath, ::Core::PathView targetFilePath);
64
65 // vIndex: 3
66 virtual void requestFlush(::std::vector<::Core::PendingWrite> const& writeRequests);
67
68 // vIndex: 4
69 virtual bool shouldCommit();
70
71 // vIndex: 5
72 virtual ::Core::CrossStorageCopyMode getCrossStorageCopyMode();
73
74 // vIndex: 6
75 virtual uint64 getTransactionWriteSizeLimit() const;
76
77 // vIndex: 7
78 virtual ::Core::Result _openFile(
79 ::std::unique_ptr<::Core::FileImpl>&,
82 ::Core::FileBufferingMode
83 ) = 0;
84
85 // vIndex: 8
86 virtual bool _fileExists(::Core::PathView) = 0;
87
88 // vIndex: 9
89 virtual ::Core::Result _deleteFile(::Core::PathView) = 0;
90
91 // vIndex: 10
92 virtual ::Core::Result _getFileSize(::Core::PathView, uint64*) = 0;
93
94 // vIndex: 11
95 virtual ::Core::Result _renameFile(::Core::PathView, ::Core::PathView) = 0;
96
97 // vIndex: 12
98 virtual ::Core::Result _createEmptyFile(::Core::PathView fileName);
99
100 // vIndex: 13
101 virtual ::Core::Result _copyFile(::Core::PathView sourceFileName, ::Core::PathView targetFileName);
102
103 // vIndex: 14
104 virtual ::Core::Result _copyFileWithLimit(
105 ::Core::PathView sourceFileName,
106 ::Core::PathView targetFileName,
107 uint64 startPosition,
108 uint64& outBytesWritten,
109 uint64& outBytesRemaining
110 );
111
112 // vIndex: 15
113 virtual ::Core::Result _readFileData(::Core::PathView filePath, ::std::vector<uchar>& data);
114
115 // vIndex: 16
116 virtual ::Core::Result _createOneDirectory(::Core::PathView) = 0;
117
118 // vIndex: 17
119 virtual ::Core::Result _createOneDirectoryIfNotExisting(::Core::PathView directoryPath);
120
121 // vIndex: 18
122 virtual ::Core::Result _createDirectoryRecursively(::Core::PathView directoryPath);
123
124 // vIndex: 19
125 virtual bool _directoryExists(::Core::PathView) = 0;
126
127 // vIndex: 20
128 virtual ::Core::Result _deleteEmptyDirectory(::Core::PathView) = 0;
129
130 // vIndex: 21
131 virtual ::Core::Result _deleteDirectoryAndContentsRecursively(::Core::PathView directoryPath);
132
133 // vIndex: 22
134 virtual ::Core::Result _deleteDirectoryContentsRecursively(::Core::PathView directoryPath);
135
136 // vIndex: 23
137 virtual ::Core::Result _deleteRecursively(::Core::PathView directoryPath, ::Core::FileType deleteFileType);
138
139 // vIndex: 24
140 virtual ::Core::Result _renameDirectory(::Core::PathView, ::Core::PathView) = 0;
141
142 // vIndex: 25
143 virtual ::Core::Result
144 _iterateOverDirectory(::Core::PathView, ::Core::DirectoryIterationFlags, ::brstd::function_ref<::Core::Result(::Core::DirectoryIterationItem const&)>) = 0;
145
146 // vIndex: 26
147 virtual ::Core::Result
148 _getDirectoryFiles(::std::vector<::Core::PathBuffer<::std::string>>& files, ::Core::PathView directoryPath);
149
150 // vIndex: 27
151 virtual ::Core::Result _getDirectoryFilesRecursively(
152 ::std::vector<::Core::PathBuffer<::std::string>>& filesOut,
153 ::Core::PathView directoryPath
154 );
155
156 // vIndex: 28
157 virtual ::Core::Result _getDirectoryFilesSizeRecursively(uint64& totalSize, ::Core::PathView directoryPath);
158
159 // vIndex: 29
160 virtual ::Core::Result _getDirectoryFilesAllocatedSizeRecursively(
161 uint64& totalSize,
162 uint64& totalSizeAllocated,
163 ::Core::PathView directoryPath
164 );
165
166 // vIndex: 30
167 virtual ::Core::Result
168 _copyDirectoryAndContentsRecursively(::Core::PathView sourceDirectoryPath, ::Core::PathView targetDirectoryPath);
169
170 // vIndex: 31
171 virtual bool _fileOrDirectoryExists(::Core::PathView) = 0;
172
173 // vIndex: 32
174 virtual ::Core::Result _getFileOrDirectorySize(::Core::PathView entryName, uint64* pFileSizeOut);
175
176 // vIndex: 33
177 virtual ::Core::Result _getEntryType(::Core::PathView, ::Core::FileType&) = 0;
178
179 // vIndex: 34
180 virtual ::Core::Result _addIgnoredThrottlePath(::Core::PathView);
181
182 // vIndex: 35
183 virtual ::Core::Result _removeIgnoredThrottlePath(::Core::PathView);
184
185 // vIndex: 36
186 virtual ::Core::Result _createFlatFile(::Core::PathView sourceDirectoryPath, ::Core::PathView targetDirectoryPath);
187
188 // vIndex: 37
189 virtual bool _flatFileFileExists(::Core::PathView filePath, ::Core::PathView manifestPath);
190
191 // vIndex: 38
192 virtual bool _flatFileDirectoryExists(::Core::PathView directoryPath, ::Core::PathView manifestPath);
193
194 // vIndex: 39
195 virtual ::Core::Result _flatFileIterateOverDirectory(
196 ::Core::PathView directoryPath,
197 ::Core::PathView manifestPath,
198 ::Core::DirectoryIterationFlags flags,
200 );
201
202 // vIndex: 40
203 virtual bool _isDirectoryPathAFlatFile(::Core::PathView directoryPath);
204
205 // vIndex: 41
206 virtual ::Core::Result _copyFlatFile(
207 ::Core::PathView sourceDirectoryPath,
208 ::Core::PathView targetDirectoryPath,
209 ::std::vector<::Core::ExcludedPath> const& excludedDirectories,
210 ::std::vector<::Core::ExcludedPath> const& excludedFiles
211 );
212
213 // vIndex: 42
214 virtual ::Core::Result _flatFileDeleteFileOrDirectory(
215 ::Core::PathView fileOrDirectoryPath,
216 ::Core::PathView manifestPath,
217 bool directoryDeleteEnabled,
218 bool deleteRecursively
219 );
220
221 // vIndex: 43
222 virtual ::Core::Result
223 _flatFileGetFileSize(::Core::PathView filePath, ::Core::PathView manifestPath, uint64* pFileSize);
224
225 // vIndex: 44
226 virtual ::Core::Result _getLastModificationTime(::Core::PathView, int64*) = 0;
227
228 // vIndex: 45
229 virtual ::Core::Result _copyTimeAndAccessRights(::Core::PathView, ::Core::PathView) = 0;
230
231 // vIndex: 46
232 virtual ::Core::Result _endTransaction();
233
234 // vIndex: 47
235 virtual ::Core::Result _writeOperation(
236 ::Core::PathView fullPath,
237 ::Core::Result&& result,
238 ::std::function<void(::Core::FileStorageArea*)> observerCallOrNull,
239 uint64 numBytesWritten
240 );
241
242 // vIndex: 48
243 virtual void _initializeInternal();
244 // NOLINTEND
245
246public:
247 // member functions
248 // NOLINTBEGIN
249 MCAPI FileSystemImpl(
250 ::Core::FileAccessType accessType,
251 ::std::shared_ptr<::Core::FileStorageArea> storageArea,
252 ::Core::TransactionFlags manifestTracker,
253 ::std::shared_ptr<::Core::FlatFileManifestTracker> transactionFlags
254 );
255
256 MCAPI ::Core::Result _flatFileOpenFlatFile(
257 ::std::unique_ptr<::Core::FileImpl>& fileOut,
258 ::Core::PathView filePath,
259 ::Core::PathView manifestPath,
260 ::Core::FileOpenMode openMode,
261 ::Core::FileBufferingMode fileBufferingMode
262 );
263
264 MCAPI ::Core::Result _flatFileUnloadManifest(::Core::PathView filePath);
265
266 MCAPI ::Core::Result _readOperation(::Core::Result&& result, uint64 numBytesRead);
267
268 MCAPI ::Core::Result _readWriteOperation(
269 ::Core::Result&& result,
270 ::std::function<void(::Core::FileStorageArea*)> observerCallOrNull,
271 uint64 numBytesRead,
272 uint64 numBytesWritten
273 );
274
275 MCAPI ::Core::Result commit();
276
277 MCAPI ::Core::Result
278 copyDirectoryAndContentsRecursively(::Core::PathView sourceDirectoryPath, ::Core::PathView targetDirectoryPath);
279
280 MCAPI ::Core::Result copyFile(::Core::PathView sourceFilePath, ::Core::PathView targetFilePath);
281
282 MCAPI ::Core::Result copyFileWithLimit(
283 ::Core::PathView sourceFileName,
284 ::Core::PathView targetFileName,
285 uint64 startPosition,
286 uint64& outBytesWritten,
287 uint64& outBytesRemaining
288 );
289
290 MCAPI ::Core::Result createDirectoryRecursively(::Core::PathView directoryPath);
291
292 MCAPI ::Core::Result createEmptyFile(::Core::PathView filePath);
293
294 MCAPI ::Core::Result createFlatFile(::Core::PathView sourceDirectoryPath, ::Core::PathView targetDirectoryPath);
295
296 MCAPI ::Core::Result createOneDirectory(::Core::PathView directoryPath);
297
298 MCAPI ::Core::Result createOneDirectoryIfNotExisting(::Core::PathView directoryPath);
299
300 MCAPI ::Core::Result deleteDirectoryAndContentsRecursively(::Core::PathView directoryPath);
301
302 MCAPI ::Core::Result deleteDirectoryContentsRecursively(::Core::PathView directoryPath);
303
304 MCAPI ::Core::Result deleteEmptyDirectory(::Core::PathView directoryPath);
305
306 MCAPI ::Core::Result deleteFile(::Core::PathView filePath);
307
308 MCAPI bool directoryExists(::Core::PathView directoryPath);
309
310 MCAPI bool fileExists(::Core::PathView filePath);
311
312 MCAPI bool fileOrDirectoryExists(::Core::PathView entryPath);
313
314 MCAPI ::Core::Result getFileSize(::Core::PathView filePath, uint64* pFileSize);
315
316 MCAPI bool isDirectoryPathAFlatFile(::Core::PathView directoryPath);
317
318 MCAPI ::Core::Result iterateOverDirectory(
319 ::Core::PathView directoryPath,
320 ::Core::DirectoryIterationFlags flags,
322 );
323
324 MCAPI ::Core::Result openFile(
325 ::std::unique_ptr<::Core::FileImpl>& fileOut,
326 ::Core::PathView filePath,
327 ::Core::FileOpenMode openMode,
328 ::Core::FileBufferingMode fileBufferingMode
329 );
330
331 MCAPI ::Core::Result renameDirectory(::Core::PathView sourceDirectoryPath, ::Core::PathView targetDirectoryPath);
332
333 MCAPI ::Core::Result renameFile(::Core::PathView sourceFilePath, ::Core::PathView targetFilePath);
334 // NOLINTEND
335
336public:
337 // static functions
338 // NOLINTBEGIN
339 MCAPI static ::Core::Result isValidPath(::Core::PathView path);
340 // NOLINTEND
341
342public:
343 // static variables
344 // NOLINTBEGIN
345 MCAPI static ::Core::FileStats& sStats();
346 // NOLINTEND
347
348public:
349 // constructor thunks
350 // NOLINTBEGIN
351 MCAPI void* $ctor(
352 ::Core::FileAccessType accessType,
353 ::std::shared_ptr<::Core::FileStorageArea> storageArea,
354 ::Core::TransactionFlags manifestTracker,
355 ::std::shared_ptr<::Core::FlatFileManifestTracker> transactionFlags
356 );
357 // NOLINTEND
358
359public:
360 // destructor thunk
361 // NOLINTBEGIN
362
363 // NOLINTEND
364
365public:
366 // virtual function thunks
367 // NOLINTBEGIN
368 MCAPI ::Core::Result $getLastModificationTime(::Core::PathView entryPath, int64* lastModificationTime);
369
370 MCAPI ::Core::Result $copyTimeAndAccessRights(::Core::PathView sourceFilePath, ::Core::PathView targetFilePath);
371
372 MCFOLD void $requestFlush(::std::vector<::Core::PendingWrite> const& writeRequests);
373
374 MCFOLD bool $shouldCommit();
375
376 MCFOLD ::Core::CrossStorageCopyMode $getCrossStorageCopyMode();
377
378 MCAPI uint64 $getTransactionWriteSizeLimit() const;
379
380 MCAPI ::Core::Result $_createEmptyFile(::Core::PathView fileName);
381
382 MCAPI ::Core::Result $_copyFile(::Core::PathView sourceFileName, ::Core::PathView targetFileName);
383
384 MCAPI ::Core::Result $_copyFileWithLimit(
385 ::Core::PathView sourceFileName,
386 ::Core::PathView targetFileName,
387 uint64 startPosition,
388 uint64& outBytesWritten,
389 uint64& outBytesRemaining
390 );
391
392 MCAPI ::Core::Result $_readFileData(::Core::PathView filePath, ::std::vector<uchar>& data);
393
394 MCAPI ::Core::Result $_createOneDirectoryIfNotExisting(::Core::PathView directoryPath);
395
396 MCAPI ::Core::Result $_createDirectoryRecursively(::Core::PathView directoryPath);
397
398 MCAPI ::Core::Result $_deleteDirectoryAndContentsRecursively(::Core::PathView directoryPath);
399
400 MCAPI ::Core::Result $_deleteDirectoryContentsRecursively(::Core::PathView directoryPath);
401
402 MCAPI ::Core::Result $_deleteRecursively(::Core::PathView directoryPath, ::Core::FileType deleteFileType);
403
404 MCAPI ::Core::Result
405 $_getDirectoryFiles(::std::vector<::Core::PathBuffer<::std::string>>& files, ::Core::PathView directoryPath);
406
407 MCAPI ::Core::Result $_getDirectoryFilesRecursively(
408 ::std::vector<::Core::PathBuffer<::std::string>>& filesOut,
409 ::Core::PathView directoryPath
410 );
411
412 MCAPI ::Core::Result $_getDirectoryFilesSizeRecursively(uint64& totalSize, ::Core::PathView directoryPath);
413
414 MCAPI ::Core::Result $_getDirectoryFilesAllocatedSizeRecursively(
415 uint64& totalSize,
416 uint64& totalSizeAllocated,
417 ::Core::PathView directoryPath
418 );
419
420 MCAPI ::Core::Result
421 $_copyDirectoryAndContentsRecursively(::Core::PathView sourceDirectoryPath, ::Core::PathView targetDirectoryPath);
422
423 MCAPI ::Core::Result $_getFileOrDirectorySize(::Core::PathView entryName, uint64* pFileSizeOut);
424
425 MCFOLD ::Core::Result $_addIgnoredThrottlePath(::Core::PathView);
426
427 MCFOLD ::Core::Result $_removeIgnoredThrottlePath(::Core::PathView);
428
429 MCAPI ::Core::Result $_createFlatFile(::Core::PathView sourceDirectoryPath, ::Core::PathView targetDirectoryPath);
430
431 MCAPI bool $_flatFileFileExists(::Core::PathView filePath, ::Core::PathView manifestPath);
432
433 MCAPI bool $_flatFileDirectoryExists(::Core::PathView directoryPath, ::Core::PathView manifestPath);
434
435 MCAPI ::Core::Result $_flatFileIterateOverDirectory(
436 ::Core::PathView directoryPath,
437 ::Core::PathView manifestPath,
438 ::Core::DirectoryIterationFlags flags,
440 );
441
442 MCAPI bool $_isDirectoryPathAFlatFile(::Core::PathView directoryPath);
443
444 MCAPI ::Core::Result $_copyFlatFile(
445 ::Core::PathView sourceDirectoryPath,
446 ::Core::PathView targetDirectoryPath,
447 ::std::vector<::Core::ExcludedPath> const& excludedDirectories,
448 ::std::vector<::Core::ExcludedPath> const& excludedFiles
449 );
450
451 MCAPI ::Core::Result $_flatFileDeleteFileOrDirectory(
452 ::Core::PathView fileOrDirectoryPath,
453 ::Core::PathView manifestPath,
454 bool directoryDeleteEnabled,
455 bool deleteRecursively
456 );
457
458 MCAPI ::Core::Result
459 $_flatFileGetFileSize(::Core::PathView filePath, ::Core::PathView manifestPath, uint64* pFileSize);
460
461 MCAPI ::Core::Result $_endTransaction();
462
463 MCAPI ::Core::Result $_writeOperation(
464 ::Core::PathView fullPath,
465 ::Core::Result&& result,
466 ::std::function<void(::Core::FileStorageArea*)> observerCallOrNull,
467 uint64 numBytesWritten
468 );
469
470 MCFOLD void $_initializeInternal();
471 // NOLINTEND
472
473public:
474 // vftables
475 // NOLINTBEGIN
476 MCAPI static void** $vftable();
477 // NOLINTEND
478};
479
480} // namespace Core
Definition FileOpenMode.h:7
Definition FileStorageArea.h:22
Definition FileSystemImpl.h:31
Definition PathBuffer.h:8
Definition PathView.h:16
Definition Result.h:17
Definition Result.h:6
Definition function_ref.h:60
Definition DirectoryIterationItem.h:15
Definition Alias.h:14