summaryrefslogtreecommitdiffstats
path: root/chromium/net/disk_cache/rankings.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/disk_cache/rankings.h')
-rw-r--r--chromium/net/disk_cache/rankings.h214
1 files changed, 0 insertions, 214 deletions
diff --git a/chromium/net/disk_cache/rankings.h b/chromium/net/disk_cache/rankings.h
deleted file mode 100644
index cd94eaf1c59..00000000000
--- a/chromium/net/disk_cache/rankings.h
+++ /dev/null
@@ -1,214 +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.
-
-// See net/disk_cache/disk_cache.h for the public interface.
-
-#ifndef NET_DISK_CACHE_RANKINGS_H_
-#define NET_DISK_CACHE_RANKINGS_H_
-
-#include <list>
-
-#include "base/memory/scoped_ptr.h"
-#include "net/disk_cache/addr.h"
-#include "net/disk_cache/mapped_file.h"
-#include "net/disk_cache/storage_block.h"
-
-namespace disk_cache {
-
-class BackendImpl;
-struct LruData;
-struct RankingsNode;
-typedef StorageBlock<RankingsNode> CacheRankingsBlock;
-
-// Type of crashes generated for the unit tests.
-enum RankCrashes {
- NO_CRASH = 0,
- INSERT_EMPTY_1,
- INSERT_EMPTY_2,
- INSERT_EMPTY_3,
- INSERT_ONE_1,
- INSERT_ONE_2,
- INSERT_ONE_3,
- INSERT_LOAD_1,
- INSERT_LOAD_2,
- REMOVE_ONE_1,
- REMOVE_ONE_2,
- REMOVE_ONE_3,
- REMOVE_ONE_4,
- REMOVE_HEAD_1,
- REMOVE_HEAD_2,
- REMOVE_HEAD_3,
- REMOVE_HEAD_4,
- REMOVE_TAIL_1,
- REMOVE_TAIL_2,
- REMOVE_TAIL_3,
- REMOVE_LOAD_1,
- REMOVE_LOAD_2,
- REMOVE_LOAD_3,
- MAX_CRASH
-};
-
-// This class handles the ranking information for the cache.
-class Rankings {
- public:
- // Possible lists of entries.
- enum List {
- NO_USE = 0, // List of entries that have not been reused.
- LOW_USE, // List of entries with low reuse.
- HIGH_USE, // List of entries with high reuse.
- RESERVED, // Reserved for future use.
- DELETED, // List of recently deleted or doomed entries.
- LAST_ELEMENT
- };
-
- // This class provides a specialized version of scoped_ptr, that calls
- // Rankings whenever a CacheRankingsBlock is deleted, to keep track of cache
- // iterators that may go stale.
- class ScopedRankingsBlock : public scoped_ptr<CacheRankingsBlock> {
- public:
- ScopedRankingsBlock();
- explicit ScopedRankingsBlock(Rankings* rankings);
- ScopedRankingsBlock(Rankings* rankings, CacheRankingsBlock* node);
-
- ~ScopedRankingsBlock() {
- rankings_->FreeRankingsBlock(get());
- }
-
- void set_rankings(Rankings* rankings) {
- rankings_ = rankings;
- }
-
- // scoped_ptr::reset will delete the object.
- void reset(CacheRankingsBlock* p = NULL) {
- if (p != get())
- rankings_->FreeRankingsBlock(get());
- scoped_ptr<CacheRankingsBlock>::reset(p);
- }
-
- private:
- Rankings* rankings_;
- DISALLOW_COPY_AND_ASSIGN(ScopedRankingsBlock);
- };
-
- // If we have multiple lists, we have to iterate through all at the same time.
- // This structure keeps track of where we are on the iteration.
- struct Iterator {
- explicit Iterator(Rankings* rankings);
- ~Iterator();
-
- List list; // Which entry was returned to the user.
- CacheRankingsBlock* nodes[3]; // Nodes on the first three lists.
- Rankings* my_rankings;
- };
-
- Rankings();
- ~Rankings();
-
- bool Init(BackendImpl* backend, bool count_lists);
-
- // Restores original state, leaving the object ready for initialization.
- void Reset();
-
- // Inserts a given entry at the head of the queue.
- void Insert(CacheRankingsBlock* node, bool modified, List list);
-
- // Removes a given entry from the LRU list. If |strict| is true, this method
- // assumes that |node| is not pointed to by an active iterator. On the other
- // hand, removing that restriction allows the current "head" of an iterator
- // to be removed from the list (basically without control of the code that is
- // performing the iteration), so it should be used with extra care.
- void Remove(CacheRankingsBlock* node, List list, bool strict);
-
- // Moves a given entry to the head.
- void UpdateRank(CacheRankingsBlock* node, bool modified, List list);
-
- // Iterates through the list.
- CacheRankingsBlock* GetNext(CacheRankingsBlock* node, List list);
- CacheRankingsBlock* GetPrev(CacheRankingsBlock* node, List list);
- void FreeRankingsBlock(CacheRankingsBlock* node);
-
- // Controls tracking of nodes used for enumerations.
- void TrackRankingsBlock(CacheRankingsBlock* node, bool start_tracking);
-
- // Peforms a simple self-check of the lists, and returns the number of items
- // or an error code (negative value).
- int SelfCheck();
-
- // Returns false if the entry is clearly invalid. from_list is true if the
- // node comes from the LRU list.
- bool SanityCheck(CacheRankingsBlock* node, bool from_list) const;
- bool DataSanityCheck(CacheRankingsBlock* node, bool from_list) const;
-
- // Sets the |contents| field of |node| to |address|.
- void SetContents(CacheRankingsBlock* node, CacheAddr address);
-
- private:
- typedef std::pair<CacheAddr, CacheRankingsBlock*> IteratorPair;
- typedef std::list<IteratorPair> IteratorList;
-
- void ReadHeads();
- void ReadTails();
- void WriteHead(List list);
- void WriteTail(List list);
-
- // Gets the rankings information for a given rankings node. We may end up
- // sharing the actual memory with a loaded entry, but we are not taking a
- // reference to that entry, so |rankings| must be short lived.
- bool GetRanking(CacheRankingsBlock* rankings);
-
- // Makes |rankings| suitable to live a long life.
- void ConvertToLongLived(CacheRankingsBlock* rankings);
-
- // Finishes a list modification after a crash.
- void CompleteTransaction();
- void FinishInsert(CacheRankingsBlock* rankings);
- void RevertRemove(CacheRankingsBlock* rankings);
-
- // Returns false if node is not properly linked. This method may change the
- // provided |list| to reflect the list where this node is actually stored.
- bool CheckLinks(CacheRankingsBlock* node, CacheRankingsBlock* prev,
- CacheRankingsBlock* next, List* list);
-
- // Checks the links between two consecutive nodes.
- bool CheckSingleLink(CacheRankingsBlock* prev, CacheRankingsBlock* next);
-
- // Peforms a simple check of the list, and returns the number of items or an
- // error code (negative value).
- int CheckList(List list);
-
- // Walks a list in the desired direction until the nodes |end1| or |end2| are
- // reached. Returns an error code (0 on success), the number of items verified
- // and the addresses of the last nodes visited.
- int CheckListSection(List list, Addr end1, Addr end2, bool forward,
- Addr* last, Addr* second_last, int* num_items);
-
- // Returns true if addr is the head or tail of any list. When there is a
- // match |list| will contain the list number for |addr|.
- bool IsHead(CacheAddr addr, List* list) const;
- bool IsTail(CacheAddr addr, List* list) const;
-
- // Updates the iterators whenever node is being changed.
- void UpdateIterators(CacheRankingsBlock* node);
-
- // Invalidates the iterators pointing to this node.
- void InvalidateIterators(CacheRankingsBlock* node);
-
- // Keeps track of the number of entries on a list.
- void IncrementCounter(List list);
- void DecrementCounter(List list);
-
- bool init_;
- bool count_lists_;
- Addr heads_[LAST_ELEMENT];
- Addr tails_[LAST_ELEMENT];
- BackendImpl* backend_;
- LruData* control_data_; // Data related to the LRU lists.
- IteratorList iterators_;
-
- DISALLOW_COPY_AND_ASSIGN(Rankings);
-};
-
-} // namespace disk_cache
-
-#endif // NET_DISK_CACHE_RANKINGS_H_