1c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be 3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file. 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// See net/disk_cache/disk_cache.h for the public interface. 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#ifndef NET_DISK_CACHE_MEM_RANKINGS_H__ 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define NET_DISK_CACHE_MEM_RANKINGS_H__ 9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/basictypes.h" 11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottnamespace disk_cache { 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottclass MemEntryImpl; 15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// This class handles the ranking information for the memory-only cache. 17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottclass MemRankings { 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott public: 19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott MemRankings() : head_(NULL), tail_(NULL) {} 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ~MemRankings(); 21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Inserts a given entry at the head of the queue. 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott void Insert(MemEntryImpl* node); 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Removes a given entry from the LRU list. 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott void Remove(MemEntryImpl* node); 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Moves a given entry to the head. 29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott void UpdateRank(MemEntryImpl* node); 30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Iterates through the list. 32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott MemEntryImpl* GetNext(MemEntryImpl* node); 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott MemEntryImpl* GetPrev(MemEntryImpl* node); 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott private: 36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott MemEntryImpl* head_; 37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott MemEntryImpl* tail_; 38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DISALLOW_EVIL_CONSTRUCTORS(MemRankings); 40c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}; 41c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 42c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} // namespace disk_cache 43c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 44c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif // NET_DISK_CACHE_MEM_RANKINGS_H__ 45