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_QUIC_STREAM_FACTORY_H_ | 5 #ifndef NET_QUIC_QUIC_STREAM_FACTORY_H_ |
6 #define NET_QUIC_QUIC_STREAM_FACTORY_H_ | 6 #define NET_QUIC_QUIC_STREAM_FACTORY_H_ |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 #include <map> | 9 #include <map> |
10 #include <string> | 10 #include <string> |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 ChannelIDService* channel_id_service, | 96 ChannelIDService* channel_id_service, |
97 TransportSecurityState* transport_security_state, | 97 TransportSecurityState* transport_security_state, |
98 QuicCryptoClientStreamFactory* quic_crypto_client_stream_factory, | 98 QuicCryptoClientStreamFactory* quic_crypto_client_stream_factory, |
99 QuicRandom* random_generator, | 99 QuicRandom* random_generator, |
100 QuicClock* clock, | 100 QuicClock* clock, |
101 size_t max_packet_length, | 101 size_t max_packet_length, |
102 const std::string& user_agent_id, | 102 const std::string& user_agent_id, |
103 const QuicVersionVector& supported_versions, | 103 const QuicVersionVector& supported_versions, |
104 bool enable_port_selection, | 104 bool enable_port_selection, |
105 bool enable_time_based_loss_detection, | 105 bool enable_time_based_loss_detection, |
| 106 bool always_require_handshake_confirmation, |
106 const QuicTagVector& connection_options); | 107 const QuicTagVector& connection_options); |
107 virtual ~QuicStreamFactory(); | 108 virtual ~QuicStreamFactory(); |
108 | 109 |
109 // Creates a new QuicHttpStream to |host_port_pair| which will be | 110 // Creates a new QuicHttpStream to |host_port_pair| which will be |
110 // owned by |request|. |is_https| specifies if the protocol is https or not. | 111 // owned by |request|. |is_https| specifies if the protocol is https or not. |
111 // If a matching session already exists, this method will return OK. If no | 112 // If a matching session already exists, this method will return OK. If no |
112 // matching session exists, this will return ERR_IO_PENDING and will invoke | 113 // matching session exists, this will return ERR_IO_PENDING and will invoke |
113 // OnRequestComplete asynchronously. | 114 // OnRequestComplete asynchronously. |
114 int Create(const HostPortPair& host_port_pair, | 115 int Create(const HostPortPair& host_port_pair, |
115 bool is_https, | 116 bool is_https, |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 // Until the servers support roaming, close all connections when the local | 148 // Until the servers support roaming, close all connections when the local |
148 // IP address changes. | 149 // IP address changes. |
149 virtual void OnIPAddressChanged() OVERRIDE; | 150 virtual void OnIPAddressChanged() OVERRIDE; |
150 | 151 |
151 // CertDatabase::Observer methods: | 152 // CertDatabase::Observer methods: |
152 | 153 |
153 // We close all sessions when certificate database is changed. | 154 // We close all sessions when certificate database is changed. |
154 virtual void OnCertAdded(const X509Certificate* cert) OVERRIDE; | 155 virtual void OnCertAdded(const X509Certificate* cert) OVERRIDE; |
155 virtual void OnCACertChanged(const X509Certificate* cert) OVERRIDE; | 156 virtual void OnCACertChanged(const X509Certificate* cert) OVERRIDE; |
156 | 157 |
157 bool require_confirmation() const { return require_confirmation_; } | 158 bool require_confirmation() const { |
| 159 return require_confirmation_; |
| 160 } |
158 | 161 |
159 void set_require_confirmation(bool require_confirmation) { | 162 void set_require_confirmation(bool require_confirmation) { |
160 require_confirmation_ = require_confirmation; | 163 require_confirmation_ = require_confirmation; |
161 } | 164 } |
162 | 165 |
163 QuicConnectionHelper* helper() { return helper_.get(); } | 166 QuicConnectionHelper* helper() { return helper_.get(); } |
164 | 167 |
165 bool enable_port_selection() const { return enable_port_selection_; } | 168 bool enable_port_selection() const { return enable_port_selection_; } |
166 | 169 |
167 bool has_quic_server_info_factory() { | 170 bool has_quic_server_info_factory() { |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 JobRequestsMap job_requests_map_; | 270 JobRequestsMap job_requests_map_; |
268 RequestMap active_requests_; | 271 RequestMap active_requests_; |
269 | 272 |
270 QuicVersionVector supported_versions_; | 273 QuicVersionVector supported_versions_; |
271 | 274 |
272 // Determine if we should consistently select a client UDP port. If false, | 275 // Determine if we should consistently select a client UDP port. If false, |
273 // then we will just let the OS select a random client port for each new | 276 // then we will just let the OS select a random client port for each new |
274 // connection. | 277 // connection. |
275 bool enable_port_selection_; | 278 bool enable_port_selection_; |
276 | 279 |
| 280 // Set if we always require handshake confirmation. If true, this will |
| 281 // introduce at least one RTT for the handshake before the client sends data. |
| 282 bool always_require_handshake_confirmation_; |
| 283 |
277 // Each profile will (probably) have a unique port_seed_ value. This value is | 284 // Each profile will (probably) have a unique port_seed_ value. This value is |
278 // used to help seed a pseudo-random number generator (PortSuggester) so that | 285 // used to help seed a pseudo-random number generator (PortSuggester) so that |
279 // we consistently (within this profile) suggest the same ephemeral port when | 286 // we consistently (within this profile) suggest the same ephemeral port when |
280 // we re-connect to any given server/port. The differences between profiles | 287 // we re-connect to any given server/port. The differences between profiles |
281 // (probablistically) prevent two profiles from colliding in their ephemeral | 288 // (probablistically) prevent two profiles from colliding in their ephemeral |
282 // port requests. | 289 // port requests. |
283 uint64 port_seed_; | 290 uint64 port_seed_; |
284 | 291 |
285 base::WeakPtrFactory<QuicStreamFactory> weak_factory_; | 292 base::WeakPtrFactory<QuicStreamFactory> weak_factory_; |
286 | 293 |
287 DISALLOW_COPY_AND_ASSIGN(QuicStreamFactory); | 294 DISALLOW_COPY_AND_ASSIGN(QuicStreamFactory); |
288 }; | 295 }; |
289 | 296 |
290 } // namespace net | 297 } // namespace net |
291 | 298 |
292 #endif // NET_QUIC_QUIC_STREAM_FACTORY_H_ | 299 #endif // NET_QUIC_QUIC_STREAM_FACTORY_H_ |
OLD | NEW |