OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/socket/websocket_transport_client_socket_pool.h" | 5 #include "net/socket/websocket_transport_client_socket_pool.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 WebSocketTransportClientSocketPool::WebSocketTransportClientSocketPool( | 280 WebSocketTransportClientSocketPool::WebSocketTransportClientSocketPool( |
281 int max_sockets, | 281 int max_sockets, |
282 int max_sockets_per_group, | 282 int max_sockets_per_group, |
283 HostResolver* host_resolver, | 283 HostResolver* host_resolver, |
284 ClientSocketFactory* client_socket_factory, | 284 ClientSocketFactory* client_socket_factory, |
285 NetLog* net_log) | 285 NetLog* net_log) |
286 : TransportClientSocketPool(max_sockets, | 286 : TransportClientSocketPool(max_sockets, |
287 max_sockets_per_group, | 287 max_sockets_per_group, |
288 host_resolver, | 288 host_resolver, |
289 client_socket_factory, | 289 client_socket_factory, |
290 NULL, | 290 nullptr, |
291 net_log), | 291 net_log), |
292 connect_job_delegate_(this), | 292 connect_job_delegate_(this), |
293 pool_net_log_(net_log), | 293 pool_net_log_(net_log), |
294 client_socket_factory_(client_socket_factory), | 294 client_socket_factory_(client_socket_factory), |
295 host_resolver_(host_resolver), | 295 host_resolver_(host_resolver), |
296 max_sockets_(max_sockets), | 296 max_sockets_(max_sockets), |
297 handed_out_socket_count_(0), | 297 handed_out_socket_count_(0), |
298 flushing_(false), | 298 flushing_(false), |
299 weak_factory_(this) {} | 299 weak_factory_(this) {} |
300 | 300 |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 // then OnConnectJobComplete(). The |flushing_| flag tells this object to | 423 // then OnConnectJobComplete(). The |flushing_| flag tells this object to |
424 // ignore spurious calls to OnConnectJobComplete(). It is safe to ignore those | 424 // ignore spurious calls to OnConnectJobComplete(). It is safe to ignore those |
425 // calls because this method will delete the jobs and call their callbacks | 425 // calls because this method will delete the jobs and call their callbacks |
426 // anyway. | 426 // anyway. |
427 flushing_ = true; | 427 flushing_ = true; |
428 for (PendingConnectsMap::iterator it = pending_connects_.begin(); | 428 for (PendingConnectsMap::iterator it = pending_connects_.begin(); |
429 it != pending_connects_.end(); | 429 it != pending_connects_.end(); |
430 ++it) { | 430 ++it) { |
431 InvokeUserCallbackLater( | 431 InvokeUserCallbackLater( |
432 it->second->handle(), it->second->callback(), error); | 432 it->second->handle(), it->second->callback(), error); |
433 delete it->second, it->second = NULL; | 433 delete it->second, it->second = nullptr; |
434 } | 434 } |
435 pending_connects_.clear(); | 435 pending_connects_.clear(); |
436 for (StalledRequestQueue::iterator it = stalled_request_queue_.begin(); | 436 for (StalledRequestQueue::iterator it = stalled_request_queue_.begin(); |
437 it != stalled_request_queue_.end(); | 437 it != stalled_request_queue_.end(); |
438 ++it) { | 438 ++it) { |
439 InvokeUserCallbackLater(it->handle, it->callback, error); | 439 InvokeUserCallbackLater(it->handle, it->callback, error); |
440 } | 440 } |
441 stalled_request_map_.clear(); | 441 stalled_request_map_.clear(); |
442 stalled_request_queue_.clear(); | 442 stalled_request_queue_.clear(); |
443 flushing_ = false; | 443 flushing_ = false; |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
544 | 544 |
545 bool handed_out_socket = TryHandOutSocket(result, job); | 545 bool handed_out_socket = TryHandOutSocket(result, job); |
546 | 546 |
547 CompletionCallback callback = job->callback(); | 547 CompletionCallback callback = job->callback(); |
548 | 548 |
549 ClientSocketHandle* const handle = job->handle(); | 549 ClientSocketHandle* const handle = job->handle(); |
550 | 550 |
551 bool delete_succeeded = DeleteJob(handle); | 551 bool delete_succeeded = DeleteJob(handle); |
552 DCHECK(delete_succeeded); | 552 DCHECK(delete_succeeded); |
553 | 553 |
554 job = NULL; | 554 job = nullptr; |
555 | 555 |
556 if (!handed_out_socket) | 556 if (!handed_out_socket) |
557 ActivateStalledRequest(); | 557 ActivateStalledRequest(); |
558 | 558 |
559 InvokeUserCallbackLater(handle, callback, result); | 559 InvokeUserCallbackLater(handle, callback, result); |
560 } | 560 } |
561 | 561 |
562 void WebSocketTransportClientSocketPool::InvokeUserCallbackLater( | 562 void WebSocketTransportClientSocketPool::InvokeUserCallbackLater( |
563 ClientSocketHandle* handle, | 563 ClientSocketHandle* handle, |
564 const CompletionCallback& callback, | 564 const CompletionCallback& callback, |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
616 | 616 |
617 bool WebSocketTransportClientSocketPool::DeleteJob(ClientSocketHandle* handle) { | 617 bool WebSocketTransportClientSocketPool::DeleteJob(ClientSocketHandle* handle) { |
618 PendingConnectsMap::iterator it = pending_connects_.find(handle); | 618 PendingConnectsMap::iterator it = pending_connects_.find(handle); |
619 if (it == pending_connects_.end()) | 619 if (it == pending_connects_.end()) |
620 return false; | 620 return false; |
621 // Deleting a ConnectJob which holds an endpoint lock can lead to a different | 621 // Deleting a ConnectJob which holds an endpoint lock can lead to a different |
622 // ConnectJob proceeding to connect. If the connect proceeds synchronously | 622 // ConnectJob proceeding to connect. If the connect proceeds synchronously |
623 // (usually because of a failure) then it can trigger that job to be | 623 // (usually because of a failure) then it can trigger that job to be |
624 // deleted. |it| remains valid because std::map guarantees that erase() does | 624 // deleted. |it| remains valid because std::map guarantees that erase() does |
625 // not invalid iterators to other entries. | 625 // not invalid iterators to other entries. |
626 delete it->second, it->second = NULL; | 626 delete it->second, it->second = nullptr; |
627 DCHECK(pending_connects_.find(handle) == it); | 627 DCHECK(pending_connects_.find(handle) == it); |
628 pending_connects_.erase(it); | 628 pending_connects_.erase(it); |
629 return true; | 629 return true; |
630 } | 630 } |
631 | 631 |
632 const WebSocketTransportConnectJob* | 632 const WebSocketTransportConnectJob* |
633 WebSocketTransportClientSocketPool::LookupConnectJob( | 633 WebSocketTransportClientSocketPool::LookupConnectJob( |
634 const ClientSocketHandle* handle) const { | 634 const ClientSocketHandle* handle) const { |
635 PendingConnectsMap::const_iterator it = pending_connects_.find(handle); | 635 PendingConnectsMap::const_iterator it = pending_connects_.find(handle); |
636 CHECK(it != pending_connects_.end()); | 636 CHECK(it != pending_connects_.end()); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 handle(handle), | 694 handle(handle), |
695 callback(callback), | 695 callback(callback), |
696 net_log(net_log) {} | 696 net_log(net_log) {} |
697 | 697 |
698 WebSocketTransportClientSocketPool::StalledRequest::StalledRequest( | 698 WebSocketTransportClientSocketPool::StalledRequest::StalledRequest( |
699 const StalledRequest& other) = default; | 699 const StalledRequest& other) = default; |
700 | 700 |
701 WebSocketTransportClientSocketPool::StalledRequest::~StalledRequest() {} | 701 WebSocketTransportClientSocketPool::StalledRequest::~StalledRequest() {} |
702 | 702 |
703 } // namespace net | 703 } // namespace net |
OLD | NEW |