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

Unified Diff: net/tools/quic/quic_simple_client_stream.cc

Issue 995423003: Add a chromium based simple QUIC client. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix iOS Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/tools/quic/quic_simple_client_stream.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/tools/quic/quic_simple_client_stream.cc
diff --git a/net/tools/quic/quic_simple_client_stream.cc b/net/tools/quic/quic_simple_client_stream.cc
index 2d649cda8d1781bcde030ef132e153b09ea23a57..528d5f76a0eb85660f9647c639134e384a586830 100644
--- a/net/tools/quic/quic_simple_client_stream.cc
+++ b/net/tools/quic/quic_simple_client_stream.cc
@@ -2,11 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "net/tools/quic/quic_spdy_client_stream.h"
+#include "net/tools/quic/quic_simple_client_stream.h"
+#include "net/http/http_response_info.h"
#include "net/spdy/spdy_framer.h"
-#include "net/tools/quic/quic_client_session.h"
-#include "net/tools/quic/spdy_utils.h"
+#include "net/spdy/spdy_http_utils.h"
+#include "net/tools/quic/quic_simple_client_session.h"
using base::StringPiece;
using std::string;
@@ -16,19 +17,20 @@ namespace tools {
static const size_t kHeaderBufInitialSize = 4096;
-QuicSpdyClientStream::QuicSpdyClientStream(QuicStreamId id,
- QuicClientSession* session)
+QuicSimpleClientStream::QuicSimpleClientStream(QuicStreamId id,
+ QuicSimpleClientSession* session)
: QuicDataStream(id, session),
read_buf_(new GrowableIOBuffer()),
response_headers_received_(false),
header_bytes_read_(0),
header_bytes_written_(0) {
+ read_buf_->SetCapacity(kHeaderBufInitialSize);
}
-QuicSpdyClientStream::~QuicSpdyClientStream() {
+QuicSimpleClientStream::~QuicSimpleClientStream() {
}
-void QuicSpdyClientStream::OnStreamFrame(const QuicStreamFrame& frame) {
+void QuicSimpleClientStream::OnStreamFrame(const QuicStreamFrame& frame) {
if (!write_side_closed()) {
DVLOG(1) << "Got a response before the request was complete. "
<< "Aborting request.";
@@ -37,14 +39,14 @@ void QuicSpdyClientStream::OnStreamFrame(const QuicStreamFrame& frame) {
QuicDataStream::OnStreamFrame(frame);
}
-void QuicSpdyClientStream::OnStreamHeadersComplete(bool fin,
+void QuicSimpleClientStream::OnStreamHeadersComplete(bool fin,
size_t frame_len) {
header_bytes_read_ = frame_len;
QuicDataStream::OnStreamHeadersComplete(fin, frame_len);
}
-uint32 QuicSpdyClientStream::ProcessData(const char* data,
- uint32 data_len) {
+uint32 QuicSimpleClientStream::ProcessData(const char* data,
+ uint32 data_len) {
int total_bytes_processed = 0;
// Are we still reading the response headers.
@@ -63,22 +65,26 @@ uint32 QuicSpdyClientStream::ProcessData(const char* data,
return data_len;
}
-void QuicSpdyClientStream::OnFinRead() {
+void QuicSimpleClientStream::OnFinRead() {
ReliableQuicStream::OnFinRead();
if (!response_headers_received_) {
Reset(QUIC_BAD_APPLICATION_PAYLOAD);
- } else if ((headers().content_length_status() ==
- BalsaHeadersEnums::VALID_CONTENT_LENGTH) &&
- data_.size() != headers().content_length()) {
+ } else if (headers()->GetContentLength() != -1 &&
+ data_.size() !=
+ static_cast<size_t>(headers()->GetContentLength())) {
Reset(QUIC_BAD_APPLICATION_PAYLOAD);
}
}
-ssize_t QuicSpdyClientStream::SendRequest(const BalsaHeaders& headers,
- StringPiece body,
- bool fin) {
- SpdyHeaderBlock header_block =
- SpdyUtils::RequestHeadersToSpdyHeaders(headers);
+size_t QuicSimpleClientStream::SendRequest(const HttpRequestInfo& headers,
+ StringPiece body,
+ bool fin) {
+ SpdyHeaderBlock header_block;
+ CreateSpdyHeadersFromHttpRequest(headers,
+ headers.extra_headers,
+ SPDY3,
+ /*direct=*/ true,
+ &header_block);
bool send_fin_with_headers = fin && body.empty();
size_t bytes_sent = body.size();
@@ -93,7 +99,7 @@ ssize_t QuicSpdyClientStream::SendRequest(const BalsaHeaders& headers,
return bytes_sent;
}
-int QuicSpdyClientStream::ParseResponseHeaders() {
+int QuicSimpleClientStream::ParseResponseHeaders() {
size_t read_buf_len = static_cast<size_t>(read_buf_->offset());
SpdyFramer framer(SPDY3);
SpdyHeaderBlock headers;
@@ -104,10 +110,13 @@ int QuicSpdyClientStream::ParseResponseHeaders() {
return -1;
}
- if (!SpdyUtils::FillBalsaResponseHeaders(headers, &headers_)) {
+ HttpResponseInfo info;
+ if (!SpdyHeadersToHttpResponse(headers, SPDY3, &info)) {
Reset(QUIC_BAD_APPLICATION_PAYLOAD);
return -1;
}
+ headers_ = info.headers;
+
response_headers_received_ = true;
size_t delta = read_buf_len - len;
@@ -115,14 +124,14 @@ int QuicSpdyClientStream::ParseResponseHeaders() {
data_.append(data + len, delta);
}
- return len;
+ return static_cast<int>(len);
}
-void QuicSpdyClientStream::SendBody(const string& data, bool fin) {
+void QuicSimpleClientStream::SendBody(const string& data, bool fin) {
SendBody(data, fin, nullptr);
}
-void QuicSpdyClientStream::SendBody(
+void QuicSimpleClientStream::SendBody(
const string& data,
bool fin,
QuicAckNotifier::DelegateInterface* delegate) {
« no previous file with comments | « net/tools/quic/quic_simple_client_stream.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698