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_SOCKET_SSL_CLIENT_SOCKET_POOL_H_ | 5 #ifndef NET_SOCKET_SSL_CLIENT_SOCKET_POOL_H_ |
6 #define NET_SOCKET_SSL_CLIENT_SOCKET_POOL_H_ | 6 #define NET_SOCKET_SSL_CLIENT_SOCKET_POOL_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 SocketAndCallback(SSLClientSocket* ssl_socket, | 108 SocketAndCallback(SSLClientSocket* ssl_socket, |
109 const base::Closure& job_resumption_callback) | 109 const base::Closure& job_resumption_callback) |
110 : socket(ssl_socket), callback(job_resumption_callback) {} | 110 : socket(ssl_socket), callback(job_resumption_callback) {} |
111 | 111 |
112 SSLClientSocket* socket; | 112 SSLClientSocket* socket; |
113 base::Closure callback; | 113 base::Closure callback; |
114 }; | 114 }; |
115 | 115 |
116 typedef std::vector<SocketAndCallback> SSLPendingSocketsAndCallbacks; | 116 typedef std::vector<SocketAndCallback> SSLPendingSocketsAndCallbacks; |
117 | 117 |
| 118 SSLConnectJobMessenger(); |
| 119 |
118 // Removes |socket| from the set of sockets being monitored. This | 120 // Removes |socket| from the set of sockets being monitored. This |
119 // guarantees that |job_resumption_callback| will not be called for | 121 // guarantees that |job_resumption_callback| will not be called for |
120 // the socket. | 122 // the socket. |
121 void RemovePendingSocket(SSLClientSocket* ssl_socket); | 123 void RemovePendingSocket(SSLClientSocket* ssl_socket); |
122 | 124 |
123 // Returns true if |ssl_socket|'s Connect() method should be called. | 125 // Returns true if |ssl_socket|'s Connect() method should be called. |
124 bool CanProceed(SSLClientSocket* ssl_socket); | 126 bool CanProceed(SSLClientSocket* ssl_socket); |
125 | 127 |
126 // Configures the SSLConnectJobMessenger to begin monitoring |ssl_socket|'s | 128 // Configures the SSLConnectJobMessenger to begin monitoring |ssl_socket|'s |
127 // connection status. After a successful connection, or an error, | 129 // connection status. After a successful connection, or an error, |
(...skipping 18 matching lines...) Expand all Loading... |
146 void OnJobCompleted(); | 148 void OnJobCompleted(); |
147 | 149 |
148 // Runs all callbacks stored in |pending_sockets_and_callbacks_|. | 150 // Runs all callbacks stored in |pending_sockets_and_callbacks_|. |
149 void RunAllCallbacks( | 151 void RunAllCallbacks( |
150 const SSLPendingSocketsAndCallbacks& pending_socket_and_callbacks); | 152 const SSLPendingSocketsAndCallbacks& pending_socket_and_callbacks); |
151 | 153 |
152 SSLPendingSocketsAndCallbacks pending_sockets_and_callbacks_; | 154 SSLPendingSocketsAndCallbacks pending_sockets_and_callbacks_; |
153 // Note: this field is a vector to allow for future design changes. Currently, | 155 // Note: this field is a vector to allow for future design changes. Currently, |
154 // this vector should only ever have one entry. | 156 // this vector should only ever have one entry. |
155 std::vector<SSLClientSocket*> connecting_sockets_; | 157 std::vector<SSLClientSocket*> connecting_sockets_; |
| 158 |
| 159 base::WeakPtrFactory<SSLConnectJobMessenger> weak_factory_; |
156 }; | 160 }; |
157 | 161 |
158 // SSLConnectJob handles the SSL handshake after setting up the underlying | 162 // SSLConnectJob handles the SSL handshake after setting up the underlying |
159 // connection as specified in the params. | 163 // connection as specified in the params. |
160 class SSLConnectJob : public ConnectJob { | 164 class SSLConnectJob : public ConnectJob { |
161 public: | 165 public: |
162 // Note: the SSLConnectJob does not own |messenger| so it must outlive the | 166 // Note: the SSLConnectJob does not own |messenger| so it must outlive the |
163 // job. | 167 // job. |
164 SSLConnectJob(const std::string& group_name, | 168 SSLConnectJob(const std::string& group_name, |
165 RequestPriority priority, | 169 RequestPriority priority, |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 HttpProxyClientSocketPool* const http_proxy_pool_; | 384 HttpProxyClientSocketPool* const http_proxy_pool_; |
381 PoolBase base_; | 385 PoolBase base_; |
382 const scoped_refptr<SSLConfigService> ssl_config_service_; | 386 const scoped_refptr<SSLConfigService> ssl_config_service_; |
383 | 387 |
384 DISALLOW_COPY_AND_ASSIGN(SSLClientSocketPool); | 388 DISALLOW_COPY_AND_ASSIGN(SSLClientSocketPool); |
385 }; | 389 }; |
386 | 390 |
387 } // namespace net | 391 } // namespace net |
388 | 392 |
389 #endif // NET_SOCKET_SSL_CLIENT_SOCKET_POOL_H_ | 393 #endif // NET_SOCKET_SSL_CLIENT_SOCKET_POOL_H_ |
OLD | NEW |