diff options
author | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-25 21:30:38 +0000 |
---|---|---|
committer | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-25 21:30:38 +0000 |
commit | 66761b95332549f825999e482c17c94675275f49 (patch) | |
tree | fc5307808a2c62f1eff2a9f37db3aff11c5455d9 /net/http/http_network_session.cc | |
parent | e313f3b11360902a3da9b3b1cc0df2a4792d0867 (diff) | |
download | chromium_src-66761b95332549f825999e482c17c94675275f49.zip chromium_src-66761b95332549f825999e482c17c94675275f49.tar.gz chromium_src-66761b95332549f825999e482c17c94675275f49.tar.bz2 |
Massively simplify the NetworkChangeNotifier infrastructure:
* Use a process-wide object (singleton pattern)
* Create/destroy this object on the main thread, make it outlive all consumers
* Make observer-related functions threadsafe
As a result, the notifier can now be used by any thread (eliminating things like NetworkChangeObserverProxy and NetworkChangeNotifierProxy, and expanding its usefulness); its creation and inner workings are much simplified (eliminating implementation-specific classes); and it is simpler to access (eliminating things like NetworkChangeNotifierThread and a LOT of passing pointers around).
BUG=none
TEST=Unittests; network changes still trigger notifications
Review URL: http://codereview.chromium.org/2802015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50895 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http/http_network_session.cc')
-rw-r--r-- | net/http/http_network_session.cc | 45 |
1 files changed, 16 insertions, 29 deletions
diff --git a/net/http/http_network_session.cc b/net/http/http_network_session.cc index 1083626..ea5a5cf 100644 --- a/net/http/http_network_session.cc +++ b/net/http/http_network_session.cc @@ -36,7 +36,6 @@ uint16 g_fixed_https_port = 0; } // namespace HttpNetworkSession::HttpNetworkSession( - NetworkChangeNotifier* network_change_notifier, HostResolver* host_resolver, ProxyService* proxy_service, ClientSocketFactory* client_socket_factory, @@ -45,18 +44,16 @@ HttpNetworkSession::HttpNetworkSession( HttpAuthHandlerFactory* http_auth_handler_factory, HttpNetworkDelegate* network_delegate, NetLog* net_log) - : network_change_notifier_(network_change_notifier), // TODO(vandebo) when we've completely converted to pools, the base TCP // pool name should get changed to TCP instead of Transport. - tcp_pool_histograms_(new ClientSocketPoolHistograms("Transport")), + : tcp_pool_histograms_(new ClientSocketPoolHistograms("Transport")), http_proxy_pool_histograms_(new ClientSocketPoolHistograms("HTTPProxy")), tcp_for_socks_pool_histograms_( new ClientSocketPoolHistograms("TCPforSOCKS")), socks_pool_histograms_(new ClientSocketPoolHistograms("SOCK")), - tcp_socket_pool_(new TCPClientSocketPool( - g_max_sockets, g_max_sockets_per_group, tcp_pool_histograms_, - host_resolver, client_socket_factory, network_change_notifier_, - net_log)), + tcp_socket_pool_(new TCPClientSocketPool(g_max_sockets, + g_max_sockets_per_group, tcp_pool_histograms_, host_resolver, + client_socket_factory, net_log)), socket_factory_(client_socket_factory), host_resolver_(host_resolver), proxy_service_(proxy_service), @@ -80,14 +77,10 @@ HttpNetworkSession::GetSocketPoolForHTTPProxy(const HostPortPair& http_proxy) { return it->second; std::pair<HTTPProxySocketPoolMap::iterator, bool> ret = - http_proxy_socket_pool_.insert( - std::make_pair( - http_proxy, - new TCPClientSocketPool( - g_max_sockets_per_proxy_server, g_max_sockets_per_group, - http_proxy_pool_histograms_, host_resolver_, socket_factory_, - network_change_notifier_, - net_log_))); + http_proxy_socket_pool_.insert(std::make_pair(http_proxy, + new TCPClientSocketPool(g_max_sockets_per_proxy_server, + g_max_sockets_per_group, http_proxy_pool_histograms_, + host_resolver_, socket_factory_, net_log_))); return ret.first->second; } @@ -99,20 +92,14 @@ HttpNetworkSession::GetSocketPoolForSOCKSProxy( if (it != socks_socket_pool_.end()) return it->second; - std::pair<SOCKSSocketPoolMap::iterator, bool> ret = - socks_socket_pool_.insert( - std::make_pair( - socks_proxy, - new SOCKSClientSocketPool( - g_max_sockets_per_proxy_server, g_max_sockets_per_group, - socks_pool_histograms_, host_resolver_, - new TCPClientSocketPool(g_max_sockets_per_proxy_server, - g_max_sockets_per_group, - tcp_for_socks_pool_histograms_, - host_resolver_, socket_factory_, - network_change_notifier_, - net_log_), - network_change_notifier_, net_log_))); + std::pair<SOCKSSocketPoolMap::iterator, bool> ret = socks_socket_pool_.insert( + std::make_pair(socks_proxy, new SOCKSClientSocketPool( + g_max_sockets_per_proxy_server, g_max_sockets_per_group, + socks_pool_histograms_, host_resolver_, + new TCPClientSocketPool(g_max_sockets_per_proxy_server, + g_max_sockets_per_group, tcp_for_socks_pool_histograms_, + host_resolver_, socket_factory_, net_log_), + net_log_))); return ret.first->second; } |