|  | /* | 
|  | * Copyright 2025 Google LLC | 
|  | * | 
|  | * Use of this source code is governed by a BSD-style license that can be | 
|  | * found in the LICENSE file. | 
|  | */ | 
|  |  | 
|  | #ifndef SkSynchronizedResourceCache_DEFINED | 
|  | #define SkSynchronizedResourceCache_DEFINED | 
|  |  | 
|  | #include "include/private/base/SkDebug.h" | 
|  | #include "include/private/base/SkMutex.h" | 
|  | #include "src/core/SkResourceCache.h" | 
|  |  | 
|  | #include <cstddef> | 
|  |  | 
|  | class SkCachedData; | 
|  |  | 
|  | class SkSynchronizedResourceCache : public SkResourceCache { | 
|  | public: | 
|  | bool find(const Key& key, FindVisitor, void* context) override; | 
|  | void add(Rec*, void* payload = nullptr) override; | 
|  |  | 
|  | void visitAll(Visitor, void* context) override; | 
|  |  | 
|  | size_t getTotalBytesUsed() const override; | 
|  | size_t getTotalByteLimit() const override; | 
|  | size_t setTotalByteLimit(size_t newLimit) override; | 
|  |  | 
|  | size_t setSingleAllocationByteLimit(size_t) override; | 
|  | size_t getSingleAllocationByteLimit() const override; | 
|  | size_t getEffectiveSingleAllocationByteLimit() const override; | 
|  |  | 
|  | void purgeAll() override; | 
|  |  | 
|  | DiscardableFactory discardableFactory() const override; | 
|  |  | 
|  | SkCachedData* newCachedData(size_t bytes) override; | 
|  |  | 
|  | void dump() const override; | 
|  |  | 
|  | SkSynchronizedResourceCache(DiscardableFactory); | 
|  | explicit SkSynchronizedResourceCache(size_t byteLimit); | 
|  | ~SkSynchronizedResourceCache() override; | 
|  |  | 
|  | private: | 
|  | mutable SkMutex fMutex; | 
|  | }; | 
|  | #endif |