| Index: storage/browser/blob/shareable_blob_data_item.h
|
| diff --git a/storage/browser/blob/shareable_blob_data_item.h b/storage/browser/blob/shareable_blob_data_item.h
|
| index 4c2f9c1833262d18dfa82b622abdfef8585b9541..6ab1b18bd3b0a84cba4287bf1a01c652cf126b0d 100644
|
| --- a/storage/browser/blob/shareable_blob_data_item.h
|
| +++ b/storage/browser/blob/shareable_blob_data_item.h
|
| @@ -11,6 +11,7 @@
|
| #include "base/hash.h"
|
| #include "base/macros.h"
|
| #include "base/memory/ref_counted.h"
|
| +#include "storage/browser/storage_browser_export.h"
|
| #include "storage/common/data_element.h"
|
|
|
| namespace storage {
|
| @@ -23,22 +24,34 @@ class InternalBlobData;
|
| // The data in this class (the item) is immutable, but the item itself can be
|
| // swapped out with an item with the same data but a different backing (think
|
| // RAM vs file backed).
|
| -class ShareableBlobDataItem : public base::RefCounted<ShareableBlobDataItem> {
|
| +class STORAGE_EXPORT ShareableBlobDataItem
|
| + : public base::RefCountedThreadSafe<ShareableBlobDataItem> {
|
| public:
|
| - ShareableBlobDataItem(const std::string& blob_uuid,
|
| - const scoped_refptr<BlobDataItem>& item);
|
| + ShareableBlobDataItem(scoped_refptr<BlobDataItem> item);
|
|
|
| - const scoped_refptr<BlobDataItem>& item();
|
| + const scoped_refptr<BlobDataItem>& item() const;
|
|
|
| - base::hash_set<std::string>& referencing_blobs() {
|
| + // This is a unique auto-incrementing id assigned to this item on
|
| + // construction. It is used to keep track of this item in an LRU data
|
| + // structure for eviction to disk.
|
| + uint64_t item_id() const { return item_id_; }
|
| +
|
| + const base::hash_set<std::string>& referencing_blobs() const {
|
| return referencing_blobs_;
|
| }
|
|
|
| private:
|
| - friend class base::RefCounted<ShareableBlobDataItem>;
|
| + friend class base::RefCountedThreadSafe<ShareableBlobDataItem>;
|
| friend class InternalBlobData;
|
| + friend class BlobMemoryController;
|
| + friend class BlobStorageContext;
|
| + friend STORAGE_EXPORT void PrintTo(const ShareableBlobDataItem& x,
|
| + ::std::ostream* os);
|
| +
|
| ~ShareableBlobDataItem();
|
|
|
| + // This is a unique identifier for this ShareableBlobDataItem.
|
| + uint64_t item_id_;
|
| scoped_refptr<BlobDataItem> item_;
|
|
|
| base::hash_set<std::string> referencing_blobs_;
|
| @@ -46,5 +59,10 @@ class ShareableBlobDataItem : public base::RefCounted<ShareableBlobDataItem> {
|
| DISALLOW_COPY_AND_ASSIGN(ShareableBlobDataItem);
|
| };
|
|
|
| +STORAGE_EXPORT bool operator==(const ShareableBlobDataItem& a,
|
| + const ShareableBlobDataItem& b);
|
| +STORAGE_EXPORT bool operator!=(const ShareableBlobDataItem& a,
|
| + const ShareableBlobDataItem& b);
|
| +
|
| } // namespace storage
|
| #endif // STORAGE_BROWSER_BLOB_SHAREABLE_BLOB_DATA_ITEM_H_
|
|
|