OLD | NEW |
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/quic/chromium/quic_stream_factory.h" | 5 #include "net/quic/chromium/quic_stream_factory.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <tuple> | 8 #include <tuple> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
616 factory_ = nullptr; | 616 factory_ = nullptr; |
617 base::ResetAndReturn(&callback_).Run(rv); | 617 base::ResetAndReturn(&callback_).Run(rv); |
618 } | 618 } |
619 | 619 |
620 base::TimeDelta QuicStreamRequest::GetTimeDelayForWaitingJob() const { | 620 base::TimeDelta QuicStreamRequest::GetTimeDelayForWaitingJob() const { |
621 if (!factory_) | 621 if (!factory_) |
622 return base::TimeDelta(); | 622 return base::TimeDelta(); |
623 return factory_->GetTimeDelayForWaitingJob(server_id_); | 623 return factory_->GetTimeDelayForWaitingJob(server_id_); |
624 } | 624 } |
625 | 625 |
626 std::unique_ptr<QuicHttpStream> QuicStreamRequest::CreateStream() { | 626 std::unique_ptr<HttpStream> QuicStreamRequest::CreateStream() { |
627 if (!session_) | 627 if (!session_) |
628 return nullptr; | 628 return nullptr; |
629 return base::MakeUnique<QuicHttpStream>(session_, http_server_properties_); | 629 return base::MakeUnique<QuicHttpStream>(session_, http_server_properties_); |
630 } | 630 } |
631 | 631 |
632 std::unique_ptr<BidirectionalStreamImpl> | 632 std::unique_ptr<BidirectionalStreamImpl> |
633 QuicStreamRequest::CreateBidirectionalStreamImpl() { | 633 QuicStreamRequest::CreateBidirectionalStreamImpl() { |
634 if (!session_) | 634 if (!session_) |
635 return nullptr; | 635 return nullptr; |
636 return base::MakeUnique<BidirectionalStreamQuicImpl>(session_); | 636 return base::MakeUnique<BidirectionalStreamQuicImpl>(session_); |
637 } | 637 } |
638 | 638 |
| 639 QuicStreamRequestFactory::QuicStreamRequestFactory() {} |
| 640 |
| 641 QuicStreamRequestFactory::~QuicStreamRequestFactory() {} |
| 642 |
| 643 std::unique_ptr<QuicStreamRequest> QuicStreamRequestFactory::CreateRequest( |
| 644 QuicStreamFactory* factory, |
| 645 HttpServerProperties* http_server_properties) { |
| 646 return base::MakeUnique<QuicStreamRequest>(factory, http_server_properties); |
| 647 } |
| 648 |
639 QuicStreamFactory::QuicStreamFactory( | 649 QuicStreamFactory::QuicStreamFactory( |
640 NetLog* net_log, | 650 NetLog* net_log, |
641 HostResolver* host_resolver, | 651 HostResolver* host_resolver, |
642 SSLConfigService* ssl_config_service, | 652 SSLConfigService* ssl_config_service, |
643 ClientSocketFactory* client_socket_factory, | 653 ClientSocketFactory* client_socket_factory, |
644 HttpServerProperties* http_server_properties, | 654 HttpServerProperties* http_server_properties, |
645 ProxyDelegate* proxy_delegate, | 655 ProxyDelegate* proxy_delegate, |
646 CertVerifier* cert_verifier, | 656 CertVerifier* cert_verifier, |
647 CTPolicyEnforcer* ct_policy_enforcer, | 657 CTPolicyEnforcer* ct_policy_enforcer, |
648 ChannelIDService* channel_id_service, | 658 ChannelIDService* channel_id_service, |
(...skipping 29 matching lines...) Expand all Loading... |
678 push_delegate_(nullptr), | 688 push_delegate_(nullptr), |
679 proxy_delegate_(proxy_delegate), | 689 proxy_delegate_(proxy_delegate), |
680 transport_security_state_(transport_security_state), | 690 transport_security_state_(transport_security_state), |
681 cert_transparency_verifier_(cert_transparency_verifier), | 691 cert_transparency_verifier_(cert_transparency_verifier), |
682 quic_crypto_client_stream_factory_(quic_crypto_client_stream_factory), | 692 quic_crypto_client_stream_factory_(quic_crypto_client_stream_factory), |
683 random_generator_(random_generator), | 693 random_generator_(random_generator), |
684 clock_(clock), | 694 clock_(clock), |
685 max_packet_length_(max_packet_length), | 695 max_packet_length_(max_packet_length), |
686 clock_skew_detector_(base::TimeTicks::Now(), base::Time::Now()), | 696 clock_skew_detector_(base::TimeTicks::Now(), base::Time::Now()), |
687 socket_performance_watcher_factory_(socket_performance_watcher_factory), | 697 socket_performance_watcher_factory_(socket_performance_watcher_factory), |
| 698 stream_request_factory_(base::MakeUnique<QuicStreamRequestFactory>()), |
688 config_(InitializeQuicConfig(connection_options, | 699 config_(InitializeQuicConfig(connection_options, |
689 idle_connection_timeout_seconds)), | 700 idle_connection_timeout_seconds)), |
690 crypto_config_(base::WrapUnique( | 701 crypto_config_(base::WrapUnique( |
691 new ProofVerifierChromium(cert_verifier, | 702 new ProofVerifierChromium(cert_verifier, |
692 ct_policy_enforcer, | 703 ct_policy_enforcer, |
693 transport_security_state, | 704 transport_security_state, |
694 cert_transparency_verifier))), | 705 cert_transparency_verifier))), |
695 supported_versions_(supported_versions), | 706 supported_versions_(supported_versions), |
696 mark_quic_broken_when_network_blackholes_( | 707 mark_quic_broken_when_network_blackholes_( |
697 mark_quic_broken_when_network_blackholes), | 708 mark_quic_broken_when_network_blackholes), |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
843 QuicChromiumClientSession* session = key_value.second; | 854 QuicChromiumClientSession* session = key_value.second; |
844 if (destination.Equals(all_sessions_[session].destination()) && | 855 if (destination.Equals(all_sessions_[session].destination()) && |
845 session->CanPool(server_id.host(), server_id.privacy_mode())) { | 856 session->CanPool(server_id.host(), server_id.privacy_mode())) { |
846 return true; | 857 return true; |
847 } | 858 } |
848 } | 859 } |
849 | 860 |
850 return false; | 861 return false; |
851 } | 862 } |
852 | 863 |
| 864 std::unique_ptr<QuicStreamRequest> QuicStreamFactory::CreateStreamRequest() { |
| 865 return stream_request_factory_->CreateRequest(this, http_server_properties_); |
| 866 } |
| 867 |
853 int QuicStreamFactory::Create(const QuicServerId& server_id, | 868 int QuicStreamFactory::Create(const QuicServerId& server_id, |
854 const HostPortPair& destination, | 869 const HostPortPair& destination, |
855 int cert_verify_flags, | 870 int cert_verify_flags, |
856 const GURL& url, | 871 const GURL& url, |
857 QuicStringPiece method, | 872 QuicStringPiece method, |
858 const NetLogWithSource& net_log, | 873 const NetLogWithSource& net_log, |
859 QuicStreamRequest* request) { | 874 QuicStreamRequest* request) { |
860 if (clock_skew_detector_.ClockSkewDetected(base::TimeTicks::Now(), | 875 if (clock_skew_detector_.ClockSkewDetected(base::TimeTicks::Now(), |
861 base::Time::Now())) { | 876 base::Time::Now())) { |
862 while (!active_sessions_.empty()) { | 877 while (!active_sessions_.empty()) { |
(...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1726 // Since the session was active, there's no longer an | 1741 // Since the session was active, there's no longer an |
1727 // HttpStreamFactoryImpl::Job running which can mark it broken, unless the TCP | 1742 // HttpStreamFactoryImpl::Job running which can mark it broken, unless the TCP |
1728 // job also fails. So to avoid not using QUIC when we otherwise could, we mark | 1743 // job also fails. So to avoid not using QUIC when we otherwise could, we mark |
1729 // it as recently broken, which means that 0-RTT will be disabled but we'll | 1744 // it as recently broken, which means that 0-RTT will be disabled but we'll |
1730 // still race. | 1745 // still race. |
1731 http_server_properties_->MarkAlternativeServiceRecentlyBroken( | 1746 http_server_properties_->MarkAlternativeServiceRecentlyBroken( |
1732 alternative_service); | 1747 alternative_service); |
1733 } | 1748 } |
1734 | 1749 |
1735 } // namespace net | 1750 } // namespace net |
OLD | NEW |