1 // Copyright 2016 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "net/spdy/multiplexed_http_stream.h" 6 7 #include <utility> 8 9 #include "base/notreached.h" 10 #include "net/http/http_raw_request_headers.h" 11 12 namespace net { 13 MultiplexedHttpStream(std::unique_ptr<MultiplexedSessionHandle> session)14MultiplexedHttpStream::MultiplexedHttpStream( 15 std::unique_ptr<MultiplexedSessionHandle> session) 16 : session_(std::move(session)) {} 17 18 MultiplexedHttpStream::~MultiplexedHttpStream() = default; 19 GetRemoteEndpoint(IPEndPoint * endpoint)20int MultiplexedHttpStream::GetRemoteEndpoint(IPEndPoint* endpoint) { 21 return session_->GetRemoteEndpoint(endpoint); 22 } 23 GetSSLInfo(SSLInfo * ssl_info)24void MultiplexedHttpStream::GetSSLInfo(SSLInfo* ssl_info) { 25 session_->GetSSLInfo(ssl_info); 26 } 27 SaveSSLInfo()28void MultiplexedHttpStream::SaveSSLInfo() { 29 session_->SaveSSLInfo(); 30 } 31 Drain(HttpNetworkSession * session)32void MultiplexedHttpStream::Drain(HttpNetworkSession* session) { 33 NOTREACHED(); 34 } 35 RenewStreamForAuth()36std::unique_ptr<HttpStream> MultiplexedHttpStream::RenewStreamForAuth() { 37 return nullptr; 38 } 39 SetConnectionReused()40void MultiplexedHttpStream::SetConnectionReused() {} 41 CanReuseConnection() const42bool MultiplexedHttpStream::CanReuseConnection() const { 43 // Multiplexed streams aren't considered reusable. 44 return false; 45 } 46 SetRequestHeadersCallback(RequestHeadersCallback callback)47void MultiplexedHttpStream::SetRequestHeadersCallback( 48 RequestHeadersCallback callback) { 49 request_headers_callback_ = std::move(callback); 50 } 51 DispatchRequestHeadersCallback(const quiche::HttpHeaderBlock & spdy_headers)52void MultiplexedHttpStream::DispatchRequestHeadersCallback( 53 const quiche::HttpHeaderBlock& spdy_headers) { 54 if (!request_headers_callback_) 55 return; 56 HttpRawRequestHeaders raw_headers; 57 for (const auto& entry : spdy_headers) { 58 raw_headers.Add(entry.first, entry.second); 59 } 60 request_headers_callback_.Run(std::move(raw_headers)); 61 } 62 63 } // namespace net 64