diff options
Diffstat (limited to 'services/incremental/ServiceWrappers.h')
-rw-r--r-- | services/incremental/ServiceWrappers.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/services/incremental/ServiceWrappers.h b/services/incremental/ServiceWrappers.h index 245bb3105be5..d4cdcbe9cac0 100644 --- a/services/incremental/ServiceWrappers.h +++ b/services/incremental/ServiceWrappers.h @@ -84,6 +84,10 @@ public: void(std::string_view root, std::string_view backingDir, std::span<std::pair<std::string_view, std::string_view>> binds)>; + using FileCallback = android::base::function_ref<bool(const Control& control, FileId fileId)>; + + static std::string toString(FileId fileId); + virtual ~IncFsWrapper() = default; virtual Features features() const = 0; virtual void listExistingMounts(const ExistingMountCallback& cb) const = 0; @@ -99,14 +103,18 @@ public: virtual incfs::RawMetadata getMetadata(const Control& control, FileId fileid) const = 0; virtual incfs::RawMetadata getMetadata(const Control& control, std::string_view path) const = 0; virtual FileId getFileId(const Control& control, std::string_view path) const = 0; - virtual std::string toString(FileId fileId) const = 0; virtual std::pair<IncFsBlockIndex, IncFsBlockIndex> countFilledBlocks( const Control& control, std::string_view path) const = 0; + virtual incfs::LoadingState isFileFullyLoaded(const Control& control, + std::string_view path) const = 0; + virtual incfs::LoadingState isFileFullyLoaded(const Control& control, FileId id) const = 0; + virtual incfs::LoadingState isEverythingFullyLoaded(const Control& control) const = 0; virtual ErrorCode link(const Control& control, std::string_view from, std::string_view to) const = 0; virtual ErrorCode unlink(const Control& control, std::string_view path) const = 0; virtual UniqueFd openForSpecialOps(const Control& control, FileId id) const = 0; virtual ErrorCode writeBlocks(std::span<const incfs::DataBlock> blocks) const = 0; + virtual ErrorCode reserveSpace(const Control& control, FileId id, IncFsSize size) const = 0; virtual WaitResult waitForPendingReads( const Control& control, std::chrono::milliseconds timeout, std::vector<incfs::ReadInfo>* pendingReadsBuffer) const = 0; @@ -114,6 +122,8 @@ public: const Control& control, const std::vector<::android::os::incremental::PerUidReadTimeouts>& perUidReadTimeouts) const = 0; + virtual ErrorCode forEachFile(const Control& control, FileCallback cb) const = 0; + virtual ErrorCode forEachIncompleteFile(const Control& control, FileCallback cb) const = 0; }; class AppOpsManagerWrapper { @@ -158,6 +168,12 @@ public: virtual void listFilesRecursive(std::string_view directoryPath, FileCallback onFile) const = 0; }; +class ClockWrapper { +public: + virtual ~ClockWrapper() = default; + virtual TimePoint now() const = 0; +}; + class ServiceManagerWrapper { public: virtual ~ServiceManagerWrapper() = default; @@ -170,6 +186,7 @@ public: virtual std::unique_ptr<TimedQueueWrapper> getTimedQueue() = 0; virtual std::unique_ptr<TimedQueueWrapper> getProgressUpdateJobQueue() = 0; virtual std::unique_ptr<FsWrapper> getFs() = 0; + virtual std::unique_ptr<ClockWrapper> getClock() = 0; }; // --- Real stuff --- @@ -187,6 +204,7 @@ public: std::unique_ptr<TimedQueueWrapper> getTimedQueue() final; std::unique_ptr<TimedQueueWrapper> getProgressUpdateJobQueue() final; std::unique_ptr<FsWrapper> getFs() final; + std::unique_ptr<ClockWrapper> getClock() final; private: template <class INTERFACE> |