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

Unified Diff: net/quic/chromium/bidirectional_stream_quic_impl.cc

Issue 2900533002: Add an async ReadTrailers method to QuicChromiumClientStream::Handle (Closed)
Patch Set: Fix comments Created 3 years, 7 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
Index: net/quic/chromium/bidirectional_stream_quic_impl.cc
diff --git a/net/quic/chromium/bidirectional_stream_quic_impl.cc b/net/quic/chromium/bidirectional_stream_quic_impl.cc
index 2f5ad1dd1ed61062f1e1ab6933e81da514dc1221..e2301e76669373aee997163238f4870d5ff55bfd 100644
--- a/net/quic/chromium/bidirectional_stream_quic_impl.cc
+++ b/net/quic/chromium/bidirectional_stream_quic_impl.cc
@@ -232,15 +232,6 @@ bool BidirectionalStreamQuicImpl::GetLoadTimingInfo(
return true;
}
-void BidirectionalStreamQuicImpl::OnTrailingHeadersAvailable(
- const SpdyHeaderBlock& headers,
- size_t frame_len) {
- headers_bytes_received_ += frame_len;
- if (delegate_)
- delegate_->OnTrailersReceived(headers);
- // |this| can be destroyed after this point.
-}
-
void BidirectionalStreamQuicImpl::OnClose() {
DCHECK(stream_);
@@ -308,10 +299,36 @@ void BidirectionalStreamQuicImpl::OnReadInitialHeadersComplete(int rv) {
headers_bytes_received_ += rv;
negotiated_protocol_ = kProtoQUIC;
connect_timing_ = session_->GetConnectTiming();
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE, base::Bind(&BidirectionalStreamQuicImpl::ReadTrailingHeaders,
+ weak_factory_.GetWeakPtr()));
if (delegate_)
delegate_->OnHeadersReceived(initial_headers_);
}
+void BidirectionalStreamQuicImpl::ReadTrailingHeaders() {
+ int rv = stream_->ReadTrailingHeaders(
+ &trailing_headers_,
+ base::Bind(&BidirectionalStreamQuicImpl::OnReadTrailingHeadersComplete,
+ weak_factory_.GetWeakPtr()));
+
+ if (rv != ERR_IO_PENDING)
+ OnReadTrailingHeadersComplete(rv);
+}
+
+void BidirectionalStreamQuicImpl::OnReadTrailingHeadersComplete(int rv) {
+ DCHECK_NE(ERR_IO_PENDING, rv);
+ if (rv < 0) {
+ NotifyError(rv);
+ return;
+ }
+
+ headers_bytes_received_ += rv;
+
+ if (delegate_)
+ delegate_->OnTrailersReceived(trailing_headers_);
+}
+
void BidirectionalStreamQuicImpl::OnReadDataComplete(int rv) {
DCHECK_GE(rv, 0);
read_buffer_ = nullptr;
« no previous file with comments | « net/quic/chromium/bidirectional_stream_quic_impl.h ('k') | net/quic/chromium/bidirectional_stream_quic_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698