diff options
Diffstat (limited to 'services/incremental/ServiceWrappers.h')
-rw-r--r-- | services/incremental/ServiceWrappers.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/services/incremental/ServiceWrappers.h b/services/incremental/ServiceWrappers.h index d60035a9274d..245bb3105be5 100644 --- a/services/incremental/ServiceWrappers.h +++ b/services/incremental/ServiceWrappers.h @@ -16,6 +16,7 @@ #pragma once +#include <android-base/function_ref.h> #include <android-base/unique_fd.h> #include <android/content/pm/DataLoaderParamsParcel.h> #include <android/content/pm/FileSystemControlParcel.h> @@ -77,18 +78,22 @@ public: using ErrorCode = incfs::ErrorCode; using UniqueFd = incfs::UniqueFd; using WaitResult = incfs::WaitResult; + using Features = incfs::Features; - using ExistingMountCallback = - std::function<void(std::string_view root, std::string_view backingDir, - std::span<std::pair<std::string_view, std::string_view>> binds)>; + using ExistingMountCallback = android::base::function_ref< + void(std::string_view root, std::string_view backingDir, + std::span<std::pair<std::string_view, std::string_view>> binds)>; virtual ~IncFsWrapper() = default; + virtual Features features() const = 0; virtual void listExistingMounts(const ExistingMountCallback& cb) const = 0; virtual Control openMount(std::string_view path) const = 0; virtual Control createControl(IncFsFd cmd, IncFsFd pendingReads, IncFsFd logs, IncFsFd blocksWritten) const = 0; virtual ErrorCode makeFile(const Control& control, std::string_view path, int mode, FileId id, incfs::NewFileParams params) const = 0; + virtual ErrorCode makeMappedFile(const Control& control, std::string_view path, int mode, + incfs::NewMappedFileParams params) const = 0; virtual ErrorCode makeDir(const Control& control, std::string_view path, int mode) const = 0; virtual ErrorCode makeDirs(const Control& control, std::string_view path, int mode) const = 0; virtual incfs::RawMetadata getMetadata(const Control& control, FileId fileid) const = 0; @@ -148,7 +153,9 @@ public: class FsWrapper { public: virtual ~FsWrapper() = default; - virtual std::vector<std::string> listFilesRecursive(std::string_view directoryPath) const = 0; + + using FileCallback = android::base::function_ref<bool(std::string_view)>; + virtual void listFilesRecursive(std::string_view directoryPath, FileCallback onFile) const = 0; }; class ServiceManagerWrapper { |