Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: net/quic/quic_stream_factory.h

Issue 1327923002: Migrates QUIC sessions to a new network when old network is (about to be) disconnected. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@home
Patch Set: Iteration with new API Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 11 matching lines...) Expand all
22 #include "net/log/net_log.h" 22 #include "net/log/net_log.h"
23 #include "net/proxy/proxy_server.h" 23 #include "net/proxy/proxy_server.h"
24 #include "net/quic/network_connection.h" 24 #include "net/quic/network_connection.h"
25 #include "net/quic/quic_chromium_client_session.h" 25 #include "net/quic/quic_chromium_client_session.h"
26 #include "net/quic/quic_config.h" 26 #include "net/quic/quic_config.h"
27 #include "net/quic/quic_crypto_stream.h" 27 #include "net/quic/quic_crypto_stream.h"
28 #include "net/quic/quic_http_stream.h" 28 #include "net/quic/quic_http_stream.h"
29 #include "net/quic/quic_protocol.h" 29 #include "net/quic/quic_protocol.h"
30 #include "net/ssl/ssl_config_service.h" 30 #include "net/ssl/ssl_config_service.h"
31 31
32 using NetworkChangeNotifier::NetworkHandle;
33
32 namespace net { 34 namespace net {
33 35
34 class CertPolicyEnforcer; 36 class CertPolicyEnforcer;
35 class CertVerifier; 37 class CertVerifier;
36 class ChannelIDService; 38 class ChannelIDService;
37 class ClientSocketFactory; 39 class ClientSocketFactory;
38 class HostResolver; 40 class HostResolver;
39 class HttpServerProperties; 41 class HttpServerProperties;
40 class QuicClock; 42 class QuicClock;
41 class QuicChromiumClientSession; 43 class QuicChromiumClientSession;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 CompletionCallback callback_; 100 CompletionCallback callback_;
99 scoped_ptr<QuicHttpStream> stream_; 101 scoped_ptr<QuicHttpStream> stream_;
100 102
101 DISALLOW_COPY_AND_ASSIGN(QuicStreamRequest); 103 DISALLOW_COPY_AND_ASSIGN(QuicStreamRequest);
102 }; 104 };
103 105
104 // A factory for creating new QuicHttpStreams on top of a pool of 106 // A factory for creating new QuicHttpStreams on top of a pool of
105 // QuicChromiumClientSessions. 107 // QuicChromiumClientSessions.
106 class NET_EXPORT_PRIVATE QuicStreamFactory 108 class NET_EXPORT_PRIVATE QuicStreamFactory
107 : public NetworkChangeNotifier::IPAddressObserver, 109 : public NetworkChangeNotifier::IPAddressObserver,
110 public NetworkChangeNotifier::NetworkObserver,
108 public SSLConfigService::Observer, 111 public SSLConfigService::Observer,
109 public CertDatabase::Observer { 112 public CertDatabase::Observer {
110 public: 113 public:
111 QuicStreamFactory( 114 QuicStreamFactory(
112 HostResolver* host_resolver, 115 HostResolver* host_resolver,
113 ClientSocketFactory* client_socket_factory, 116 ClientSocketFactory* client_socket_factory,
114 base::WeakPtr<HttpServerProperties> http_server_properties, 117 base::WeakPtr<HttpServerProperties> http_server_properties,
115 CertVerifier* cert_verifier, 118 CertVerifier* cert_verifier,
116 CertPolicyEnforcer* cert_policy_enforcer, 119 CertPolicyEnforcer* cert_policy_enforcer,
117 ChannelIDService* channel_id_service, 120 ChannelIDService* channel_id_service,
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 202
200 // Delete all cached state objects in |crypto_config_|. 203 // Delete all cached state objects in |crypto_config_|.
201 void ClearCachedStatesInCryptoConfig(); 204 void ClearCachedStatesInCryptoConfig();
202 205
203 // NetworkChangeNotifier::IPAddressObserver methods: 206 // NetworkChangeNotifier::IPAddressObserver methods:
204 207
205 // Until the servers support roaming, close all connections when the local 208 // Until the servers support roaming, close all connections when the local
206 // IP address changes. 209 // IP address changes.
207 void OnIPAddressChanged() override; 210 void OnIPAddressChanged() override;
208 211
212 // NetworkChangeNotifier::NetworkObserver methods:
213 void OnNetworkConnected(NetworkHandle network) override;
214 void OnNetworkDisconnected(NetworkHandle network) override;
215 void OnNetworkSoonToDisconnect(NetworkHandle network) override;
216 void OnNetworkMadeDefault(NetworkHandle network) override;
217
209 // SSLConfigService::Observer methods: 218 // SSLConfigService::Observer methods:
210 219
211 // We perform the same flushing as described above when SSL settings change. 220 // We perform the same flushing as described above when SSL settings change.
212 void OnSSLConfigChanged() override; 221 void OnSSLConfigChanged() override;
213 222
214 // CertDatabase::Observer methods: 223 // CertDatabase::Observer methods:
215 224
216 // We close all sessions when certificate database is changed. 225 // We close all sessions when certificate database is changed.
217 void OnCertAdded(const X509Certificate* cert) override; 226 void OnCertAdded(const X509Certificate* cert) override;
218 void OnCACertChanged(const X509Certificate* cert) override; 227 void OnCACertChanged(const X509Certificate* cert) override;
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 base::TaskRunner* task_runner_; 477 base::TaskRunner* task_runner_;
469 478
470 base::WeakPtrFactory<QuicStreamFactory> weak_factory_; 479 base::WeakPtrFactory<QuicStreamFactory> weak_factory_;
471 480
472 DISALLOW_COPY_AND_ASSIGN(QuicStreamFactory); 481 DISALLOW_COPY_AND_ASSIGN(QuicStreamFactory);
473 }; 482 };
474 483
475 } // namespace net 484 } // namespace net
476 485
477 #endif // NET_QUIC_QUIC_STREAM_FACTORY_H_ 486 #endif // NET_QUIC_QUIC_STREAM_FACTORY_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698