| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/quic/chromium/bidirectional_stream_quic_impl.h" | 5 #include "net/quic/chromium/bidirectional_stream_quic_impl.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| 11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/threading/thread_task_runner_handle.h" | 12 #include "base/threading/thread_task_runner_handle.h" |
| 13 #include "base/timer/timer.h" | 13 #include "base/timer/timer.h" |
| 14 #include "net/http/bidirectional_stream_request_info.h" | 14 #include "net/http/bidirectional_stream_request_info.h" |
| 15 #include "net/quic/core/quic_connection.h" | 15 #include "net/quic/core/quic_connection.h" |
| 16 #include "net/quic/platform/api/quic_string_piece.h" |
| 16 #include "net/socket/next_proto.h" | 17 #include "net/socket/next_proto.h" |
| 17 #include "net/spdy/spdy_header_block.h" | 18 #include "net/spdy/spdy_header_block.h" |
| 18 #include "net/spdy/spdy_http_utils.h" | 19 #include "net/spdy/spdy_http_utils.h" |
| 19 | 20 |
| 20 namespace net { | 21 namespace net { |
| 21 | 22 |
| 22 BidirectionalStreamQuicImpl::BidirectionalStreamQuicImpl( | 23 BidirectionalStreamQuicImpl::BidirectionalStreamQuicImpl( |
| 23 const base::WeakPtr<QuicChromiumClientSession>& session) | 24 const base::WeakPtr<QuicChromiumClientSession>& session) |
| 24 : session_(session), | 25 : session_(session), |
| 25 was_handshake_confirmed_(session->IsCryptoHandshakeConfirmed()), | 26 was_handshake_confirmed_(session->IsCryptoHandshakeConfirmed()), |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 std::unique_ptr<QuicConnection::ScopedPacketBundler> bundler; | 148 std::unique_ptr<QuicConnection::ScopedPacketBundler> bundler; |
| 148 if (!has_sent_headers_) { | 149 if (!has_sent_headers_) { |
| 149 DCHECK(!send_request_headers_automatically_); | 150 DCHECK(!send_request_headers_automatically_); |
| 150 // Creates a bundler only if there are headers to be sent along with the | 151 // Creates a bundler only if there are headers to be sent along with the |
| 151 // single data buffer. | 152 // single data buffer. |
| 152 bundler.reset(new QuicConnection::ScopedPacketBundler( | 153 bundler.reset(new QuicConnection::ScopedPacketBundler( |
| 153 session_->connection(), QuicConnection::SEND_ACK_IF_PENDING)); | 154 session_->connection(), QuicConnection::SEND_ACK_IF_PENDING)); |
| 154 SendRequestHeaders(); | 155 SendRequestHeaders(); |
| 155 } | 156 } |
| 156 | 157 |
| 157 base::StringPiece string_data(data->data(), length); | 158 QuicStringPiece string_data(data->data(), length); |
| 158 int rv = stream_->WriteStreamData( | 159 int rv = stream_->WriteStreamData( |
| 159 string_data, end_stream, | 160 string_data, end_stream, |
| 160 base::Bind(&BidirectionalStreamQuicImpl::OnSendDataComplete, | 161 base::Bind(&BidirectionalStreamQuicImpl::OnSendDataComplete, |
| 161 weak_factory_.GetWeakPtr())); | 162 weak_factory_.GetWeakPtr())); |
| 162 DCHECK(rv == OK || rv == ERR_IO_PENDING); | 163 DCHECK(rv == OK || rv == ERR_IO_PENDING); |
| 163 if (rv == OK) { | 164 if (rv == OK) { |
| 164 base::ThreadTaskRunnerHandle::Get()->PostTask( | 165 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 165 FROM_HERE, base::Bind(&BidirectionalStreamQuicImpl::OnSendDataComplete, | 166 FROM_HERE, base::Bind(&BidirectionalStreamQuicImpl::OnSendDataComplete, |
| 166 weak_factory_.GetWeakPtr(), OK)); | 167 weak_factory_.GetWeakPtr(), OK)); |
| 167 } | 168 } |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 354 if (!stream_) | 355 if (!stream_) |
| 355 return; | 356 return; |
| 356 closed_stream_received_bytes_ = stream_->stream_bytes_read(); | 357 closed_stream_received_bytes_ = stream_->stream_bytes_read(); |
| 357 closed_stream_sent_bytes_ = stream_->stream_bytes_written(); | 358 closed_stream_sent_bytes_ = stream_->stream_bytes_written(); |
| 358 closed_is_first_stream_ = stream_->IsFirstStream(); | 359 closed_is_first_stream_ = stream_->IsFirstStream(); |
| 359 stream_->SetDelegate(nullptr); | 360 stream_->SetDelegate(nullptr); |
| 360 stream_ = nullptr; | 361 stream_ = nullptr; |
| 361 } | 362 } |
| 362 | 363 |
| 363 } // namespace net | 364 } // namespace net |
| OLD | NEW |