| Index: net/disk_cache/disk_cache.h
|
| ===================================================================
|
| --- net/disk_cache/disk_cache.h (revision 28049)
|
| +++ net/disk_cache/disk_cache.h (working copy)
|
| @@ -183,6 +183,18 @@
|
| // The Backend implementation is free to evict any range from the cache at any
|
| // moment, so in practice, the previously stated granularity of 1 KB is not
|
| // as bad as it sounds.
|
| + //
|
| + // The sparse methods don't support multiple simultaneous IO operations to the
|
| + // same physical entry, so in practice a single object should be instantiated
|
| + // for a given key at any given time. Once an operation has been issued, the
|
| + // caller should wait until it completes before starting another one. This
|
| + // requirement includes the case when an entry is closed while some operation
|
| + // is in progress and another object is instantiated; any IO operation will
|
| + // fail while the previous operation is still in-flight. In order to deal with
|
| + // this requirement, the caller could either wait until the operation
|
| + // completes before closing the entry, or call CancelSparseIO() before closing
|
| + // the entry, and call ReadyForSparseIO() on the new entry and wait for the
|
| + // callback before issuing new operations.
|
|
|
| // Behaves like ReadData() except that this method is used to access sparse
|
| // entries.
|
| @@ -207,6 +219,26 @@
|
| // net error code whenever the request cannot be completed successfully.
|
| virtual int GetAvailableRange(int64 offset, int len, int64* start) = 0;
|
|
|
| + // Cancels any pending sparse IO operation (if any). The completion callback
|
| + // of the operation in question will still be called when the operation
|
| + // finishes, but the operation will finish sooner when this method is used.
|
| + virtual void CancelSparseIO() = 0;
|
| +
|
| + // Returns OK if this entry can be used immediately. If that is not the
|
| + // case, returns ERR_IO_PENDING and invokes the provided callback when this
|
| + // entry is ready to use. This method always returns OK for non-sparse
|
| + // entries, and returns ERR_IO_PENDING when a previous operation was cancelled
|
| + // (by calling CancelSparseIO), but the cache is still busy with it. If there
|
| + // is a pending operation that has not been cancelled, this method will return
|
| + // OK although another IO operation cannot be issued at this time; in this
|
| + // case the caller should just wait for the regular callback to be invoked
|
| + // instead of using this method to provide another callback.
|
| + //
|
| + // Note that CancelSparseIO may have been called on another instance of this
|
| + // object that refers to the same physical disk entry.
|
| + virtual int ReadyForSparseIO(
|
| + net::CompletionCallback* completion_callback) = 0;
|
| +
|
| protected:
|
| virtual ~Entry() {}
|
| };
|
|
|