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 #ifndef NET_QUIC_CHROMIUM_QUIC_STREAM_FACTORY_H_ | 5 #ifndef NET_QUIC_CHROMIUM_QUIC_STREAM_FACTORY_H_ |
6 #define NET_QUIC_CHROMIUM_QUIC_STREAM_FACTORY_H_ | 6 #define NET_QUIC_CHROMIUM_QUIC_STREAM_FACTORY_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 class CTPolicyEnforcer; | 54 class CTPolicyEnforcer; |
55 class CertVerifier; | 55 class CertVerifier; |
56 class ChannelIDService; | 56 class ChannelIDService; |
57 class ClientSocketFactory; | 57 class ClientSocketFactory; |
58 class CTVerifier; | 58 class CTVerifier; |
59 class HostResolver; | 59 class HostResolver; |
60 class HttpServerProperties; | 60 class HttpServerProperties; |
61 class NetLog; | 61 class NetLog; |
62 class ProxyDelegate; | 62 class ProxyDelegate; |
63 class QuicClock; | 63 class QuicClock; |
64 class QuicChromiumAlarmFactory; | 64 class QuicAlarmFactory; |
65 class QuicChromiumConnectionHelper; | 65 class QuicChromiumConnectionHelper; |
66 class QuicCryptoClientStreamFactory; | 66 class QuicCryptoClientStreamFactory; |
67 class QuicRandom; | 67 class QuicRandom; |
68 class QuicServerInfo; | 68 class QuicServerInfo; |
69 class QuicServerInfoFactory; | 69 class QuicServerInfoFactory; |
70 class QuicStreamFactory; | 70 class QuicStreamFactory; |
71 class SocketPerformanceWatcherFactory; | 71 class SocketPerformanceWatcherFactory; |
72 class TransportSecurityState; | 72 class TransportSecurityState; |
73 class BidirectionalStreamImpl; | 73 class BidirectionalStreamImpl; |
74 | 74 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 // Sets |session_|. | 138 // Sets |session_|. |
139 void SetSession(QuicChromiumClientSession* session); | 139 void SetSession(QuicChromiumClientSession* session); |
140 | 140 |
141 const QuicServerId& server_id() const { return server_id_; } | 141 const QuicServerId& server_id() const { return server_id_; } |
142 | 142 |
143 const NetLogWithSource& net_log() const { return net_log_; } | 143 const NetLogWithSource& net_log() const { return net_log_; } |
144 | 144 |
145 private: | 145 private: |
146 QuicStreamFactory* factory_; | 146 QuicStreamFactory* factory_; |
147 HttpServerProperties* http_server_properties_; | 147 HttpServerProperties* http_server_properties_; |
| 148 bool mark_quic_broken_when_network_suspected_; |
148 QuicServerId server_id_; | 149 QuicServerId server_id_; |
149 NetLogWithSource net_log_; | 150 NetLogWithSource net_log_; |
150 CompletionCallback callback_; | 151 CompletionCallback callback_; |
151 base::WeakPtr<QuicChromiumClientSession> session_; | 152 base::WeakPtr<QuicChromiumClientSession> session_; |
152 | 153 |
153 DISALLOW_COPY_AND_ASSIGN(QuicStreamRequest); | 154 DISALLOW_COPY_AND_ASSIGN(QuicStreamRequest); |
154 }; | 155 }; |
155 | 156 |
156 // A factory for creating new QuicHttpStreams on top of a pool of | 157 // A factory for creating new QuicHttpStreams on top of a pool of |
157 // QuicChromiumClientSessions. | 158 // QuicChromiumClientSessions. |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 float load_server_info_timeout_srtt_multiplier, | 214 float load_server_info_timeout_srtt_multiplier, |
214 bool enable_connection_racing, | 215 bool enable_connection_racing, |
215 bool enable_non_blocking_io, | 216 bool enable_non_blocking_io, |
216 bool disable_disk_cache, | 217 bool disable_disk_cache, |
217 bool prefer_aes, | 218 bool prefer_aes, |
218 int socket_receive_buffer_size, | 219 int socket_receive_buffer_size, |
219 bool delay_tcp_race, | 220 bool delay_tcp_race, |
220 int max_server_configs_stored_in_properties, | 221 int max_server_configs_stored_in_properties, |
221 bool close_sessions_on_ip_change, | 222 bool close_sessions_on_ip_change, |
222 bool disable_quic_on_timeout_with_open_streams, | 223 bool disable_quic_on_timeout_with_open_streams, |
| 224 bool mark_quic_broken_when_network_suspected, |
223 int idle_connection_timeout_seconds, | 225 int idle_connection_timeout_seconds, |
224 int reduced_ping_timeout_seconds, | 226 int reduced_ping_timeout_seconds, |
225 int packet_reader_yield_after_duration_milliseconds, | 227 int packet_reader_yield_after_duration_milliseconds, |
226 bool migrate_sessions_on_network_change, | 228 bool migrate_sessions_on_network_change, |
227 bool migrate_sessions_early, | 229 bool migrate_sessions_early, |
228 bool allow_server_migration, | 230 bool allow_server_migration, |
229 bool force_hol_blocking, | 231 bool force_hol_blocking, |
230 bool race_cert_verification, | 232 bool race_cert_verification, |
231 bool do_not_fragment, | 233 bool do_not_fragment, |
232 bool estimate_initial_rtt, | 234 bool estimate_initial_rtt, |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 | 371 |
370 void set_require_confirmation(bool require_confirmation); | 372 void set_require_confirmation(bool require_confirmation); |
371 | 373 |
372 bool ZeroRTTEnabledFor(const QuicServerId& server_id); | 374 bool ZeroRTTEnabledFor(const QuicServerId& server_id); |
373 | 375 |
374 // It returns the amount of time waiting job should be delayed. | 376 // It returns the amount of time waiting job should be delayed. |
375 base::TimeDelta GetTimeDelayForWaitingJob(const QuicServerId& server_id); | 377 base::TimeDelta GetTimeDelayForWaitingJob(const QuicServerId& server_id); |
376 | 378 |
377 QuicChromiumConnectionHelper* helper() { return helper_.get(); } | 379 QuicChromiumConnectionHelper* helper() { return helper_.get(); } |
378 | 380 |
379 QuicChromiumAlarmFactory* alarm_factory() { return alarm_factory_.get(); } | 381 QuicAlarmFactory* alarm_factory() { return alarm_factory_.get(); } |
380 | 382 |
381 bool has_quic_server_info_factory() const { | 383 bool has_quic_server_info_factory() const { |
382 return quic_server_info_factory_.get() != nullptr; | 384 return quic_server_info_factory_.get() != nullptr; |
383 } | 385 } |
384 | 386 |
385 QuicServerInfoFactory* quic_server_info_factory() const { | 387 QuicServerInfoFactory* quic_server_info_factory() const { |
386 return quic_server_info_factory_.get(); | 388 return quic_server_info_factory_.get(); |
387 } | 389 } |
388 | 390 |
389 void set_quic_server_info_factory( | 391 void set_quic_server_info_factory( |
390 QuicServerInfoFactory* quic_server_info_factory); | 392 QuicServerInfoFactory* quic_server_info_factory); |
391 | 393 |
392 void set_server_push_delegate(ServerPushDelegate* push_delegate) { | 394 void set_server_push_delegate(ServerPushDelegate* push_delegate) { |
393 push_delegate_ = push_delegate; | 395 push_delegate_ = push_delegate; |
394 } | 396 } |
395 | 397 |
396 bool enable_connection_racing() const { return enable_connection_racing_; } | 398 bool enable_connection_racing() const { return enable_connection_racing_; } |
397 void set_enable_connection_racing(bool enable_connection_racing) { | 399 void set_enable_connection_racing(bool enable_connection_racing) { |
398 enable_connection_racing_ = enable_connection_racing; | 400 enable_connection_racing_ = enable_connection_racing; |
399 } | 401 } |
400 | 402 |
401 int socket_receive_buffer_size() const { return socket_receive_buffer_size_; } | 403 int socket_receive_buffer_size() const { return socket_receive_buffer_size_; } |
402 | 404 |
403 bool delay_tcp_race() const { return delay_tcp_race_; } | 405 bool delay_tcp_race() const { return delay_tcp_race_; } |
404 | 406 |
405 bool migrate_sessions_on_network_change() const { | 407 bool migrate_sessions_on_network_change() const { |
406 return migrate_sessions_on_network_change_; | 408 return migrate_sessions_on_network_change_; |
407 } | 409 } |
408 | 410 |
| 411 bool mark_quic_broken_when_network_suspected() const { |
| 412 return mark_quic_broken_when_network_suspected_; |
| 413 } |
| 414 |
409 // Dumps memory allocation stats. |parent_dump_absolute_name| is the name | 415 // Dumps memory allocation stats. |parent_dump_absolute_name| is the name |
410 // used by the parent MemoryAllocatorDump in the memory dump hierarchy. | 416 // used by the parent MemoryAllocatorDump in the memory dump hierarchy. |
411 void DumpMemoryStats(base::trace_event::ProcessMemoryDump* pmd, | 417 void DumpMemoryStats(base::trace_event::ProcessMemoryDump* pmd, |
412 const std::string& parent_absolute_name) const; | 418 const std::string& parent_absolute_name) const; |
413 | 419 |
414 private: | 420 private: |
415 class Job; | 421 class Job; |
416 class CertVerifierJob; | 422 class CertVerifierJob; |
417 friend class test::QuicStreamFactoryPeer; | 423 friend class test::QuicStreamFactoryPeer; |
418 | 424 |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 | 551 |
546 // Factory which is used to create socket performance watcher. A new watcher | 552 // Factory which is used to create socket performance watcher. A new watcher |
547 // is created for every QUIC connection. | 553 // is created for every QUIC connection. |
548 // |socket_performance_watcher_factory_| may be null. | 554 // |socket_performance_watcher_factory_| may be null. |
549 SocketPerformanceWatcherFactory* socket_performance_watcher_factory_; | 555 SocketPerformanceWatcherFactory* socket_performance_watcher_factory_; |
550 | 556 |
551 // The helper used for all connections. | 557 // The helper used for all connections. |
552 std::unique_ptr<QuicChromiumConnectionHelper> helper_; | 558 std::unique_ptr<QuicChromiumConnectionHelper> helper_; |
553 | 559 |
554 // The alarm factory used for all connections. | 560 // The alarm factory used for all connections. |
555 std::unique_ptr<QuicChromiumAlarmFactory> alarm_factory_; | 561 std::unique_ptr<QuicAlarmFactory> alarm_factory_; |
556 | 562 |
557 // Contains owning pointers to all sessions that currently exist. | 563 // Contains owning pointers to all sessions that currently exist. |
558 SessionIdMap all_sessions_; | 564 SessionIdMap all_sessions_; |
559 // Contains non-owning pointers to currently active session | 565 // Contains non-owning pointers to currently active session |
560 // (not going away session, once they're implemented). | 566 // (not going away session, once they're implemented). |
561 SessionMap active_sessions_; | 567 SessionMap active_sessions_; |
562 // Map from session to set of aliases that this session is known by. | 568 // Map from session to set of aliases that this session is known by. |
563 SessionAliasMap session_aliases_; | 569 SessionAliasMap session_aliases_; |
564 // Map from IP address to sessions which are connected to this address. | 570 // Map from IP address to sessions which are connected to this address. |
565 IPAliasMap ip_aliases_; | 571 IPAliasMap ip_aliases_; |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
604 // Set if we do not want to load server config from the disk cache. | 610 // Set if we do not want to load server config from the disk cache. |
605 bool disable_disk_cache_; | 611 bool disable_disk_cache_; |
606 | 612 |
607 // Set if AES-GCM should be preferred, even if there is no hardware support. | 613 // Set if AES-GCM should be preferred, even if there is no hardware support. |
608 bool prefer_aes_; | 614 bool prefer_aes_; |
609 | 615 |
610 // True if QUIC should be disabled when there are timeouts with open | 616 // True if QUIC should be disabled when there are timeouts with open |
611 // streams. | 617 // streams. |
612 bool disable_quic_on_timeout_with_open_streams_; | 618 bool disable_quic_on_timeout_with_open_streams_; |
613 | 619 |
| 620 // True if QUIC should be marked as broken when a stream is closed with |
| 621 // a possibly network-caused error. |
| 622 bool mark_quic_broken_when_network_suspected_; |
| 623 |
614 // Number of times in a row that QUIC has been disabled. | 624 // Number of times in a row that QUIC has been disabled. |
615 int consecutive_disabled_count_; | 625 int consecutive_disabled_count_; |
616 bool need_to_evaluate_consecutive_disabled_count_; | 626 bool need_to_evaluate_consecutive_disabled_count_; |
617 | 627 |
618 // Size of the UDP receive buffer. | 628 // Size of the UDP receive buffer. |
619 int socket_receive_buffer_size_; | 629 int socket_receive_buffer_size_; |
620 | 630 |
621 // Set if we do want to delay TCP connection when it is racing with QUIC. | 631 // Set if we do want to delay TCP connection when it is racing with QUIC. |
622 bool delay_tcp_race_; | 632 bool delay_tcp_race_; |
623 | 633 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
678 const scoped_refptr<SSLConfigService> ssl_config_service_; | 688 const scoped_refptr<SSLConfigService> ssl_config_service_; |
679 | 689 |
680 base::WeakPtrFactory<QuicStreamFactory> weak_factory_; | 690 base::WeakPtrFactory<QuicStreamFactory> weak_factory_; |
681 | 691 |
682 DISALLOW_COPY_AND_ASSIGN(QuicStreamFactory); | 692 DISALLOW_COPY_AND_ASSIGN(QuicStreamFactory); |
683 }; | 693 }; |
684 | 694 |
685 } // namespace net | 695 } // namespace net |
686 | 696 |
687 #endif // NET_QUIC_CHROMIUM_QUIC_STREAM_FACTORY_H_ | 697 #endif // NET_QUIC_CHROMIUM_QUIC_STREAM_FACTORY_H_ |
OLD | NEW |