| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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_SOCKS_CLIENT_SOCKET_POOL_H_ | 5 #ifndef NET_SOCKET_SOCKS_CLIENT_SOCKET_POOL_H_ |
| 6 #define NET_SOCKET_SOCKS_CLIENT_SOCKET_POOL_H_ | 6 #define NET_SOCKET_SOCKS_CLIENT_SOCKET_POOL_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 socks_v5_(socks_v5) { | 34 socks_v5_(socks_v5) { |
| 35 // The referrer is used by the DNS prefetch system to correlate resolutions | 35 // The referrer is used by the DNS prefetch system to correlate resolutions |
| 36 // with the page that triggered them. It doesn't impact the actual addresses | 36 // with the page that triggered them. It doesn't impact the actual addresses |
| 37 // that we resolve to. | 37 // that we resolve to. |
| 38 destination_.set_referrer(referrer); | 38 destination_.set_referrer(referrer); |
| 39 destination_.set_priority(priority); | 39 destination_.set_priority(priority); |
| 40 } | 40 } |
| 41 | 41 |
| 42 const TCPSocketParams& tcp_params() const { return tcp_params_; } | 42 const TCPSocketParams& tcp_params() const { return tcp_params_; } |
| 43 const HostResolver::RequestInfo& destination() const { return destination_; } | 43 const HostResolver::RequestInfo& destination() const { return destination_; } |
| 44 bool is_socks_v5() const { return socks_v5_; }; | 44 bool is_socks_v5() const { return socks_v5_; } |
| 45 | 45 |
| 46 private: | 46 private: |
| 47 // The tcp connection must point toward the proxy server. | 47 // The tcp connection must point toward the proxy server. |
| 48 const TCPSocketParams tcp_params_; | 48 const TCPSocketParams tcp_params_; |
| 49 // This is the HTTP destination. | 49 // This is the HTTP destination. |
| 50 HostResolver::RequestInfo destination_; | 50 HostResolver::RequestInfo destination_; |
| 51 const bool socks_v5_; | 51 const bool socks_v5_; |
| 52 }; | 52 }; |
| 53 | 53 |
| 54 // SOCKSConnectJob handles the handshake to a socks server after setting up | 54 // SOCKSConnectJob handles the handshake to a socks server after setting up |
| 55 // an underlying transport socket. | 55 // an underlying transport socket. |
| 56 class SOCKSConnectJob : public ConnectJob { | 56 class SOCKSConnectJob : public ConnectJob { |
| 57 public: | 57 public: |
| 58 SOCKSConnectJob(const std::string& group_name, | 58 SOCKSConnectJob(const std::string& group_name, |
| 59 const SOCKSSocketParams& params, | 59 const SOCKSSocketParams& params, |
| 60 const base::TimeDelta& timeout_duration, | 60 const base::TimeDelta& timeout_duration, |
| 61 const scoped_refptr<TCPClientSocketPool>& tcp_pool, | 61 const scoped_refptr<TCPClientSocketPool>& tcp_pool, |
| 62 const scoped_refptr<HostResolver> &host_resolver, | 62 const scoped_refptr<HostResolver> &host_resolver, |
| 63 Delegate* delegate, | 63 Delegate* delegate, |
| 64 const BoundNetLog& net_log); | 64 NetLog* net_log); |
| 65 virtual ~SOCKSConnectJob(); | 65 virtual ~SOCKSConnectJob(); |
| 66 | 66 |
| 67 // ConnectJob methods. | 67 // ConnectJob methods. |
| 68 virtual LoadState GetLoadState() const; | 68 virtual LoadState GetLoadState() const; |
| 69 | 69 |
| 70 private: | 70 private: |
| 71 enum State { | 71 enum State { |
| 72 kStateTCPConnect, | 72 kStateTCPConnect, |
| 73 kStateTCPConnectComplete, | 73 kStateTCPConnectComplete, |
| 74 kStateSOCKSConnect, | 74 kStateSOCKSConnect, |
| (...skipping 29 matching lines...) Expand all Loading... |
| 104 }; | 104 }; |
| 105 | 105 |
| 106 class SOCKSClientSocketPool : public ClientSocketPool { | 106 class SOCKSClientSocketPool : public ClientSocketPool { |
| 107 public: | 107 public: |
| 108 SOCKSClientSocketPool( | 108 SOCKSClientSocketPool( |
| 109 int max_sockets, | 109 int max_sockets, |
| 110 int max_sockets_per_group, | 110 int max_sockets_per_group, |
| 111 const scoped_refptr<ClientSocketPoolHistograms>& histograms, | 111 const scoped_refptr<ClientSocketPoolHistograms>& histograms, |
| 112 const scoped_refptr<HostResolver>& host_resolver, | 112 const scoped_refptr<HostResolver>& host_resolver, |
| 113 const scoped_refptr<TCPClientSocketPool>& tcp_pool, | 113 const scoped_refptr<TCPClientSocketPool>& tcp_pool, |
| 114 NetworkChangeNotifier* network_change_notifier); | 114 NetworkChangeNotifier* network_change_notifier, |
| 115 NetLog* net_log); |
| 115 | 116 |
| 116 // ClientSocketPool methods: | 117 // ClientSocketPool methods: |
| 117 virtual int RequestSocket(const std::string& group_name, | 118 virtual int RequestSocket(const std::string& group_name, |
| 118 const void* connect_params, | 119 const void* connect_params, |
| 119 RequestPriority priority, | 120 RequestPriority priority, |
| 120 ClientSocketHandle* handle, | 121 ClientSocketHandle* handle, |
| 121 CompletionCallback* callback, | 122 CompletionCallback* callback, |
| 122 const BoundNetLog& net_log); | 123 const BoundNetLog& net_log); |
| 123 | 124 |
| 124 virtual void CancelRequest(const std::string& group_name, | 125 virtual void CancelRequest(const std::string& group_name, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 148 | 149 |
| 149 protected: | 150 protected: |
| 150 virtual ~SOCKSClientSocketPool(); | 151 virtual ~SOCKSClientSocketPool(); |
| 151 | 152 |
| 152 private: | 153 private: |
| 153 typedef ClientSocketPoolBase<SOCKSSocketParams> PoolBase; | 154 typedef ClientSocketPoolBase<SOCKSSocketParams> PoolBase; |
| 154 | 155 |
| 155 class SOCKSConnectJobFactory : public PoolBase::ConnectJobFactory { | 156 class SOCKSConnectJobFactory : public PoolBase::ConnectJobFactory { |
| 156 public: | 157 public: |
| 157 SOCKSConnectJobFactory(const scoped_refptr<TCPClientSocketPool>& tcp_pool, | 158 SOCKSConnectJobFactory(const scoped_refptr<TCPClientSocketPool>& tcp_pool, |
| 158 HostResolver* host_resolver) | 159 HostResolver* host_resolver, |
| 160 NetLog* net_log) |
| 159 : tcp_pool_(tcp_pool), | 161 : tcp_pool_(tcp_pool), |
| 160 host_resolver_(host_resolver) {} | 162 host_resolver_(host_resolver), |
| 163 net_log_(net_log) {} |
| 161 | 164 |
| 162 virtual ~SOCKSConnectJobFactory() {} | 165 virtual ~SOCKSConnectJobFactory() {} |
| 163 | 166 |
| 164 // ClientSocketPoolBase::ConnectJobFactory methods. | 167 // ClientSocketPoolBase::ConnectJobFactory methods. |
| 165 virtual ConnectJob* NewConnectJob( | 168 virtual ConnectJob* NewConnectJob( |
| 166 const std::string& group_name, | 169 const std::string& group_name, |
| 167 const PoolBase::Request& request, | 170 const PoolBase::Request& request, |
| 168 ConnectJob::Delegate* delegate, | 171 ConnectJob::Delegate* delegate) const; |
| 169 const BoundNetLog& net_log) const; | |
| 170 | 172 |
| 171 virtual base::TimeDelta ConnectionTimeout() const; | 173 virtual base::TimeDelta ConnectionTimeout() const; |
| 172 | 174 |
| 173 private: | 175 private: |
| 174 const scoped_refptr<TCPClientSocketPool> tcp_pool_; | 176 const scoped_refptr<TCPClientSocketPool> tcp_pool_; |
| 175 const scoped_refptr<HostResolver> host_resolver_; | 177 const scoped_refptr<HostResolver> host_resolver_; |
| 178 NetLog* net_log_; |
| 176 | 179 |
| 177 DISALLOW_COPY_AND_ASSIGN(SOCKSConnectJobFactory); | 180 DISALLOW_COPY_AND_ASSIGN(SOCKSConnectJobFactory); |
| 178 }; | 181 }; |
| 179 | 182 |
| 180 PoolBase base_; | 183 PoolBase base_; |
| 181 | 184 |
| 182 DISALLOW_COPY_AND_ASSIGN(SOCKSClientSocketPool); | 185 DISALLOW_COPY_AND_ASSIGN(SOCKSClientSocketPool); |
| 183 }; | 186 }; |
| 184 | 187 |
| 185 REGISTER_SOCKET_PARAMS_FOR_POOL(SOCKSClientSocketPool, SOCKSSocketParams) | 188 REGISTER_SOCKET_PARAMS_FOR_POOL(SOCKSClientSocketPool, SOCKSSocketParams) |
| 186 | 189 |
| 187 } // namespace net | 190 } // namespace net |
| 188 | 191 |
| 189 #endif // NET_SOCKET_SOCKS_CLIENT_SOCKET_POOL_H_ | 192 #endif // NET_SOCKET_SOCKS_CLIENT_SOCKET_POOL_H_ |
| OLD | NEW |