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

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

Issue 2886483002: Adds a new class HttpCache::Writers for multiple cache transactions reading from the network. (Closed)
Patch Set: Feedback addressed Created 3 years, 6 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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 public: 62 public:
63 // The cache mode of operation. 63 // The cache mode of operation.
64 enum Mode { 64 enum Mode {
65 // Normal mode just behaves like a standard web cache. 65 // Normal mode just behaves like a standard web cache.
66 NORMAL = 0, 66 NORMAL = 0,
67 // Disables reads and writes from the cache. 67 // Disables reads and writes from the cache.
68 // Equivalent to setting LOAD_DISABLE_CACHE on every request. 68 // Equivalent to setting LOAD_DISABLE_CACHE on every request.
69 DISABLE 69 DISABLE
70 }; 70 };
71 71
72 class WritersTest;
73
72 // A BackendFactory creates a backend object to be used by the HttpCache. 74 // A BackendFactory creates a backend object to be used by the HttpCache.
73 class NET_EXPORT BackendFactory { 75 class NET_EXPORT BackendFactory {
74 public: 76 public:
75 virtual ~BackendFactory() {} 77 virtual ~BackendFactory() {}
76 78
77 // The actual method to build the backend. Returns a net error code. If 79 // The actual method to build the backend. Returns a net error code. If
78 // ERR_IO_PENDING is returned, the |callback| will be notified when the 80 // ERR_IO_PENDING is returned, the |callback| will be notified when the
79 // operation completes, and |backend| must remain valid until the 81 // operation completes, and |backend| must remain valid until the
80 // notification arrives. 82 // notification arrives.
81 // The implementation must not access the factory object after invoking the 83 // The implementation must not access the factory object after invoking the
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 kMetadataIndex, 235 kMetadataIndex,
234 236
235 // Must remain at the end of the enum. 237 // Must remain at the end of the enum.
236 kNumCacheEntryDataIndices 238 kNumCacheEntryDataIndices
237 }; 239 };
238 240
239 class MetadataWriter; 241 class MetadataWriter;
240 class QuicServerInfoFactoryAdaptor; 242 class QuicServerInfoFactoryAdaptor;
241 class Transaction; 243 class Transaction;
242 class WorkItem; 244 class WorkItem;
245 class Writers;
246 friend class WritersTest; // To access ActiveEntry in the test class.
243 friend class Transaction; 247 friend class Transaction;
244 friend class ViewCacheHelper; 248 friend class ViewCacheHelper;
245 struct PendingOp; // Info for an entry under construction. 249 struct PendingOp; // Info for an entry under construction.
246 250
247 using TransactionList = std::list<Transaction*>; 251 using TransactionList = std::list<Transaction*>;
248 using TransactionSet = std::unordered_set<Transaction*>; 252 using TransactionSet = std::unordered_set<Transaction*>;
249 typedef std::list<std::unique_ptr<WorkItem>> WorkItemList; 253 typedef std::list<std::unique_ptr<WorkItem>> WorkItemList;
250 254
251 struct ActiveEntry { 255 struct ActiveEntry {
252 explicit ActiveEntry(disk_cache::Entry* entry); 256 explicit ActiveEntry(disk_cache::Entry* entry);
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 std::unique_ptr<base::Clock> clock_; 439 std::unique_ptr<base::Clock> clock_;
436 440
437 base::WeakPtrFactory<HttpCache> weak_factory_; 441 base::WeakPtrFactory<HttpCache> weak_factory_;
438 442
439 DISALLOW_COPY_AND_ASSIGN(HttpCache); 443 DISALLOW_COPY_AND_ASSIGN(HttpCache);
440 }; 444 };
441 445
442 } // namespace net 446 } // namespace net
443 447
444 #endif // NET_HTTP_HTTP_CACHE_H_ 448 #endif // NET_HTTP_HTTP_CACHE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698