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

Side by Side Diff: net/tools/quic/quic_in_memory_cache.cc

Issue 1777083002: Make QuicSimpleServerStream supports multipart response body (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@quicsmaller
Patch Set: Rebased Created 4 years, 9 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
« no previous file with comments | « net/tools/quic/quic_in_memory_cache.h ('k') | net/tools/quic/quic_simple_server_stream.h » ('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) 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 #include "net/tools/quic/quic_in_memory_cache.h" 5 #include "net/tools/quic/quic_in_memory_cache.h"
6 6
7 #include "base/files/file_enumerator.h" 7 #include "base/files/file_enumerator.h"
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 StringPiece path, 65 StringPiece path,
66 int response_code, 66 int response_code,
67 StringPiece body) { 67 StringPiece body) {
68 SpdyHeaderBlock response_headers; 68 SpdyHeaderBlock response_headers;
69 response_headers[":status"] = IntToString(response_code); 69 response_headers[":status"] = IntToString(response_code);
70 response_headers["content-length"] = 70 response_headers["content-length"] =
71 IntToString(static_cast<int>(body.length())); 71 IntToString(static_cast<int>(body.length()));
72 AddResponse(host, path, response_headers, body); 72 AddResponse(host, path, response_headers, body);
73 } 73 }
74 74
75 void QuicInMemoryCache::AddBidirectionalResponse(
76 StringPiece host,
77 StringPiece path,
78 int response_code,
79 const std::vector<std::string>& body_chunks,
80 const SpdyHeaderBlock& response_trailers) {
81 SpdyHeaderBlock response_headers;
82 response_headers[":status"] = IntToString(response_code);
83 AddResponseImpl(host, path, BIDIRECTIONAL, response_headers, "", body_chunks,
84 response_trailers);
85 }
86
75 void QuicInMemoryCache::AddSimpleResponseWithServerPushResources( 87 void QuicInMemoryCache::AddSimpleResponseWithServerPushResources(
76 StringPiece host, 88 StringPiece host,
77 StringPiece path, 89 StringPiece path,
78 int response_code, 90 int response_code,
79 StringPiece body, 91 StringPiece body,
80 list<ServerPushInfo> push_resources) { 92 list<ServerPushInfo> push_resources) {
81 AddSimpleResponse(host, path, response_code, body); 93 AddSimpleResponse(host, path, response_code, body);
82 MaybeAddServerPushResources(host, path, push_resources); 94 MaybeAddServerPushResources(host, path, push_resources);
83 } 95 }
84 96
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 STLDeleteValues(&responses_); 212 STLDeleteValues(&responses_);
201 } 213 }
202 214
203 void QuicInMemoryCache::AddResponseImpl( 215 void QuicInMemoryCache::AddResponseImpl(
204 StringPiece host, 216 StringPiece host,
205 StringPiece path, 217 StringPiece path,
206 SpecialResponseType response_type, 218 SpecialResponseType response_type,
207 const SpdyHeaderBlock& response_headers, 219 const SpdyHeaderBlock& response_headers,
208 StringPiece response_body, 220 StringPiece response_body,
209 const SpdyHeaderBlock& response_trailers) { 221 const SpdyHeaderBlock& response_trailers) {
222 std::vector<std::string> body_chunks;
223 AddResponseImpl(host, path, response_type, response_headers, response_body,
224 body_chunks, response_trailers);
225 }
226 void QuicInMemoryCache::AddResponseImpl(
227 StringPiece host,
228 StringPiece path,
229 SpecialResponseType response_type,
230 const SpdyHeaderBlock& response_headers,
231 StringPiece response_body,
232 const std::vector<std::string>& body_chunks,
233 const SpdyHeaderBlock& response_trailers) {
210 DCHECK(!host.empty()) << "Host must be populated, e.g. \"www.google.com\""; 234 DCHECK(!host.empty()) << "Host must be populated, e.g. \"www.google.com\"";
211 string key = GetKey(host, path); 235 string key = GetKey(host, path);
212 if (ContainsKey(responses_, key)) { 236 if (ContainsKey(responses_, key)) {
213 QUIC_BUG << "Response for '" << key << "' already exists!"; 237 QUIC_BUG << "Response for '" << key << "' already exists!";
214 return; 238 return;
215 } 239 }
216 Response* new_response = new Response(); 240 Response* new_response = new Response();
217 new_response->set_response_type(response_type); 241 new_response->set_response_type(response_type);
218 new_response->set_headers(response_headers); 242 new_response->set_headers(response_headers);
219 new_response->set_body(response_body); 243 if (response_type != BIDIRECTIONAL) {
244 CHECK(body_chunks.empty());
245 new_response->set_body(response_body);
246 } else {
247 new_response->SetBodyChunks(body_chunks);
248 }
220 new_response->set_trailers(response_trailers); 249 new_response->set_trailers(response_trailers);
221 responses_[key] = new_response; 250 responses_[key] = new_response;
222 } 251 }
223 252
224 string QuicInMemoryCache::GetKey(StringPiece host, StringPiece path) const { 253 string QuicInMemoryCache::GetKey(StringPiece host, StringPiece path) const {
225 return host.as_string() + path.as_string(); 254 return host.as_string() + path.as_string();
226 } 255 }
227 256
228 void QuicInMemoryCache::MaybeAddServerPushResources( 257 void QuicInMemoryCache::MaybeAddServerPushResources(
229 StringPiece request_host, 258 StringPiece request_host,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 for (auto it = resource_range.first; it != resource_range.second; ++it) { 290 for (auto it = resource_range.first; it != resource_range.second; ++it) {
262 ServerPushInfo push_resource = it->second; 291 ServerPushInfo push_resource = it->second;
263 if (push_resource.request_url.spec() == resource.request_url.spec()) { 292 if (push_resource.request_url.spec() == resource.request_url.spec()) {
264 return true; 293 return true;
265 } 294 }
266 } 295 }
267 return false; 296 return false;
268 } 297 }
269 298
270 } // namespace net 299 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/quic_in_memory_cache.h ('k') | net/tools/quic/quic_simple_server_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698