/external/chromium/net/http/http_network_session.h
https://gitlab.com/brian0218/rk3188_r-box_android4.2.2_sdk · C Header · 179 lines · 138 code · 32 blank · 9 comment · 0 complexity · 542eeb807b39b574e00de1514963b0da MD5 · raw file
- // Copyright (c) 2011 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef NET_HTTP_HTTP_NETWORK_SESSION_H_
- #define NET_HTTP_HTTP_NETWORK_SESSION_H_
- #pragma once
- #include <set>
- #include "base/memory/ref_counted.h"
- #include "base/threading/non_thread_safe.h"
- #include "net/base/host_port_pair.h"
- #include "net/base/host_resolver.h"
- #include "net/base/ssl_client_auth_cache.h"
- #include "net/http/http_alternate_protocols.h"
- #include "net/http/http_auth_cache.h"
- #include "net/http/http_stream_factory.h"
- #include "net/socket/client_socket_pool_manager.h"
- #include "net/spdy/spdy_session_pool.h"
- #include "net/spdy/spdy_settings_storage.h"
- class Value;
- namespace net {
- class CertVerifier;
- class ClientSocketFactory;
- class DnsCertProvenanceChecker;
- class DnsRRResolver;
- class HostResolver;
- class HttpAuthHandlerFactory;
- class HttpNetworkSessionPeer;
- class HttpProxyClientSocketPool;
- class HttpResponseBodyDrainer;
- class NetLog;
- class NetworkDelegate;
- class ProxyService;
- class SSLConfigService;
- class SSLHostInfoFactory;
- // This class holds session objects used by HttpNetworkTransaction objects.
- class HttpNetworkSession : public base::RefCounted<HttpNetworkSession>,
- public base::NonThreadSafe {
- public:
- struct Params {
- Params()
- : client_socket_factory(NULL),
- host_resolver(NULL),
- cert_verifier(NULL),
- dnsrr_resolver(NULL),
- dns_cert_checker(NULL),
- proxy_service(NULL),
- ssl_host_info_factory(NULL),
- ssl_config_service(NULL),
- http_auth_handler_factory(NULL),
- network_delegate(NULL),
- net_log(NULL) {}
- ClientSocketFactory* client_socket_factory;
- HostResolver* host_resolver;
- CertVerifier* cert_verifier;
- DnsRRResolver* dnsrr_resolver;
- DnsCertProvenanceChecker* dns_cert_checker;
- ProxyService* proxy_service;
- SSLHostInfoFactory* ssl_host_info_factory;
- SSLConfigService* ssl_config_service;
- HttpAuthHandlerFactory* http_auth_handler_factory;
- NetworkDelegate* network_delegate;
- NetLog* net_log;
- };
- explicit HttpNetworkSession(const Params& params);
- HttpAuthCache* http_auth_cache() { return &http_auth_cache_; }
- SSLClientAuthCache* ssl_client_auth_cache() {
- return &ssl_client_auth_cache_;
- }
- void AddResponseDrainer(HttpResponseBodyDrainer* drainer);
- void RemoveResponseDrainer(HttpResponseBodyDrainer* drainer);
- const HttpAlternateProtocols& alternate_protocols() const {
- return alternate_protocols_;
- }
- HttpAlternateProtocols* mutable_alternate_protocols() {
- return &alternate_protocols_;
- }
- TransportClientSocketPool* transport_socket_pool() {
- return socket_pool_manager_.transport_socket_pool();
- }
- SSLClientSocketPool* ssl_socket_pool() {
- return socket_pool_manager_.ssl_socket_pool();
- }
- SOCKSClientSocketPool* GetSocketPoolForSOCKSProxy(
- const HostPortPair& socks_proxy) {
- return socket_pool_manager_.GetSocketPoolForSOCKSProxy(socks_proxy);
- }
- HttpProxyClientSocketPool* GetSocketPoolForHTTPProxy(
- const HostPortPair& http_proxy) {
- return socket_pool_manager_.GetSocketPoolForHTTPProxy(http_proxy);
- }
- SSLClientSocketPool* GetSocketPoolForSSLWithProxy(
- const HostPortPair& proxy_server) {
- return socket_pool_manager_.GetSocketPoolForSSLWithProxy(proxy_server);
- }
- CertVerifier* cert_verifier() { return cert_verifier_; }
- ProxyService* proxy_service() { return proxy_service_; }
- SSLConfigService* ssl_config_service() { return ssl_config_service_; }
- SpdySessionPool* spdy_session_pool() { return &spdy_session_pool_; }
- HttpAuthHandlerFactory* http_auth_handler_factory() {
- return http_auth_handler_factory_;
- }
- NetworkDelegate* network_delegate() {
- return network_delegate_;
- }
- HttpStreamFactory* http_stream_factory() {
- return http_stream_factory_.get();
- }
- NetLog* net_log() {
- return net_log_;
- }
- // Creates a Value summary of the state of the socket pools. The caller is
- // responsible for deleting the returned value.
- Value* SocketPoolInfoToValue() const {
- return socket_pool_manager_.SocketPoolInfoToValue();
- }
- // Creates a Value summary of the state of the SPDY sessions. The caller is
- // responsible for deleting the returned value.
- Value* SpdySessionPoolInfoToValue() const;
- void CloseAllConnections() {
- socket_pool_manager_.FlushSocketPools();
- spdy_session_pool_.CloseCurrentSessions();
- }
- void CloseIdleConnections() {
- socket_pool_manager_.CloseIdleSockets();
- spdy_session_pool_.CloseIdleSessions();
- }
- private:
- friend class base::RefCounted<HttpNetworkSession>;
- friend class HttpNetworkSessionPeer;
- ~HttpNetworkSession();
- NetLog* const net_log_;
- NetworkDelegate* const network_delegate_;
- CertVerifier* const cert_verifier_;
- HttpAuthHandlerFactory* const http_auth_handler_factory_;
- // Not const since it's modified by HttpNetworkSessionPeer for testing.
- scoped_refptr<ProxyService> proxy_service_;
- const scoped_refptr<SSLConfigService> ssl_config_service_;
- HttpAuthCache http_auth_cache_;
- SSLClientAuthCache ssl_client_auth_cache_;
- HttpAlternateProtocols alternate_protocols_;
- ClientSocketPoolManager socket_pool_manager_;
- SpdySessionPool spdy_session_pool_;
- scoped_ptr<HttpStreamFactory> http_stream_factory_;
- std::set<HttpResponseBodyDrainer*> response_drainers_;
- };
- } // namespace net
- #endif // NET_HTTP_HTTP_NETWORK_SESSION_H_