// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_HTTP_HTTP_CACHE_WRITERS_H_ #define NET_HTTP_HTTP_CACHE_WRITERS_H_ #include <map> #include <memory> #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "net/base/completion_once_callback.h" #include "net/http/http_cache.h" #include "net/http/http_response_info.h" namespace net { class HttpResponseInfo; class IOBuffer; class PartialData; // If multiple HttpCache::Transactions are accessing the same cache entry // simultaneously, their access to the data read from network is synchronized // by HttpCache::Writers. This enables each of those transactions to drive // reading the response body from the network ensuring a slow consumer does not // starve other consumers of the same resource. // // Writers represents the set of all HttpCache::Transactions that are reading // from the network using the same network transaction and writing to the same // cache entry. It is owned by the ActiveEntry. The writers object must be // deleted when HttpCache::WritersDoneWritingToEntry is called as it doesn't // expect any of its ongoing IO transactions (e.g., network reads or cache // writers) to complete after that point and won't know what to do with them. class NET_EXPORT_PRIVATE HttpCache::Writers { … }; } // namespace net #endif // NET_HTTP_HTTP_CACHE_WRITERS_H_