| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_BASE_HOST_RESOLVER_IMPL_H_ | 5 #ifndef NET_BASE_HOST_RESOLVER_IMPL_H_ |
| 6 #define NET_BASE_HOST_RESOLVER_IMPL_H_ | 6 #define NET_BASE_HOST_RESOLVER_IMPL_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 // HostResolver methods: | 129 // HostResolver methods: |
| 130 virtual int Resolve(const RequestInfo& info, | 130 virtual int Resolve(const RequestInfo& info, |
| 131 AddressList* addresses, | 131 AddressList* addresses, |
| 132 OldCompletionCallback* callback, | 132 OldCompletionCallback* callback, |
| 133 RequestHandle* out_req, | 133 RequestHandle* out_req, |
| 134 const BoundNetLog& source_net_log) OVERRIDE; | 134 const BoundNetLog& source_net_log) OVERRIDE; |
| 135 virtual int ResolveFromCache(const RequestInfo& info, | 135 virtual int ResolveFromCache(const RequestInfo& info, |
| 136 AddressList* addresses, | 136 AddressList* addresses, |
| 137 const BoundNetLog& source_net_log) OVERRIDE; | 137 const BoundNetLog& source_net_log) OVERRIDE; |
| 138 virtual void CancelRequest(RequestHandle req) OVERRIDE; | 138 virtual void CancelRequest(RequestHandle req) OVERRIDE; |
| 139 virtual void AddObserver(HostResolver::Observer* observer) OVERRIDE; | |
| 140 virtual void RemoveObserver(HostResolver::Observer* observer) OVERRIDE; | |
| 141 virtual void SetDefaultAddressFamily(AddressFamily address_family) OVERRIDE; | 139 virtual void SetDefaultAddressFamily(AddressFamily address_family) OVERRIDE; |
| 142 virtual AddressFamily GetDefaultAddressFamily() const OVERRIDE; | 140 virtual AddressFamily GetDefaultAddressFamily() const OVERRIDE; |
| 143 virtual void ProbeIPv6Support() OVERRIDE; | 141 virtual void ProbeIPv6Support() OVERRIDE; |
| 144 virtual HostCache* GetHostCache() OVERRIDE; | 142 virtual HostCache* GetHostCache() OVERRIDE; |
| 145 | 143 |
| 146 private: | 144 private: |
| 147 // Allow tests to access our innards for testing purposes. | 145 // Allow tests to access our innards for testing purposes. |
| 148 friend class LookupAttemptHostResolverProc; | 146 friend class LookupAttemptHostResolverProc; |
| 149 | 147 |
| 150 // Allow tests to access our innards for testing purposes. | 148 // Allow tests to access our innards for testing purposes. |
| 151 FRIEND_TEST_ALL_PREFIXES(HostResolverImplTest, MultipleAttempts); | 149 FRIEND_TEST_ALL_PREFIXES(HostResolverImplTest, MultipleAttempts); |
| 152 | 150 |
| 153 class Job; | 151 class Job; |
| 154 class JobPool; | 152 class JobPool; |
| 155 class IPv6ProbeJob; | 153 class IPv6ProbeJob; |
| 156 class Request; | 154 class Request; |
| 157 typedef std::vector<Request*> RequestsList; | 155 typedef std::vector<Request*> RequestsList; |
| 158 typedef HostCache::Key Key; | 156 typedef HostCache::Key Key; |
| 159 typedef std::map<Key, scoped_refptr<Job> > JobMap; | 157 typedef std::map<Key, scoped_refptr<Job> > JobMap; |
| 160 typedef std::vector<HostResolver::Observer*> ObserversList; | |
| 161 | 158 |
| 162 // Helper used by |Resolve()| and |ResolveFromCache()|. Performs IP | 159 // Helper used by |Resolve()| and |ResolveFromCache()|. Performs IP |
| 163 // literal and cache lookup, returns OK if successful, | 160 // literal and cache lookup, returns OK if successful, |
| 164 // ERR_NAME_NOT_RESOLVED if either hostname is invalid or IP literal is | 161 // ERR_NAME_NOT_RESOLVED if either hostname is invalid or IP literal is |
| 165 // incompatible, ERR_DNS_CACHE_MISS if entry was not found in cache. | 162 // incompatible, ERR_DNS_CACHE_MISS if entry was not found in cache. |
| 166 int ResolveHelper(int request_id, | 163 int ResolveHelper(const Key& key, |
| 167 const Key& key, | |
| 168 const RequestInfo& info, | 164 const RequestInfo& info, |
| 169 AddressList* addresses, | 165 AddressList* addresses, |
| 170 const BoundNetLog& request_net_log); | 166 const BoundNetLog& request_net_log); |
| 171 | 167 |
| 172 // Tries to resolve |key| as an IP, returns true and sets |net_error| if | 168 // Tries to resolve |key| as an IP, returns true and sets |net_error| if |
| 173 // succeeds, returns false otherwise. | 169 // succeeds, returns false otherwise. |
| 174 bool ResolveAsIP(const Key& key, | 170 bool ResolveAsIP(const Key& key, |
| 175 const RequestInfo& info, | 171 const RequestInfo& info, |
| 176 int* net_error, | 172 int* net_error, |
| 177 AddressList* addresses); | 173 AddressList* addresses); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 208 // from |jobs_| and does not cache the result (ERR_ABORTED). | 204 // from |jobs_| and does not cache the result (ERR_ABORTED). |
| 209 void AbortJob(Job* job); | 205 void AbortJob(Job* job); |
| 210 | 206 |
| 211 // Used by both OnJobComplete() and AbortJob(); | 207 // Used by both OnJobComplete() and AbortJob(); |
| 212 void OnJobCompleteInternal(Job* job, int net_error, int os_error, | 208 void OnJobCompleteInternal(Job* job, int net_error, int os_error, |
| 213 const AddressList& addrlist); | 209 const AddressList& addrlist); |
| 214 | 210 |
| 215 // Called when a request has just been started. | 211 // Called when a request has just been started. |
| 216 void OnStartRequest(const BoundNetLog& source_net_log, | 212 void OnStartRequest(const BoundNetLog& source_net_log, |
| 217 const BoundNetLog& request_net_log, | 213 const BoundNetLog& request_net_log, |
| 218 int request_id, | |
| 219 const RequestInfo& info); | 214 const RequestInfo& info); |
| 220 | 215 |
| 221 // Called when a request has just completed (before its callback is run). | 216 // Called when a request has just completed (before its callback is run). |
| 222 void OnFinishRequest(const BoundNetLog& source_net_log, | 217 void OnFinishRequest(const BoundNetLog& source_net_log, |
| 223 const BoundNetLog& request_net_log, | 218 const BoundNetLog& request_net_log, |
| 224 int request_id, | |
| 225 const RequestInfo& info, | 219 const RequestInfo& info, |
| 226 int net_error, | 220 int net_error, |
| 227 int os_error); | 221 int os_error); |
| 228 | 222 |
| 229 // Called when a request has been cancelled. | 223 // Called when a request has been cancelled. |
| 230 void OnCancelRequest(const BoundNetLog& source_net_log, | 224 void OnCancelRequest(const BoundNetLog& source_net_log, |
| 231 const BoundNetLog& request_net_log, | 225 const BoundNetLog& request_net_log, |
| 232 int request_id, | |
| 233 const RequestInfo& info); | 226 const RequestInfo& info); |
| 234 | 227 |
| 235 // Notify IPv6ProbeJob not to call back, and discard reference to the job. | 228 // Notify IPv6ProbeJob not to call back, and discard reference to the job. |
| 236 void DiscardIPv6ProbeJob(); | 229 void DiscardIPv6ProbeJob(); |
| 237 | 230 |
| 238 // Callback from IPv6 probe activity. | 231 // Callback from IPv6 probe activity. |
| 239 void IPv6ProbeSetDefaultAddressFamily(AddressFamily address_family); | 232 void IPv6ProbeSetDefaultAddressFamily(AddressFamily address_family); |
| 240 | 233 |
| 241 // Returns true if the constraints for |pool| are met, and a new job can be | 234 // Returns true if the constraints for |pool| are met, and a new job can be |
| 242 // created for this pool. | 235 // created for this pool. |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 uint32 retry_factor_; | 314 uint32 retry_factor_; |
| 322 | 315 |
| 323 // The information to track pending requests for a JobPool, as well as | 316 // The information to track pending requests for a JobPool, as well as |
| 324 // how many outstanding jobs the pool already has, and its constraints. | 317 // how many outstanding jobs the pool already has, and its constraints. |
| 325 JobPool* job_pools_[POOL_COUNT]; | 318 JobPool* job_pools_[POOL_COUNT]; |
| 326 | 319 |
| 327 // The job that OnJobComplete() is currently processing (needed in case | 320 // The job that OnJobComplete() is currently processing (needed in case |
| 328 // HostResolver gets deleted from within the callback). | 321 // HostResolver gets deleted from within the callback). |
| 329 scoped_refptr<Job> cur_completing_job_; | 322 scoped_refptr<Job> cur_completing_job_; |
| 330 | 323 |
| 331 // The observers to notify when a request starts/ends. | |
| 332 ObserversList observers_; | |
| 333 | |
| 334 // Monotonically increasing ID number to assign to the next request. | |
| 335 // Observers are the only consumers of this ID number. | |
| 336 int next_request_id_; | |
| 337 | |
| 338 // Monotonically increasing ID number to assign to the next job. | 324 // Monotonically increasing ID number to assign to the next job. |
| 339 // The only consumer of this ID is the requests tracing code. | 325 // The only consumer of this ID is the requests tracing code. |
| 340 int next_job_id_; | 326 int next_job_id_; |
| 341 | 327 |
| 342 // The procedure to use for resolving host names. This will be NULL, except | 328 // The procedure to use for resolving host names. This will be NULL, except |
| 343 // in the case of unit-tests which inject custom host resolving behaviors. | 329 // in the case of unit-tests which inject custom host resolving behaviors. |
| 344 scoped_refptr<HostResolverProc> resolver_proc_; | 330 scoped_refptr<HostResolverProc> resolver_proc_; |
| 345 | 331 |
| 346 // Address family to use when the request doesn't specify one. | 332 // Address family to use when the request doesn't specify one. |
| 347 AddressFamily default_address_family_; | 333 AddressFamily default_address_family_; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 358 HostResolverFlags additional_resolver_flags_; | 344 HostResolverFlags additional_resolver_flags_; |
| 359 | 345 |
| 360 NetLog* net_log_; | 346 NetLog* net_log_; |
| 361 | 347 |
| 362 DISALLOW_COPY_AND_ASSIGN(HostResolverImpl); | 348 DISALLOW_COPY_AND_ASSIGN(HostResolverImpl); |
| 363 }; | 349 }; |
| 364 | 350 |
| 365 } // namespace net | 351 } // namespace net |
| 366 | 352 |
| 367 #endif // NET_BASE_HOST_RESOLVER_IMPL_H_ | 353 #endif // NET_BASE_HOST_RESOLVER_IMPL_H_ |
| OLD | NEW |