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 #include "net/dns/async_host_resolver.h" | 5 #include "net/dns/async_host_resolver.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
280 DCHECK(request); | 280 DCHECK(request); |
281 | 281 |
282 request->source_net_log().BeginEvent( | 282 request->source_net_log().BeginEvent( |
283 NetLog::TYPE_ASYNC_HOST_RESOLVER, | 283 NetLog::TYPE_ASYNC_HOST_RESOLVER, |
284 make_scoped_refptr(new NetLogSourceParameter( | 284 make_scoped_refptr(new NetLogSourceParameter( |
285 "source_dependency", request->request_net_log().source()))); | 285 "source_dependency", request->request_net_log().source()))); |
286 request->request_net_log().BeginEvent( | 286 request->request_net_log().BeginEvent( |
287 NetLog::TYPE_ASYNC_HOST_RESOLVER_REQUEST, | 287 NetLog::TYPE_ASYNC_HOST_RESOLVER_REQUEST, |
288 make_scoped_refptr(new RequestParameters( | 288 make_scoped_refptr(new RequestParameters( |
289 request->info(), request->source_net_log().source()))); | 289 request->info(), request->source_net_log().source()))); |
290 | |
291 FOR_EACH_OBSERVER( | |
292 HostResolver::Observer, observers_, | |
293 OnStartResolution(request->id(), request->info())); | |
294 } | 290 } |
295 | 291 |
296 void AsyncHostResolver::OnFinish(Request* request, int result) { | 292 void AsyncHostResolver::OnFinish(Request* request, int result) { |
297 DCHECK(request); | 293 DCHECK(request); |
298 bool was_resolved = result == OK; | |
299 | |
300 FOR_EACH_OBSERVER( | |
301 HostResolver::Observer, observers_, | |
302 OnFinishResolutionWithStatus( | |
303 request->id(), was_resolved, request->info())); | |
304 | |
305 request->request_net_log().EndEventWithNetErrorCode( | 294 request->request_net_log().EndEventWithNetErrorCode( |
306 NetLog::TYPE_ASYNC_HOST_RESOLVER_REQUEST, result); | 295 NetLog::TYPE_ASYNC_HOST_RESOLVER_REQUEST, result); |
307 request->source_net_log().EndEvent( | 296 request->source_net_log().EndEvent( |
308 NetLog::TYPE_ASYNC_HOST_RESOLVER, NULL); | 297 NetLog::TYPE_ASYNC_HOST_RESOLVER, NULL); |
309 } | 298 } |
310 | 299 |
311 void AsyncHostResolver::OnCancel(Request* request) { | 300 void AsyncHostResolver::OnCancel(Request* request) { |
312 DCHECK(request); | 301 DCHECK(request); |
313 | 302 |
314 FOR_EACH_OBSERVER( | |
315 HostResolver::Observer, observers_, | |
316 OnCancelResolution(request->id(), request->info())); | |
317 | |
318 request->request_net_log().AddEvent( | 303 request->request_net_log().AddEvent( |
319 NetLog::TYPE_CANCELLED, NULL); | 304 NetLog::TYPE_CANCELLED, NULL); |
320 request->request_net_log().EndEvent( | 305 request->request_net_log().EndEvent( |
321 NetLog::TYPE_ASYNC_HOST_RESOLVER_REQUEST, NULL); | 306 NetLog::TYPE_ASYNC_HOST_RESOLVER_REQUEST, NULL); |
322 request->source_net_log().EndEvent( | 307 request->source_net_log().EndEvent( |
323 NetLog::TYPE_ASYNC_HOST_RESOLVER, NULL); | 308 NetLog::TYPE_ASYNC_HOST_RESOLVER, NULL); |
324 } | 309 } |
325 | 310 |
326 void AsyncHostResolver::CancelRequest(RequestHandle req_handle) { | 311 void AsyncHostResolver::CancelRequest(RequestHandle req_handle) { |
327 scoped_ptr<Request> request(reinterpret_cast<Request*>(req_handle)); | 312 scoped_ptr<Request> request(reinterpret_cast<Request*>(req_handle)); |
328 DCHECK(request.get()); | 313 DCHECK(request.get()); |
329 | 314 |
330 KeyRequestListMap::iterator it = requestlist_map_.find(request->key()); | 315 KeyRequestListMap::iterator it = requestlist_map_.find(request->key()); |
331 if (it != requestlist_map_.end()) | 316 if (it != requestlist_map_.end()) |
332 it->second.remove(request.get()); | 317 it->second.remove(request.get()); |
333 else | 318 else |
334 pending_requests_[request->priority()].remove(request.get()); | 319 pending_requests_[request->priority()].remove(request.get()); |
335 } | 320 } |
336 | 321 |
337 void AsyncHostResolver::AddObserver(HostResolver::Observer* observer) { | |
338 observers_.AddObserver(observer); | |
339 } | |
340 | |
341 void AsyncHostResolver::RemoveObserver(HostResolver::Observer* observer) { | |
342 observers_.RemoveObserver(observer); | |
343 } | |
344 | |
345 void AsyncHostResolver::SetDefaultAddressFamily( | 322 void AsyncHostResolver::SetDefaultAddressFamily( |
346 AddressFamily address_family) { | 323 AddressFamily address_family) { |
347 NOTIMPLEMENTED(); | 324 NOTIMPLEMENTED(); |
348 } | 325 } |
349 | 326 |
350 AddressFamily AsyncHostResolver::GetDefaultAddressFamily() const { | 327 AddressFamily AsyncHostResolver::GetDefaultAddressFamily() const { |
351 return ADDRESS_FAMILY_IPV4; | 328 return ADDRESS_FAMILY_IPV4; |
352 } | 329 } |
353 | 330 |
354 HostCache* AsyncHostResolver::GetHostCache() { | 331 HostCache* AsyncHostResolver::GetHostCache() { |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
408 ProcessPending(); | 385 ProcessPending(); |
409 } | 386 } |
410 | 387 |
411 AsyncHostResolver::Request* AsyncHostResolver::CreateNewRequest( | 388 AsyncHostResolver::Request* AsyncHostResolver::CreateNewRequest( |
412 const RequestInfo& info, | 389 const RequestInfo& info, |
413 OldCompletionCallback* callback, | 390 OldCompletionCallback* callback, |
414 AddressList* addresses, | 391 AddressList* addresses, |
415 const BoundNetLog& source_net_log) { | 392 const BoundNetLog& source_net_log) { |
416 BoundNetLog request_net_log = BoundNetLog::Make(net_log_, | 393 BoundNetLog request_net_log = BoundNetLog::Make(net_log_, |
417 NetLog::SOURCE_ASYNC_HOST_RESOLVER_REQUEST); | 394 NetLog::SOURCE_ASYNC_HOST_RESOLVER_REQUEST); |
418 int id = next_request_id_++; | 395 int id = next_request_id_++; |
cbentzel
2011/11/15 10:49:01
Could you remove id here, and from Request?
| |
419 return new Request( | 396 return new Request( |
420 this, source_net_log, request_net_log, id, info, callback, addresses); | 397 this, source_net_log, request_net_log, id, info, callback, addresses); |
421 } | 398 } |
422 | 399 |
423 bool AsyncHostResolver::AttachToRequestList(Request* request) { | 400 bool AsyncHostResolver::AttachToRequestList(Request* request) { |
424 KeyRequestListMap::iterator it = requestlist_map_.find(request->key()); | 401 KeyRequestListMap::iterator it = requestlist_map_.find(request->key()); |
425 if (it == requestlist_map_.end()) | 402 if (it == requestlist_map_.end()) |
426 return false; | 403 return false; |
427 it->second.push_back(request); | 404 it->second.push_back(request); |
428 return true; | 405 return true; |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
516 it = requests.erase(it); | 493 it = requests.erase(it); |
517 } else { | 494 } else { |
518 ++it; | 495 ++it; |
519 } | 496 } |
520 } | 497 } |
521 } | 498 } |
522 StartNewTransactionFor(request); | 499 StartNewTransactionFor(request); |
523 } | 500 } |
524 | 501 |
525 } // namespace net | 502 } // namespace net |
OLD | NEW |