Index: net/tools/quic/quic_in_memory_cache.h |
diff --git a/net/tools/quic/quic_in_memory_cache.h b/net/tools/quic/quic_in_memory_cache.h |
deleted file mode 100644 |
index 1fdc340097d599a59ac9fec63d0548bb7ffc7a62..0000000000000000000000000000000000000000 |
--- a/net/tools/quic/quic_in_memory_cache.h |
+++ /dev/null |
@@ -1,221 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef NET_TOOLS_QUIC_QUIC_IN_MEMORY_CACHE_H_ |
-#define NET_TOOLS_QUIC_QUIC_IN_MEMORY_CACHE_H_ |
- |
-#include <list> |
-#include <map> |
-#include <memory> |
-#include <string> |
-#include <unordered_map> |
-#include <vector> |
- |
-#include "base/files/file_path.h" |
-#include "base/macros.h" |
-#include "base/strings/string_piece.h" |
-#include "net/http/http_response_headers.h" |
-#include "net/quic/core/spdy_utils.h" |
-#include "net/spdy/spdy_framer.h" |
-#include "url/gurl.h" |
- |
-namespace net { |
- |
-// In-memory cache for HTTP responses. |
-// Reads from disk cache generated by: |
-// `wget -p --save_headers <url>` |
-class QuicInMemoryCache { |
- public: |
- // A ServerPushInfo contains path of the push request and everything needed in |
- // comprising a response for the push request. |
- struct ServerPushInfo { |
- ServerPushInfo(GURL request_url, |
- SpdyHeaderBlock headers, |
- SpdyPriority priority, |
- std::string body); |
- ServerPushInfo(const ServerPushInfo& other); |
- GURL request_url; |
- SpdyHeaderBlock headers; |
- SpdyPriority priority; |
- std::string body; |
- }; |
- |
- enum SpecialResponseType { |
- REGULAR_RESPONSE, // Send the headers and body like a server should. |
- CLOSE_CONNECTION, // Close the connection (sending the close packet). |
- IGNORE_REQUEST, // Do nothing, expect the client to time out. |
- }; |
- |
- // Container for response header/body pairs. |
- class Response { |
- public: |
- Response(); |
- ~Response(); |
- |
- SpecialResponseType response_type() const { return response_type_; } |
- const SpdyHeaderBlock& headers() const { return headers_; } |
- const SpdyHeaderBlock& trailers() const { return trailers_; } |
- const base::StringPiece body() const { return base::StringPiece(body_); } |
- |
- void set_response_type(SpecialResponseType response_type) { |
- response_type_ = response_type; |
- } |
- void set_headers(SpdyHeaderBlock headers) { headers_ = std::move(headers); } |
- void set_trailers(SpdyHeaderBlock trailers) { |
- trailers_ = std::move(trailers); |
- } |
- void set_body(base::StringPiece body) { body.CopyToString(&body_); } |
- |
- private: |
- SpecialResponseType response_type_; |
- SpdyHeaderBlock headers_; |
- SpdyHeaderBlock trailers_; |
- std::string body_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Response); |
- }; |
- |
- // Class to manage loading a resource file into memory. There are |
- // two uses: called by InitializeFromDirectory to load resources |
- // from files, and recursively called when said resources specify |
- // server push associations. |
- class ResourceFile { |
- public: |
- explicit ResourceFile(const base::FilePath& file_name); |
- virtual ~ResourceFile(); |
- |
- void Read(); |
- |
- void SetHostPathFromBase(base::StringPiece base); |
- |
- base::StringPiece host() { return host_; } |
- void set_host(base::StringPiece host) { host_ = host; } |
- |
- base::StringPiece path() { return path_; } |
- void set_path(base::StringPiece path) { path_ = path; } |
- |
- const SpdyHeaderBlock& spdy_headers() { return spdy_headers_; } |
- |
- base::StringPiece body() { return body_; } |
- |
- const std::vector<base::StringPiece>& push_urls() { return push_urls_; } |
- |
- const std::string& file_name() { return file_name_string_; } |
- |
- protected: |
- void HandleXOriginalUrl(); |
- void HandlePushUrls(const std::vector<base::StringPiece>& push_urls); |
- base::StringPiece RemoveScheme(base::StringPiece url); |
- |
- const std::string cache_directory_; |
- const base::FilePath file_name_; |
- const std::string file_name_string_; |
- std::string file_contents_; |
- base::StringPiece body_; |
- SpdyHeaderBlock spdy_headers_; |
- base::StringPiece x_original_url_; |
- std::vector<base::StringPiece> push_urls_; |
- |
- private: |
- base::StringPiece host_; |
- base::StringPiece path_; |
- QuicInMemoryCache* cache_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ResourceFile); |
- }; |
- |
- QuicInMemoryCache(); |
- ~QuicInMemoryCache(); |
- |
- // Retrieve a response from this cache for a given host and path.. |
- // If no appropriate response exists, nullptr is returned. |
- const Response* GetResponse(base::StringPiece host, |
- base::StringPiece path) const; |
- |
- // Adds a simple response to the cache. The response headers will |
- // only contain the "content-length" header with the length of |body|. |
- void AddSimpleResponse(base::StringPiece host, |
- base::StringPiece path, |
- int response_code, |
- base::StringPiece body); |
- |
- // Add a simple response to the cache as AddSimpleResponse() does, and add |
- // some server push resources(resource path, corresponding response status and |
- // path) associated with it. |
- // Push resource implicitly come from the same host. |
- void AddSimpleResponseWithServerPushResources( |
- base::StringPiece host, |
- base::StringPiece path, |
- int response_code, |
- base::StringPiece body, |
- std::list<ServerPushInfo> push_resources); |
- |
- // Add a response to the cache. |
- void AddResponse(base::StringPiece host, |
- base::StringPiece path, |
- SpdyHeaderBlock response_headers, |
- base::StringPiece response_body); |
- |
- // Add a response, with trailers, to the cache. |
- void AddResponse(base::StringPiece host, |
- base::StringPiece path, |
- SpdyHeaderBlock response_headers, |
- base::StringPiece response_body, |
- SpdyHeaderBlock response_trailers); |
- |
- // Simulate a special behavior at a particular path. |
- void AddSpecialResponse(base::StringPiece host, |
- base::StringPiece path, |
- SpecialResponseType response_type); |
- |
- // Sets a default response in case of cache misses. Takes ownership of |
- // 'response'. |
- void AddDefaultResponse(Response* response); |
- |
- // |cache_cirectory| can be generated using `wget -p --save-headers <url>`. |
- void InitializeFromDirectory(const std::string& cache_directory); |
- |
- // Find all the server push resources associated with |request_url|. |
- std::list<ServerPushInfo> GetServerPushResources(std::string request_url); |
- |
- private: |
- void AddResponseImpl(base::StringPiece host, |
- base::StringPiece path, |
- SpecialResponseType response_type, |
- SpdyHeaderBlock response_headers, |
- base::StringPiece response_body, |
- SpdyHeaderBlock response_trailers); |
- |
- std::string GetKey(base::StringPiece host, base::StringPiece path) const; |
- |
- // Add some server push urls with given responses for specified |
- // request if these push resources are not associated with this request yet. |
- void MaybeAddServerPushResources(base::StringPiece request_host, |
- base::StringPiece request_path, |
- std::list<ServerPushInfo> push_resources); |
- |
- // Check if push resource(push_host/push_path) associated with given request |
- // url already exists in server push map. |
- bool PushResourceExistsInCache(std::string original_request_url, |
- ServerPushInfo resource); |
- |
- // Cached responses. |
- std::unordered_map<std::string, std::unique_ptr<Response>> responses_; |
- |
- // The default response for cache misses, if set. |
- std::unique_ptr<Response> default_response_; |
- |
- // A map from request URL to associated server push responses (if any). |
- std::multimap<std::string, ServerPushInfo> server_push_resources_; |
- |
- // Protects against concurrent access from test threads setting responses, and |
- // server threads accessing those responses. |
- mutable base::Lock response_mutex_; |
- |
- DISALLOW_COPY_AND_ASSIGN(QuicInMemoryCache); |
-}; |
- |
-} // namespace net |
- |
-#endif // NET_TOOLS_QUIC_QUIC_IN_MEMORY_CACHE_H_ |