Chromium Code Reviews| 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 // ClientSocketPoolManager manages access to all ClientSocketPools. It's a | 5 // ClientSocketPoolManager manages access to all ClientSocketPools. It's a |
| 6 // simple container for all of them. Most importantly, it handles the lifetime | 6 // simple container for all of them. Most importantly, it handles the lifetime |
| 7 // and destruction order properly. | 7 // and destruction order properly. |
| 8 | 8 |
| 9 #ifndef NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_H_ | 9 #ifndef NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_H_ |
| 10 #define NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_H_ | 10 #define NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_H_ |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 37 class SSLClientSocketPool; | 37 class SSLClientSocketPool; |
| 38 | 38 |
| 39 struct SSLConfig; | 39 struct SSLConfig; |
| 40 | 40 |
| 41 // This should rather be a simple constant but Windows shared libs doesn't | 41 // This should rather be a simple constant but Windows shared libs doesn't |
| 42 // really offer much flexiblity in exporting contants. | 42 // really offer much flexiblity in exporting contants. |
| 43 enum DefaultMaxValues { kDefaultMaxSocketsPerProxyServer = 32 }; | 43 enum DefaultMaxValues { kDefaultMaxSocketsPerProxyServer = 32 }; |
| 44 | 44 |
| 45 class NET_EXPORT_PRIVATE ClientSocketPoolManager { | 45 class NET_EXPORT_PRIVATE ClientSocketPoolManager { |
| 46 public: | 46 public: |
| 47 enum SocketGroupType { NORMAL_GROUP, SSL_GROUP, FTP_GROUP }; | |
|
mmenke
2015/04/07 16:36:58
It's not clear what a group type is, particular wi
Ryan Hamilton
2015/04/07 19:07:31
Done. Hopefully this helps. now that the force_spd
| |
| 48 | |
| 49 // Returns the correct socket group type for |scheme|. | |
| 50 static SocketGroupType GroupTypeFromScheme(const std::string& scheme); | |
| 51 | |
| 47 ClientSocketPoolManager(); | 52 ClientSocketPoolManager(); |
| 48 virtual ~ClientSocketPoolManager(); | 53 virtual ~ClientSocketPoolManager(); |
| 49 | 54 |
| 50 // The setter methods below affect only newly created socket pools after the | 55 // The setter methods below affect only newly created socket pools after the |
| 51 // methods are called. Normally they should be called at program startup | 56 // methods are called. Normally they should be called at program startup |
| 52 // before any ClientSocketPoolManagerImpl is created. | 57 // before any ClientSocketPoolManagerImpl is created. |
| 53 static int max_sockets_per_pool(HttpNetworkSession::SocketPoolType pool_type); | 58 static int max_sockets_per_pool(HttpNetworkSession::SocketPoolType pool_type); |
| 54 static void set_max_sockets_per_pool( | 59 static void set_max_sockets_per_pool( |
| 55 HttpNetworkSession::SocketPoolType pool_type, | 60 HttpNetworkSession::SocketPoolType pool_type, |
| 56 int socket_count); | 61 int socket_count); |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 83 }; | 88 }; |
| 84 | 89 |
| 85 // A helper method that uses the passed in proxy information to initialize a | 90 // A helper method that uses the passed in proxy information to initialize a |
| 86 // ClientSocketHandle with the relevant socket pool. Use this method for | 91 // ClientSocketHandle with the relevant socket pool. Use this method for |
| 87 // HTTP/HTTPS requests. |ssl_config_for_origin| is only used if the request | 92 // HTTP/HTTPS requests. |ssl_config_for_origin| is only used if the request |
| 88 // uses SSL and |ssl_config_for_proxy| is used if the proxy server is HTTPS. | 93 // uses SSL and |ssl_config_for_proxy| is used if the proxy server is HTTPS. |
| 89 // |resolution_callback| will be invoked after the the hostname is | 94 // |resolution_callback| will be invoked after the the hostname is |
| 90 // resolved. If |resolution_callback| does not return OK, then the | 95 // resolved. If |resolution_callback| does not return OK, then the |
| 91 // connection will be aborted with that value. | 96 // connection will be aborted with that value. |
| 92 int InitSocketHandleForHttpRequest( | 97 int InitSocketHandleForHttpRequest( |
| 93 const GURL& request_url, | 98 ClientSocketPoolManager::SocketGroupType group_type, |
| 99 const HostPortPair& endpoint, | |
| 94 const HttpRequestHeaders& request_extra_headers, | 100 const HttpRequestHeaders& request_extra_headers, |
| 95 int request_load_flags, | 101 int request_load_flags, |
| 96 RequestPriority request_priority, | 102 RequestPriority request_priority, |
| 97 HttpNetworkSession* session, | 103 HttpNetworkSession* session, |
| 98 const ProxyInfo& proxy_info, | 104 const ProxyInfo& proxy_info, |
| 99 bool force_spdy_over_ssl, | 105 bool force_spdy_over_ssl, |
| 100 bool want_spdy_over_npn, | 106 bool want_spdy_over_npn, |
|
mmenke
2015/04/07 16:36:58
Could you document these two parameters, while you
Ryan Hamilton
2015/04/07 19:07:30
Done. I'm not a fan of "want_spdy_over_npn" as a n
mmenke
2015/04/07 19:24:16
Maybe require_spdy_over_npn? (The imperative seem
| |
| 101 const SSLConfig& ssl_config_for_origin, | 107 const SSLConfig& ssl_config_for_origin, |
| 102 const SSLConfig& ssl_config_for_proxy, | 108 const SSLConfig& ssl_config_for_proxy, |
| 103 PrivacyMode privacy_mode, | 109 PrivacyMode privacy_mode, |
| 104 const BoundNetLog& net_log, | 110 const BoundNetLog& net_log, |
| 105 ClientSocketHandle* socket_handle, | 111 ClientSocketHandle* socket_handle, |
| 106 const OnHostResolutionCallback& resolution_callback, | 112 const OnHostResolutionCallback& resolution_callback, |
| 107 const CompletionCallback& callback); | 113 const CompletionCallback& callback); |
| 108 | 114 |
| 109 // A helper method that uses the passed in proxy information to initialize a | 115 // A helper method that uses the passed in proxy information to initialize a |
| 110 // ClientSocketHandle with the relevant socket pool. Use this method for | 116 // ClientSocketHandle with the relevant socket pool. Use this method for |
| 111 // HTTP/HTTPS requests for WebSocket handshake. | 117 // HTTP/HTTPS requests for WebSocket handshake. |
| 112 // |ssl_config_for_origin| is only used if the request | 118 // |ssl_config_for_origin| is only used if the request |
| 113 // uses SSL and |ssl_config_for_proxy| is used if the proxy server is HTTPS. | 119 // uses SSL and |ssl_config_for_proxy| is used if the proxy server is HTTPS. |
| 114 // |resolution_callback| will be invoked after the the hostname is | 120 // |resolution_callback| will be invoked after the the hostname is |
| 115 // resolved. If |resolution_callback| does not return OK, then the | 121 // resolved. If |resolution_callback| does not return OK, then the |
| 116 // connection will be aborted with that value. | 122 // connection will be aborted with that value. |
| 117 // This function uses WEBSOCKET_SOCKET_POOL socket pools. | 123 // This function uses WEBSOCKET_SOCKET_POOL socket pools. |
| 118 int InitSocketHandleForWebSocketRequest( | 124 int InitSocketHandleForWebSocketRequest( |
| 119 const GURL& request_url, | 125 ClientSocketPoolManager::SocketGroupType group_type, |
| 126 const HostPortPair& endpoint, | |
| 120 const HttpRequestHeaders& request_extra_headers, | 127 const HttpRequestHeaders& request_extra_headers, |
| 121 int request_load_flags, | 128 int request_load_flags, |
| 122 RequestPriority request_priority, | 129 RequestPriority request_priority, |
| 123 HttpNetworkSession* session, | 130 HttpNetworkSession* session, |
| 124 const ProxyInfo& proxy_info, | 131 const ProxyInfo& proxy_info, |
| 125 bool force_spdy_over_ssl, | 132 bool force_spdy_over_ssl, |
| 126 bool want_spdy_over_npn, | 133 bool want_spdy_over_npn, |
| 127 const SSLConfig& ssl_config_for_origin, | 134 const SSLConfig& ssl_config_for_origin, |
| 128 const SSLConfig& ssl_config_for_proxy, | 135 const SSLConfig& ssl_config_for_proxy, |
| 129 PrivacyMode privacy_mode, | 136 PrivacyMode privacy_mode, |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 158 const SSLConfig& ssl_config_for_origin, | 165 const SSLConfig& ssl_config_for_origin, |
| 159 const SSLConfig& ssl_config_for_proxy, | 166 const SSLConfig& ssl_config_for_proxy, |
| 160 PrivacyMode privacy_mode, | 167 PrivacyMode privacy_mode, |
| 161 const BoundNetLog& net_log, | 168 const BoundNetLog& net_log, |
| 162 ClientSocketHandle* socket_handle, | 169 ClientSocketHandle* socket_handle, |
| 163 const CompletionCallback& callback); | 170 const CompletionCallback& callback); |
| 164 | 171 |
| 165 // Similar to InitSocketHandleForHttpRequest except that it initiates the | 172 // Similar to InitSocketHandleForHttpRequest except that it initiates the |
| 166 // desired number of preconnect streams from the relevant socket pool. | 173 // desired number of preconnect streams from the relevant socket pool. |
| 167 int PreconnectSocketsForHttpRequest( | 174 int PreconnectSocketsForHttpRequest( |
| 168 const GURL& request_url, | 175 ClientSocketPoolManager::SocketGroupType group_type, |
| 176 const HostPortPair& endpoint, | |
| 169 const HttpRequestHeaders& request_extra_headers, | 177 const HttpRequestHeaders& request_extra_headers, |
| 170 int request_load_flags, | 178 int request_load_flags, |
| 171 RequestPriority request_priority, | 179 RequestPriority request_priority, |
| 172 HttpNetworkSession* session, | 180 HttpNetworkSession* session, |
| 173 const ProxyInfo& proxy_info, | 181 const ProxyInfo& proxy_info, |
| 174 bool force_spdy_over_ssl, | 182 bool force_spdy_over_ssl, |
| 175 bool want_spdy_over_npn, | 183 bool want_spdy_over_npn, |
| 176 const SSLConfig& ssl_config_for_origin, | 184 const SSLConfig& ssl_config_for_origin, |
| 177 const SSLConfig& ssl_config_for_proxy, | 185 const SSLConfig& ssl_config_for_proxy, |
| 178 PrivacyMode privacy_mode, | 186 PrivacyMode privacy_mode, |
| 179 const BoundNetLog& net_log, | 187 const BoundNetLog& net_log, |
| 180 int num_preconnect_streams); | 188 int num_preconnect_streams); |
| 181 | 189 |
| 182 } // namespace net | 190 } // namespace net |
| 183 | 191 |
| 184 #endif // NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_H_ | 192 #endif // NET_SOCKET_CLIENT_SOCKET_POOL_MANAGER_H_ |
| OLD | NEW |