| Index: net/disk_cache/simple/simple_synchronous_entry.h
|
| diff --git a/net/disk_cache/simple/simple_synchronous_entry.h b/net/disk_cache/simple/simple_synchronous_entry.h
|
| deleted file mode 100644
|
| index 7f98b21ceaa42c26bcc8128a49fe9fea5234d3a7..0000000000000000000000000000000000000000
|
| --- a/net/disk_cache/simple/simple_synchronous_entry.h
|
| +++ /dev/null
|
| @@ -1,340 +0,0 @@
|
| -// Copyright (c) 2013 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 NET_DISK_CACHE_SIMPLE_SIMPLE_SYNCHRONOUS_ENTRY_H_
|
| -#define NET_DISK_CACHE_SIMPLE_SIMPLE_SYNCHRONOUS_ENTRY_H_
|
| -
|
| -#include <algorithm>
|
| -#include <map>
|
| -#include <string>
|
| -#include <utility>
|
| -#include <vector>
|
| -
|
| -#include "base/files/file.h"
|
| -#include "base/files/file_path.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/time/time.h"
|
| -#include "net/base/cache_type.h"
|
| -#include "net/base/net_export.h"
|
| -#include "net/disk_cache/simple/simple_entry_format.h"
|
| -
|
| -namespace net {
|
| -class GrowableIOBuffer;
|
| -class IOBuffer;
|
| -}
|
| -
|
| -namespace disk_cache {
|
| -
|
| -class SimpleSynchronousEntry;
|
| -
|
| -// This class handles the passing of data about the entry between
|
| -// SimpleEntryImplementation and SimpleSynchronousEntry and the computation of
|
| -// file offsets based on the data size for all streams.
|
| -class NET_EXPORT_PRIVATE SimpleEntryStat {
|
| - public:
|
| - SimpleEntryStat(base::Time last_used,
|
| - base::Time last_modified,
|
| - const int32 data_size[],
|
| - const int32 sparse_data_size);
|
| -
|
| - int GetOffsetInFile(const std::string& key,
|
| - int offset,
|
| - int stream_index) const;
|
| - int GetEOFOffsetInFile(const std::string& key, int stream_index) const;
|
| - int GetLastEOFOffsetInFile(const std::string& key, int file_index) const;
|
| - int64 GetFileSize(const std::string& key, int file_index) const;
|
| -
|
| - base::Time last_used() const { return last_used_; }
|
| - base::Time last_modified() const { return last_modified_; }
|
| - void set_last_used(base::Time last_used) { last_used_ = last_used; }
|
| - void set_last_modified(base::Time last_modified) {
|
| - last_modified_ = last_modified;
|
| - }
|
| -
|
| - int32 data_size(int stream_index) const { return data_size_[stream_index]; }
|
| - void set_data_size(int stream_index, int data_size) {
|
| - data_size_[stream_index] = data_size;
|
| - }
|
| -
|
| - int32 sparse_data_size() const { return sparse_data_size_; }
|
| - void set_sparse_data_size(int32 sparse_data_size) {
|
| - sparse_data_size_ = sparse_data_size;
|
| - }
|
| -
|
| - private:
|
| - base::Time last_used_;
|
| - base::Time last_modified_;
|
| - int32 data_size_[kSimpleEntryStreamCount];
|
| - int32 sparse_data_size_;
|
| -};
|
| -
|
| -struct SimpleEntryCreationResults {
|
| - explicit SimpleEntryCreationResults(SimpleEntryStat entry_stat);
|
| - ~SimpleEntryCreationResults();
|
| -
|
| - SimpleSynchronousEntry* sync_entry;
|
| - scoped_refptr<net::GrowableIOBuffer> stream_0_data;
|
| - SimpleEntryStat entry_stat;
|
| - uint32 stream_0_crc32;
|
| - int result;
|
| -};
|
| -
|
| -// Worker thread interface to the very simple cache. This interface is not
|
| -// thread safe, and callers must ensure that it is only ever accessed from
|
| -// a single thread between synchronization points.
|
| -class SimpleSynchronousEntry {
|
| - public:
|
| - struct CRCRecord {
|
| - CRCRecord();
|
| - CRCRecord(int index_p, bool has_crc32_p, uint32 data_crc32_p);
|
| -
|
| - int index;
|
| - bool has_crc32;
|
| - uint32 data_crc32;
|
| - };
|
| -
|
| - struct EntryOperationData {
|
| - EntryOperationData(int index_p, int offset_p, int buf_len_p);
|
| - EntryOperationData(int index_p,
|
| - int offset_p,
|
| - int buf_len_p,
|
| - bool truncate_p,
|
| - bool doomed_p);
|
| - EntryOperationData(int64 sparse_offset_p, int buf_len_p);
|
| -
|
| - int index;
|
| - int offset;
|
| - int64 sparse_offset;
|
| - int buf_len;
|
| - bool truncate;
|
| - bool doomed;
|
| - };
|
| -
|
| - static void OpenEntry(net::CacheType cache_type,
|
| - const base::FilePath& path,
|
| - uint64 entry_hash,
|
| - bool had_index,
|
| - SimpleEntryCreationResults* out_results);
|
| -
|
| - static void CreateEntry(net::CacheType cache_type,
|
| - const base::FilePath& path,
|
| - const std::string& key,
|
| - uint64 entry_hash,
|
| - bool had_index,
|
| - SimpleEntryCreationResults* out_results);
|
| -
|
| - // Deletes an entry from the file system without affecting the state of the
|
| - // corresponding instance, if any (allowing operations to continue to be
|
| - // executed through that instance). Returns a net error code.
|
| - static int DoomEntry(const base::FilePath& path,
|
| - uint64 entry_hash);
|
| -
|
| - // Like |DoomEntry()| above. Deletes all entries corresponding to the
|
| - // |key_hashes|. Succeeds only when all entries are deleted. Returns a net
|
| - // error code.
|
| - static int DoomEntrySet(const std::vector<uint64>* key_hashes,
|
| - const base::FilePath& path);
|
| -
|
| - // N.B. ReadData(), WriteData(), CheckEOFRecord() and Close() may block on IO.
|
| - void ReadData(const EntryOperationData& in_entry_op,
|
| - net::IOBuffer* out_buf,
|
| - uint32* out_crc32,
|
| - SimpleEntryStat* entry_stat,
|
| - int* out_result) const;
|
| - void WriteData(const EntryOperationData& in_entry_op,
|
| - net::IOBuffer* in_buf,
|
| - SimpleEntryStat* out_entry_stat,
|
| - int* out_result);
|
| - void CheckEOFRecord(int index,
|
| - const SimpleEntryStat& entry_stat,
|
| - uint32 expected_crc32,
|
| - int* out_result) const;
|
| -
|
| - void ReadSparseData(const EntryOperationData& in_entry_op,
|
| - net::IOBuffer* out_buf,
|
| - base::Time* out_last_used,
|
| - int* out_result);
|
| - void WriteSparseData(const EntryOperationData& in_entry_op,
|
| - net::IOBuffer* in_buf,
|
| - uint64 max_sparse_data_size,
|
| - SimpleEntryStat* out_entry_stat,
|
| - int* out_result);
|
| - void GetAvailableRange(const EntryOperationData& in_entry_op,
|
| - int64* out_start,
|
| - int* out_result);
|
| -
|
| - // Close all streams, and add write EOF records to streams indicated by the
|
| - // CRCRecord entries in |crc32s_to_write|.
|
| - void Close(const SimpleEntryStat& entry_stat,
|
| - scoped_ptr<std::vector<CRCRecord> > crc32s_to_write,
|
| - net::GrowableIOBuffer* stream_0_data);
|
| -
|
| - const base::FilePath& path() const { return path_; }
|
| - std::string key() const { return key_; }
|
| -
|
| - private:
|
| - enum CreateEntryResult {
|
| - CREATE_ENTRY_SUCCESS = 0,
|
| - CREATE_ENTRY_PLATFORM_FILE_ERROR = 1,
|
| - CREATE_ENTRY_CANT_WRITE_HEADER = 2,
|
| - CREATE_ENTRY_CANT_WRITE_KEY = 3,
|
| - CREATE_ENTRY_MAX = 4,
|
| - };
|
| -
|
| - enum FileRequired {
|
| - FILE_NOT_REQUIRED,
|
| - FILE_REQUIRED
|
| - };
|
| -
|
| - struct SparseRange {
|
| - int64 offset;
|
| - int64 length;
|
| - uint32 data_crc32;
|
| - int64 file_offset;
|
| -
|
| - bool operator<(const SparseRange& other) const {
|
| - return offset < other.offset;
|
| - }
|
| - };
|
| -
|
| - SimpleSynchronousEntry(
|
| - net::CacheType cache_type,
|
| - const base::FilePath& path,
|
| - const std::string& key,
|
| - uint64 entry_hash);
|
| -
|
| - // Like Entry, the SimpleSynchronousEntry self releases when Close() is
|
| - // called.
|
| - ~SimpleSynchronousEntry();
|
| -
|
| - // Tries to open one of the cache entry files. Succeeds if the open succeeds
|
| - // or if the file was not found and is allowed to be omitted if the
|
| - // corresponding stream is empty.
|
| - bool MaybeOpenFile(int file_index,
|
| - base::File::Error* out_error);
|
| - // Creates one of the cache entry files if necessary. If the file is allowed
|
| - // to be omitted if the corresponding stream is empty, and if |file_required|
|
| - // is FILE_NOT_REQUIRED, then the file is not created; otherwise, it is.
|
| - bool MaybeCreateFile(int file_index,
|
| - FileRequired file_required,
|
| - base::File::Error* out_error);
|
| - bool OpenFiles(bool had_index,
|
| - SimpleEntryStat* out_entry_stat);
|
| - bool CreateFiles(bool had_index,
|
| - SimpleEntryStat* out_entry_stat);
|
| - void CloseFile(int index);
|
| - void CloseFiles();
|
| -
|
| - // Returns a net error, i.e. net::OK on success. |had_index| is passed
|
| - // from the main entry for metrics purposes, and is true if the index was
|
| - // initialized when the open operation began.
|
| - int InitializeForOpen(bool had_index,
|
| - SimpleEntryStat* out_entry_stat,
|
| - scoped_refptr<net::GrowableIOBuffer>* stream_0_data,
|
| - uint32* out_stream_0_crc32);
|
| -
|
| - // Writes the header and key to a newly-created stream file. |index| is the
|
| - // index of the stream. Returns true on success; returns false and sets
|
| - // |*out_result| on failure.
|
| - bool InitializeCreatedFile(int index, CreateEntryResult* out_result);
|
| -
|
| - // Returns a net error, including net::OK on success and net::FILE_EXISTS
|
| - // when the entry already exists. |had_index| is passed from the main entry
|
| - // for metrics purposes, and is true if the index was initialized when the
|
| - // create operation began.
|
| - int InitializeForCreate(bool had_index, SimpleEntryStat* out_entry_stat);
|
| -
|
| - // Allocates and fills a buffer with stream 0 data in |stream_0_data|, then
|
| - // checks its crc32.
|
| - int ReadAndValidateStream0(
|
| - int total_data_size,
|
| - SimpleEntryStat* out_entry_stat,
|
| - scoped_refptr<net::GrowableIOBuffer>* stream_0_data,
|
| - uint32* out_stream_0_crc32) const;
|
| -
|
| - int GetEOFRecordData(int index,
|
| - const SimpleEntryStat& entry_stat,
|
| - bool* out_has_crc32,
|
| - uint32* out_crc32,
|
| - int* out_data_size) const;
|
| - void Doom() const;
|
| -
|
| - // Opens the sparse data file and scans it if it exists.
|
| - bool OpenSparseFileIfExists(int32* out_sparse_data_size);
|
| -
|
| - // Creates and initializes the sparse data file.
|
| - bool CreateSparseFile();
|
| -
|
| - // Closes the sparse data file.
|
| - void CloseSparseFile();
|
| -
|
| - // Writes the header to the (newly-created) sparse file.
|
| - bool InitializeSparseFile();
|
| -
|
| - // Removes all but the header of the sparse file.
|
| - bool TruncateSparseFile();
|
| -
|
| - // Scans the existing ranges in the sparse file. Populates |sparse_ranges_|
|
| - // and sets |*out_sparse_data_size| to the total size of all the ranges (not
|
| - // including headers).
|
| - bool ScanSparseFile(int32* out_sparse_data_size);
|
| -
|
| - // Reads from a single sparse range. If asked to read the entire range, also
|
| - // verifies the CRC32.
|
| - bool ReadSparseRange(const SparseRange* range,
|
| - int offset, int len, char* buf);
|
| -
|
| - // Writes to a single (existing) sparse range. If asked to write the entire
|
| - // range, also updates the CRC32; otherwise, invalidates it.
|
| - bool WriteSparseRange(SparseRange* range,
|
| - int offset, int len, const char* buf);
|
| -
|
| - // Appends a new sparse range to the sparse data file.
|
| - bool AppendSparseRange(int64 offset, int len, const char* buf);
|
| -
|
| - static bool DeleteFileForEntryHash(const base::FilePath& path,
|
| - uint64 entry_hash,
|
| - int file_index);
|
| - static bool DeleteFilesForEntryHash(const base::FilePath& path,
|
| - uint64 entry_hash);
|
| -
|
| - void RecordSyncCreateResult(CreateEntryResult result, bool had_index);
|
| -
|
| - base::FilePath GetFilenameFromFileIndex(int file_index);
|
| -
|
| - bool sparse_file_open() const {
|
| - return sparse_file_.IsValid();
|
| - }
|
| -
|
| - const net::CacheType cache_type_;
|
| - const base::FilePath path_;
|
| - const uint64 entry_hash_;
|
| - std::string key_;
|
| -
|
| - bool have_open_files_;
|
| - bool initialized_;
|
| -
|
| - base::File files_[kSimpleEntryFileCount];
|
| -
|
| - // True if the corresponding stream is empty and therefore no on-disk file
|
| - // was created to store it.
|
| - bool empty_file_omitted_[kSimpleEntryFileCount];
|
| -
|
| - typedef std::map<int64, SparseRange> SparseRangeOffsetMap;
|
| - typedef SparseRangeOffsetMap::iterator SparseRangeIterator;
|
| - SparseRangeOffsetMap sparse_ranges_;
|
| - base::File sparse_file_;
|
| - // Offset of the end of the sparse file (where the next sparse range will be
|
| - // written).
|
| - int64 sparse_tail_offset_;
|
| -
|
| - // True if the entry was created, or false if it was opened. Used to log
|
| - // SimpleCache.*.EntryCreatedWithStream2Omitted only for created entries.
|
| - bool files_created_;
|
| -};
|
| -
|
| -} // namespace disk_cache
|
| -
|
| -#endif // NET_DISK_CACHE_SIMPLE_SIMPLE_SYNCHRONOUS_ENTRY_H_
|
|
|