Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(213)

Side by Side Diff: net/disk_cache/rankings.h

Issue 155951: Disk cache: Fix handling of invalid entries that are detected... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/disk_cache/eviction.cc ('k') | net/disk_cache/rankings.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // See net/disk_cache/disk_cache.h for the public interface. 5 // See net/disk_cache/disk_cache.h for the public interface.
6 6
7 #ifndef NET_DISK_CACHE_RANKINGS_H_ 7 #ifndef NET_DISK_CACHE_RANKINGS_H_
8 #define NET_DISK_CACHE_RANKINGS_H_ 8 #define NET_DISK_CACHE_RANKINGS_H_
9 9
10 #include <list> 10 #include <list>
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 void Remove(CacheRankingsBlock* node, List list); 120 void Remove(CacheRankingsBlock* node, List list);
121 121
122 // Moves a given entry to the head. 122 // Moves a given entry to the head.
123 void UpdateRank(CacheRankingsBlock* node, bool modified, List list); 123 void UpdateRank(CacheRankingsBlock* node, bool modified, List list);
124 124
125 // Iterates through the list. 125 // Iterates through the list.
126 CacheRankingsBlock* GetNext(CacheRankingsBlock* node, List list); 126 CacheRankingsBlock* GetNext(CacheRankingsBlock* node, List list);
127 CacheRankingsBlock* GetPrev(CacheRankingsBlock* node, List list); 127 CacheRankingsBlock* GetPrev(CacheRankingsBlock* node, List list);
128 void FreeRankingsBlock(CacheRankingsBlock* node); 128 void FreeRankingsBlock(CacheRankingsBlock* node);
129 129
130 // Controls tracking of nodes used for enumerations.
131 void TrackRankingsBlock(CacheRankingsBlock* node, bool start_tracking);
132
130 // Peforms a simple self-check of the lists, and returns the number of items 133 // Peforms a simple self-check of the lists, and returns the number of items
131 // or an error code (negative value). 134 // or an error code (negative value).
132 int SelfCheck(); 135 int SelfCheck();
133 136
134 // Returns false if the entry is clearly invalid. from_list is true if the 137 // Returns false if the entry is clearly invalid. from_list is true if the
135 // node comes from the LRU list. 138 // node comes from the LRU list.
136 bool SanityCheck(CacheRankingsBlock* node, bool from_list); 139 bool SanityCheck(CacheRankingsBlock* node, bool from_list);
137 140
138 private: 141 private:
139 typedef std::pair<CacheAddr, CacheRankingsBlock*> IteratorPair; 142 typedef std::pair<CacheAddr, CacheRankingsBlock*> IteratorPair;
(...skipping 24 matching lines...) Expand all
164 bool CheckSingleLink(CacheRankingsBlock* prev, CacheRankingsBlock* next); 167 bool CheckSingleLink(CacheRankingsBlock* prev, CacheRankingsBlock* next);
165 168
166 // Peforms a simple check of the list, and returns the number of items or an 169 // Peforms a simple check of the list, and returns the number of items or an
167 // error code (negative value). 170 // error code (negative value).
168 int CheckList(List list); 171 int CheckList(List list);
169 172
170 // Returns true if addr is the head or tail of any list. 173 // Returns true if addr is the head or tail of any list.
171 bool IsHead(CacheAddr addr); 174 bool IsHead(CacheAddr addr);
172 bool IsTail(CacheAddr addr); 175 bool IsTail(CacheAddr addr);
173 176
174 // Controls tracking of nodes used for enumerations.
175 void TrackRankingsBlock(CacheRankingsBlock* node, bool start_tracking);
176
177 // Updates the iterators whenever node is being changed. 177 // Updates the iterators whenever node is being changed.
178 void UpdateIterators(CacheRankingsBlock* node); 178 void UpdateIterators(CacheRankingsBlock* node);
179 179
180 // Verifies that no iterator gets invalidated by changing a node. 180 // Invalidates the iterators pointing to this node.
181 void NotAnIterator(CacheRankingsBlock* node); 181 void InvalidateIterators(CacheRankingsBlock* node);
182 182
183 // Keeps track of the number of entries on a list. 183 // Keeps track of the number of entries on a list.
184 void IncrementCounter(List list); 184 void IncrementCounter(List list);
185 void DecrementCounter(List list); 185 void DecrementCounter(List list);
186 186
187 bool init_; 187 bool init_;
188 bool count_lists_; 188 bool count_lists_;
189 Addr heads_[LAST_ELEMENT]; 189 Addr heads_[LAST_ELEMENT];
190 Addr tails_[LAST_ELEMENT]; 190 Addr tails_[LAST_ELEMENT];
191 BackendImpl* backend_; 191 BackendImpl* backend_;
192 LruData* control_data_; // Data related to the LRU lists. 192 LruData* control_data_; // Data related to the LRU lists.
193 IteratorList iterators_; 193 IteratorList iterators_;
194 194
195 DISALLOW_COPY_AND_ASSIGN(Rankings); 195 DISALLOW_COPY_AND_ASSIGN(Rankings);
196 }; 196 };
197 197
198 } // namespace disk_cache 198 } // namespace disk_cache
199 199
200 #endif // NET_DISK_CACHE_RANKINGS_H_ 200 #endif // NET_DISK_CACHE_RANKINGS_H_
OLDNEW
« no previous file with comments | « net/disk_cache/eviction.cc ('k') | net/disk_cache/rankings.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698