| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef BLIMP_COMMON_BLOB_CACHE_BLOB_CACHE_H_ |
| #define BLIMP_COMMON_BLOB_CACHE_BLOB_CACHE_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/memory/ref_counted.h" |
| #include "blimp/common/blimp_common_export.h" |
| |
| namespace blimp { |
| |
| using BlobId = std::string; |
| using BlobData = base::RefCountedData<std::string>; |
| |
| // Immutable, ref-counted representation of blob payloads, suitable for sharing |
| // across threads. |
| using BlobDataPtr = scoped_refptr<const BlobData>; |
| |
| // An interface for a cache of blobs. |
| class BLIMP_COMMON_EXPORT BlobCache { |
| public: |
| virtual ~BlobCache() {} |
| |
| // Gets the keys of items stored by the cache. |
| virtual std::vector<BlobId> GetCachedBlobIds() const = 0; |
| |
| // Returns true if there is a cache item |id|. |
| virtual bool Contains(const BlobId& id) const = 0; |
| |
| // Stores |data| with the identifier |id| in the cache. |
| // Command is ignored if there is already a cache item stored under |id|. |
| virtual void Put(const BlobId& id, BlobDataPtr data) = 0; |
| |
| // Returns a pointer to the cache item |id|, or nullptr if no cache item |
| // exists under that identifier. |
| virtual BlobDataPtr Get(const BlobId& id) const = 0; |
| }; |
| |
| } // namespace blimp |
| |
| #endif // BLIMP_COMMON_BLOB_CACHE_BLOB_CACHE_H_ |