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

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

Issue 112343002: Merge ReliableQuicStream::WriteData with (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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 | Annotate | Revision Log
« no previous file with comments | « net/tools/quic/quic_spdy_server_stream.h ('k') | no next file » | 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_spdy_server_stream.h" 5 #include "net/tools/quic/quic_spdy_server_stream.h"
6 6
7 #include "base/memory/singleton.h" 7 #include "base/memory/singleton.h"
8 #include "net/quic/quic_session.h" 8 #include "net/quic/quic_session.h"
9 #include "net/spdy/spdy_framer.h" 9 #include "net/spdy/spdy_framer.h"
10 #include "net/tools/quic/quic_in_memory_cache.h" 10 #include "net/tools/quic/quic_in_memory_cache.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 } 64 }
65 65
66 void QuicSpdyServerStream::SendHeaders( 66 void QuicSpdyServerStream::SendHeaders(
67 const BalsaHeaders& response_headers) { 67 const BalsaHeaders& response_headers) {
68 SpdyHeaderBlock header_block = 68 SpdyHeaderBlock header_block =
69 SpdyUtils::ResponseHeadersToSpdyHeaders(response_headers); 69 SpdyUtils::ResponseHeadersToSpdyHeaders(response_headers);
70 70
71 string headers_string; 71 string headers_string;
72 headers_string = session()->compressor()->CompressHeaders(header_block); 72 headers_string = session()->compressor()->CompressHeaders(header_block);
73 73
74 WriteData(headers_string, false); 74 WriteOrBufferData(headers_string, false);
75 } 75 }
76 76
77 int QuicSpdyServerStream::ParseRequestHeaders() { 77 int QuicSpdyServerStream::ParseRequestHeaders() {
78 size_t read_buf_len = static_cast<size_t>(read_buf_->offset()); 78 size_t read_buf_len = static_cast<size_t>(read_buf_->offset());
79 SpdyFramer framer(SPDY3); 79 SpdyFramer framer(SPDY3);
80 SpdyHeaderBlock headers; 80 SpdyHeaderBlock headers;
81 char* data = read_buf_->StartOfBuffer(); 81 char* data = read_buf_->StartOfBuffer();
82 size_t len = framer.ParseHeaderBlockInBuffer(data, read_buf_->offset(), 82 size_t len = framer.ParseHeaderBlockInBuffer(data, read_buf_->offset(),
83 &headers); 83 &headers);
84 if (len == 0) { 84 if (len == 0) {
(...skipping 17 matching lines...) Expand all
102 void QuicSpdyServerStream::SendResponse() { 102 void QuicSpdyServerStream::SendResponse() {
103 // Find response in cache. If not found, send error response. 103 // Find response in cache. If not found, send error response.
104 const QuicInMemoryCache::Response* response = 104 const QuicInMemoryCache::Response* response =
105 QuicInMemoryCache::GetInstance()->GetResponse(headers_); 105 QuicInMemoryCache::GetInstance()->GetResponse(headers_);
106 if (response == NULL) { 106 if (response == NULL) {
107 SendErrorResponse(); 107 SendErrorResponse();
108 return; 108 return;
109 } 109 }
110 110
111 DLOG(INFO) << "Sending response for stream " << id(); 111 DLOG(INFO) << "Sending response for stream " << id();
112 SendHeaders(response->headers()); 112 SendHeadersAndBody(response->headers(), response->body());
113 WriteData(response->body(), true);
114 } 113 }
115 114
116 void QuicSpdyServerStream::SendErrorResponse() { 115 void QuicSpdyServerStream::SendErrorResponse() {
117 DLOG(INFO) << "Sending error response for stream " << id(); 116 DLOG(INFO) << "Sending error response for stream " << id();
118 BalsaHeaders headers; 117 BalsaHeaders headers;
119 headers.SetResponseFirstlineFromStringPieces( 118 headers.SetResponseFirstlineFromStringPieces(
120 "HTTP/1.1", "500", "Server Error"); 119 "HTTP/1.1", "500", "Server Error");
121 headers.ReplaceOrAppendHeader("content-length", "3"); 120 headers.ReplaceOrAppendHeader("content-length", "3");
122 SendHeaders(headers); 121 SendHeadersAndBody(headers, "bad");
123 WriteData("bad", true);
124 } 122 }
125 123
126 QuicConsumedData QuicSpdyServerStream::WriteData(StringPiece data, bool fin) { 124 void QuicSpdyServerStream:: SendHeadersAndBody(
125 const BalsaHeaders& response_headers,
126 StringPiece data) {
127 // We only support SPDY and HTTP, and neither handles bidirectional streaming. 127 // We only support SPDY and HTTP, and neither handles bidirectional streaming.
128 if (!read_side_closed()) { 128 if (!read_side_closed()) {
129 CloseReadSide(); 129 CloseReadSide();
130 } 130 }
131 return ReliableQuicStream::WriteData(data, fin); 131 SendHeaders(response_headers);
132 WriteOrBufferData(data, true);
132 } 133 }
133 134
134 } // namespace tools 135 } // namespace tools
135 } // namespace net 136 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/quic_spdy_server_stream.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698