| Index: net/disk_cache/flash/segment.h
|
| diff --git a/net/disk_cache/flash/segment.h b/net/disk_cache/flash/segment.h
|
| deleted file mode 100644
|
| index 97551e2531d954245ea7af9d372ebf6d135b68da..0000000000000000000000000000000000000000
|
| --- a/net/disk_cache/flash/segment.h
|
| +++ /dev/null
|
| @@ -1,118 +0,0 @@
|
| -// Copyright (c) 2012 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_FLASH_SEGMENT_H_
|
| -#define NET_DISK_CACHE_FLASH_SEGMENT_H_
|
| -
|
| -#include <vector>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/gtest_prod_util.h"
|
| -#include "net/base/net_export.h"
|
| -
|
| -namespace disk_cache {
|
| -
|
| -class Storage;
|
| -
|
| -// The underlying storage represented by Storage class, is divided into fixed
|
| -// size logical segments, represented by this class. Since segment size is
|
| -// fixed, the storage size should be a multiple of segment size. The picture
|
| -// below describes the relation between storage and segments:
|
| -//
|
| -// |-----------+-----------+-----+-------------+-----------|
|
| -// | segment 0 | segment 1 | ... | segment n-1 | segment n |
|
| -// |-----------+-----------+-----+-------------+-----------|
|
| -//
|
| -// |-------------------------------------------------------|
|
| -// | storage |
|
| -// |-------------------------------------------------------|
|
| -//
|
| -// A segment is constructed by taking its index within the storage, a flag
|
| -// indicating whether it is a read-only segment and a pointer to the storage on
|
| -// which it resides. It provides an API for reading/writing entries residing on
|
| -// it. Init() function must be called right after the construction of a segment
|
| -// and one should proceed to calling other functions only if Init() has
|
| -// succeeded. After a successful initialization, one may proceed to call
|
| -// non-mutating functions; mutating functions can be called if the segment is
|
| -// not read-only. Finally, Close() function must be called right before the
|
| -// destruction. Calling Close() makes the segment immutable, which means
|
| -// mutating functions cannot be called on the object after that.
|
| -//
|
| -// Segment can only be used as a log, i.e. all writes are laid out sequentially
|
| -// on a segment. As a result, WriteData() function does not take an offset.
|
| -// Current write offset can be learned by calling write_offset().
|
| -//
|
| -// Once the entries are written to the Segment and Close() called on it and the
|
| -// object destroyed, we should later be able to instantiate a read-only Segment
|
| -// object and recreate all the entries that were previously written to it. To
|
| -// achieve this, a tiny region of Segment is used for its metadata and Segment
|
| -// provides two calls for interacting with metadata: StoreOffset() and
|
| -// GetOffsets(). The former can be used to store an offset that was returned by
|
| -// write_offset() and the latter can be used to retrieve all the offsets that
|
| -// were stored in the Segment. Before attempting to write an entry, the client
|
| -// should call CanHold() to make sure that there is enough space in the segment.
|
| -//
|
| -// ReadData can be called over the range that was previously written with
|
| -// WriteData. Reading from area that was not written will fail.
|
| -
|
| -class NET_EXPORT_PRIVATE Segment {
|
| - public:
|
| - // |index| is the index of this segment on |storage|. If the storage size is
|
| - // X and the segment size is Y, where X >> Y and X % Y == 0, then the valid
|
| - // values for the index are integers within the range [0, X/Y). Thus, if
|
| - // |index| is given value Z, then it covers bytes on storage starting at the
|
| - // offset Z*Y and ending at the offset Z*Y+Y-1.
|
| - Segment(int32 index, bool read_only, Storage* storage);
|
| - ~Segment();
|
| -
|
| - int32 index() const { return index_; }
|
| - int32 write_offset() const { return write_offset_; }
|
| -
|
| - bool HaveOffset(int32 offset) const;
|
| - std::vector<int32> GetOffsets() const { return offsets_; }
|
| -
|
| - // Manage the number of users of this segment.
|
| - void AddUser();
|
| - void ReleaseUser();
|
| - bool HasNoUsers() const;
|
| -
|
| - // Performs segment initialization. Must be the first function called on the
|
| - // segment and further calls should be made only if it is successful.
|
| - bool Init();
|
| -
|
| - // Writes |size| bytes of data from |buffer| to segment, returns false if
|
| - // fails and true if succeeds. Can block for a long time.
|
| - bool WriteData(const void* buffer, int32 size);
|
| -
|
| - // Reads |size| bytes of data living at |offset| into |buffer| returns true on
|
| - // success and false on failure.
|
| - bool ReadData(void* buffer, int32 size, int32 offset) const;
|
| -
|
| - // Stores the offset in the metadata.
|
| - void StoreOffset(int32 offset);
|
| -
|
| - // Closes the segment, returns true on success and false on failure. Closing
|
| - // a segment makes it immutable.
|
| - bool Close();
|
| -
|
| - // Returns true if segment can accommodate an entry of |size| bytes.
|
| - bool CanHold(int32 size) const;
|
| -
|
| - private:
|
| - int32 index_;
|
| - int32 num_users_;
|
| - bool read_only_; // Indicates whether the segment can be written to.
|
| - bool init_; // Indicates whether segment was initialized.
|
| - Storage* storage_; // Storage on which the segment resides.
|
| - const int32 offset_; // Offset of the segment on |storage_|.
|
| - const int32 summary_offset_; // Offset of the segment summary.
|
| - int32 write_offset_; // Current write offset.
|
| - std::vector<int32> offsets_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(Segment);
|
| -};
|
| -
|
| -} // namespace disk_cache
|
| -
|
| -#endif // NET_DISK_CACHE_FLASH_SEGMENT_H_
|
|
|