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

Side by Side Diff: net/http/http_cache.h

Issue 1230113012: [net] Better StopCaching() handling for HttpCache::Transaction. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add missing MockTransaction initializers Created 5 years, 3 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // This file declares a HttpTransactionFactory implementation that can be 5 // This file declares a HttpTransactionFactory implementation that can be
6 // layered on top of another HttpTransactionFactory to add HTTP caching. The 6 // layered on top of another HttpTransactionFactory to add HTTP caching. The
7 // caching logic follows RFC 7234 (any exceptions are called out in the code). 7 // caching logic follows RFC 7234 (any exceptions are called out in the code).
8 // 8 //
9 // The HttpCache takes a disk_cache::Backend as a parameter, and uses that for 9 // The HttpCache takes a disk_cache::Backend as a parameter, and uses that for
10 // the cache storage. 10 // the cache storage.
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 // Disk cache entry data indices. 233 // Disk cache entry data indices.
234 enum { 234 enum {
235 kResponseInfoIndex = 0, 235 kResponseInfoIndex = 0,
236 kResponseContentIndex, 236 kResponseContentIndex,
237 kMetadataIndex, 237 kMetadataIndex,
238 238
239 // Must remain at the end of the enum. 239 // Must remain at the end of the enum.
240 kNumCacheEntryDataIndices 240 kNumCacheEntryDataIndices
241 }; 241 };
242 242
243 // Used with DoneWithEntry() to indicate the state of the entry.
244 enum class EntryState { KEEP, DOOM };
245
243 class MetadataWriter; 246 class MetadataWriter;
244 class QuicServerInfoFactoryAdaptor; 247 class QuicServerInfoFactoryAdaptor;
245 class Transaction; 248 class Transaction;
246 class WorkItem; 249 class WorkItem;
247 friend class Transaction; 250 friend class Transaction;
248 friend class ViewCacheHelper; 251 friend class ViewCacheHelper;
249 struct PendingOp; // Info for an entry under construction. 252 struct PendingOp; // Info for an entry under construction.
250 253
251 typedef std::list<Transaction*> TransactionList; 254 typedef std::list<Transaction*> TransactionList;
252 typedef std::list<WorkItem*> WorkItemList; 255 typedef std::list<WorkItem*> WorkItemList;
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 // Destroys an ActiveEntry (active or doomed). 343 // Destroys an ActiveEntry (active or doomed).
341 void DestroyEntry(ActiveEntry* entry); 344 void DestroyEntry(ActiveEntry* entry);
342 345
343 // Adds a transaction to an ActiveEntry. If this method returns ERR_IO_PENDING 346 // Adds a transaction to an ActiveEntry. If this method returns ERR_IO_PENDING
344 // the transaction will be notified about completion via its IO callback. This 347 // the transaction will be notified about completion via its IO callback. This
345 // method returns ERR_CACHE_RACE to signal the transaction that it cannot be 348 // method returns ERR_CACHE_RACE to signal the transaction that it cannot be
346 // added to the provided entry, and it should retry the process with another 349 // added to the provided entry, and it should retry the process with another
347 // one (in this case, the entry is no longer valid). 350 // one (in this case, the entry is no longer valid).
348 int AddTransactionToEntry(ActiveEntry* entry, Transaction* trans); 351 int AddTransactionToEntry(ActiveEntry* entry, Transaction* trans);
349 352
350 // Called when the transaction has finished working with this entry. |cancel| 353 // Removes |trans| from |entry|. |trans| is required to be a reader or writer
351 // is true if the operation was cancelled by the caller instead of running 354 // that was added to |trans| by AddTransactionToEntry(). For writers,
352 // to completion. 355 // |entry_state| indicates whether the cache entry should be kept or
353 void DoneWithEntry(ActiveEntry* entry, Transaction* trans, bool cancel); 356 // discarded.
354 357 //
355 // Called when the transaction has finished writing to this entry. |success| 358 // If |entry_state| is DOOM, then the cache entry is destroyed and any
356 // is false if the cache entry should be deleted. 359 // pending transactions that were formerly waiting to be added to |entry| will
357 void DoneWritingToEntry(ActiveEntry* entry, bool success); 360 // receive ERR_CACHE_RACE.
358 361 //
359 // Called when the transaction has finished reading from this entry. 362 // If |entry_state| is KEEP, then |entry| is assumed to be safe for
360 void DoneReadingFromEntry(ActiveEntry* entry, Transaction* trans); 363 // further consumption and pending transaction will be permitted to use it.
364 void DoneWithEntry(ActiveEntry* entry,
365 Transaction* trans,
366 EntryState entry_state);
361 367
362 // Converts the active writer transaction to a reader so that other 368 // Converts the active writer transaction to a reader so that other
363 // transactions can start reading from this entry. 369 // transactions can start reading from this entry.
364 void ConvertWriterToReader(ActiveEntry* entry); 370 void ConvertWriterToReader(ActiveEntry* entry);
365 371
366 // Returns the LoadState of the provided pending transaction. 372 // Returns the LoadState of the provided pending transaction.
367 LoadState GetLoadStateForPendingTransaction(const Transaction* trans); 373 LoadState GetLoadStateForPendingTransaction(const Transaction* trans);
368 374
369 // Removes the transaction |trans|, from the pending list of an entry 375 // Removes the transaction |trans|, from the pending list of an entry
370 // (PendingOp, active or doomed entry). 376 // (PendingOp, active or doomed entry).
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 scoped_ptr<base::Clock> clock_; 447 scoped_ptr<base::Clock> clock_;
442 448
443 base::WeakPtrFactory<HttpCache> weak_factory_; 449 base::WeakPtrFactory<HttpCache> weak_factory_;
444 450
445 DISALLOW_COPY_AND_ASSIGN(HttpCache); 451 DISALLOW_COPY_AND_ASSIGN(HttpCache);
446 }; 452 };
447 453
448 } // namespace net 454 } // namespace net
449 455
450 #endif // NET_HTTP_HTTP_CACHE_H_ 456 #endif // NET_HTTP_HTTP_CACHE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698