// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef STORAGE_BROWSER_BLOB_BLOB_DATA_HANDLE_H_ #define STORAGE_BROWSER_BLOB_BLOB_DATA_HANDLE_H_ #include <limits> #include <memory> #include <string> #include "base/component_export.h" #include "base/functional/callback_forward.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/task/sequenced_task_runner_helpers.h" #include "storage/browser/blob/blob_storage_constants.h" namespace base { class SequencedTaskRunner; } namespace storage { class BlobDataSnapshot; class BlobReader; class BlobStorageContext; // BlobDataHandle ensures that the underlying blob (keyed by the uuid) remains // in the BlobStorageContext's collection while this object is alive. Anything // that needs to keep a blob alive needs to store this handle. // When the blob data itself is needed, clients must call the CreateSnapshot() // method on the IO thread to create a snapshot of the blob data. This snapshot // is not intended to be persisted, and serves to ensure that the backing // resources remain around for the duration of reading the blob. This snapshot // can be read on any thread, but it must be destructed on the IO thread. // This object has delete semantics and may be deleted on any thread. class COMPONENT_EXPORT(STORAGE_BROWSER) BlobDataHandle { … }; } // namespace storage #endif // STORAGE_BROWSER_BLOB_BLOB_DATA_HANDLE_H_