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 |