| 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 #include "net/quic/quic_stream_factory.h" | 5 #include "net/quic/quic_stream_factory.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/cpu.h" | 9 #include "base/cpu.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 break; | 285 break; |
| 286 default: | 286 default: |
| 287 NOTREACHED() << "io_state_: " << io_state_; | 287 NOTREACHED() << "io_state_: " << io_state_; |
| 288 break; | 288 break; |
| 289 } | 289 } |
| 290 } while (io_state_ != STATE_NONE && rv != ERR_IO_PENDING); | 290 } while (io_state_ != STATE_NONE && rv != ERR_IO_PENDING); |
| 291 return rv; | 291 return rv; |
| 292 } | 292 } |
| 293 | 293 |
| 294 void QuicStreamFactory::Job::OnIOComplete(int rv) { | 294 void QuicStreamFactory::Job::OnIOComplete(int rv) { |
| 295 // TODO(vadimt): Remove ScopedTracker below once crbug.com/436634 is fixed. | 295 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed. |
| 296 tracked_objects::ScopedTracker tracking_profile( | 296 tracked_objects::ScopedTracker tracking_profile1( |
| 297 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 297 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 298 "436634 QuicStreamFactory::Job::OnIOComplete")); | 298 "422516 QuicStreamFactory::Job::OnIOComplete1")); |
| 299 | 299 |
| 300 rv = DoLoop(rv); | 300 rv = DoLoop(rv); |
| 301 | 301 |
| 302 tracked_objects::ScopedTracker tracking_profile2( |
| 303 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 304 "422516 QuicStreamFactory::Job::OnIOComplete2")); |
| 305 |
| 302 if (rv != ERR_IO_PENDING && !callback_.is_null()) { | 306 if (rv != ERR_IO_PENDING && !callback_.is_null()) { |
| 303 callback_.Run(rv); | 307 callback_.Run(rv); |
| 304 } | 308 } |
| 305 } | 309 } |
| 306 | 310 |
| 307 void QuicStreamFactory::Job::CancelWaitForDataReadyCallback() { | 311 void QuicStreamFactory::Job::CancelWaitForDataReadyCallback() { |
| 308 // If we are waiting for WaitForDataReadyCallback, then cancel the callback. | 312 // If we are waiting for WaitForDataReadyCallback, then cancel the callback. |
| 309 if (io_state_ != STATE_LOAD_SERVER_INFO_COMPLETE) | 313 if (io_state_ != STATE_LOAD_SERVER_INFO_COMPLETE) |
| 310 return; | 314 return; |
| 311 server_info_->CancelWaitForDataReadyCallback(); | 315 server_info_->CancelWaitForDataReadyCallback(); |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 640 active_sessions_[server_id] = session; | 644 active_sessions_[server_id] = session; |
| 641 session_aliases_[session].insert(server_id); | 645 session_aliases_[session].insert(server_id); |
| 642 return true; | 646 return true; |
| 643 } | 647 } |
| 644 } | 648 } |
| 645 return false; | 649 return false; |
| 646 } | 650 } |
| 647 | 651 |
| 648 void QuicStreamFactory::OnJobComplete(Job* job, int rv) { | 652 void QuicStreamFactory::OnJobComplete(Job* job, int rv) { |
| 649 if (rv == OK) { | 653 if (rv == OK) { |
| 654 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed. |
| 655 tracked_objects::ScopedTracker tracking_profile1( |
| 656 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 657 "422516 QuicStreamFactory::OnJobComplete1")); |
| 658 |
| 650 if (!always_require_handshake_confirmation_) | 659 if (!always_require_handshake_confirmation_) |
| 651 set_require_confirmation(false); | 660 set_require_confirmation(false); |
| 652 | 661 |
| 653 // Create all the streams, but do not notify them yet. | 662 // Create all the streams, but do not notify them yet. |
| 654 for (RequestSet::iterator it = job_requests_map_[job].begin(); | 663 for (RequestSet::iterator it = job_requests_map_[job].begin(); |
| 655 it != job_requests_map_[job].end() ; ++it) { | 664 it != job_requests_map_[job].end() ; ++it) { |
| 656 DCHECK(HasActiveSession(job->server_id())); | 665 DCHECK(HasActiveSession(job->server_id())); |
| 657 (*it)->set_stream(CreateIfSessionExists(job->server_id(), | 666 (*it)->set_stream(CreateIfSessionExists(job->server_id(), |
| 658 (*it)->net_log())); | 667 (*it)->net_log())); |
| 659 } | 668 } |
| 660 } | 669 } |
| 670 |
| 671 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed. |
| 672 tracked_objects::ScopedTracker tracking_profile2( |
| 673 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 674 "422516 QuicStreamFactory::OnJobComplete2")); |
| 675 |
| 661 while (!job_requests_map_[job].empty()) { | 676 while (!job_requests_map_[job].empty()) { |
| 662 RequestSet::iterator it = job_requests_map_[job].begin(); | 677 RequestSet::iterator it = job_requests_map_[job].begin(); |
| 663 QuicStreamRequest* request = *it; | 678 QuicStreamRequest* request = *it; |
| 664 job_requests_map_[job].erase(it); | 679 job_requests_map_[job].erase(it); |
| 665 active_requests_.erase(request); | 680 active_requests_.erase(request); |
| 666 // Even though we're invoking callbacks here, we don't need to worry | 681 // Even though we're invoking callbacks here, we don't need to worry |
| 667 // about |this| being deleted, because the factory is owned by the | 682 // about |this| being deleted, because the factory is owned by the |
| 668 // profile which can not be deleted via callbacks. | 683 // profile which can not be deleted via callbacks. |
| 669 request->OnRequestComplete(rv); | 684 request->OnRequestComplete(rv); |
| 670 } | 685 } |
| 686 |
| 687 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed. |
| 688 tracked_objects::ScopedTracker tracking_profile3( |
| 689 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 690 "422516 QuicStreamFactory::OnJobComplete3")); |
| 691 |
| 671 active_jobs_.erase(job->server_id()); | 692 active_jobs_.erase(job->server_id()); |
| 672 job_requests_map_.erase(job); | 693 job_requests_map_.erase(job); |
| 673 delete job; | 694 delete job; |
| 674 return; | 695 return; |
| 675 } | 696 } |
| 676 | 697 |
| 677 // Returns a newly created QuicHttpStream owned by the caller, if a | 698 // Returns a newly created QuicHttpStream owned by the caller, if a |
| 678 // matching session already exists. Returns nullptr otherwise. | 699 // matching session already exists. Returns nullptr otherwise. |
| 679 scoped_ptr<QuicHttpStream> QuicStreamFactory::CreateIfSessionExists( | 700 scoped_ptr<QuicHttpStream> QuicStreamFactory::CreateIfSessionExists( |
| 680 const QuicServerId& server_id, | 701 const QuicServerId& server_id, |
| (...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1079 http_server_properties_->ClearAlternateProtocol(server); | 1100 http_server_properties_->ClearAlternateProtocol(server); |
| 1080 http_server_properties_->SetAlternateProtocol( | 1101 http_server_properties_->SetAlternateProtocol( |
| 1081 server, alternate.port, alternate.protocol, 1); | 1102 server, alternate.port, alternate.protocol, 1); |
| 1082 DCHECK_EQ(QUIC, | 1103 DCHECK_EQ(QUIC, |
| 1083 http_server_properties_->GetAlternateProtocol(server).protocol); | 1104 http_server_properties_->GetAlternateProtocol(server).protocol); |
| 1084 DCHECK(http_server_properties_->WasAlternateProtocolRecentlyBroken( | 1105 DCHECK(http_server_properties_->WasAlternateProtocolRecentlyBroken( |
| 1085 server)); | 1106 server)); |
| 1086 } | 1107 } |
| 1087 | 1108 |
| 1088 } // namespace net | 1109 } // namespace net |
| OLD | NEW |