Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(313)

Side by Side Diff: net/spdy/chromium/spdy_session_pool.cc

Issue 2932513004: Throttle HttpStreamFactoryImpl::Job to HTTP/2-supported servers (Closed)
Patch Set: self Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/spdy/chromium/spdy_session_pool.h" 5 #include "net/spdy/chromium/spdy_session_pool.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 direct || request->url().SchemeIs(url::kHttpsScheme); 432 direct || request->url().SchemeIs(url::kHttpsScheme);
433 request->OnStreamReady( 433 request->OnStreamReady(
434 used_ssl_config, used_proxy_info, 434 used_ssl_config, used_proxy_info,
435 base::MakeUnique<SpdyHttpStream>(spdy_session, use_relative_url, 435 base::MakeUnique<SpdyHttpStream>(spdy_session, use_relative_url,
436 source_dependency)); 436 source_dependency));
437 } 437 }
438 } 438 }
439 // TODO(mbelshe): Alert other valid requests. 439 // TODO(mbelshe): Alert other valid requests.
440 } 440 }
441 441
442 bool SpdySessionPool::StartRequest(const SpdySessionKey& spdy_session_key,
443 const base::Closure& callback) {
444 auto iter = spdy_session_pending_request_map_.find(spdy_session_key);
445 if (iter == spdy_session_pending_request_map_.end()) {
446 spdy_session_pending_request_map_.emplace(spdy_session_key,
447 std::list<base::Closure>{});
448 return true;
449 }
450 iter->second.push_back(callback);
451 return false;
452 }
453
454 void SpdySessionPool::ResumeAllPendingRequests(
455 const SpdySessionKey& spdy_session_key) {
456 auto iter = spdy_session_pending_request_map_.find(spdy_session_key);
457 if (iter != spdy_session_pending_request_map_.end()) {
458 for (auto callback : iter->second) {
459 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback);
460 }
461 spdy_session_pending_request_map_.erase(iter);
462 }
463 }
464
442 void SpdySessionPool::AddRequestToSpdySessionRequestMap( 465 void SpdySessionPool::AddRequestToSpdySessionRequestMap(
443 const SpdySessionKey& spdy_session_key, 466 const SpdySessionKey& spdy_session_key,
444 HttpStreamFactoryImpl::Request* request) { 467 HttpStreamFactoryImpl::Request* request) {
445 if (request->HasSpdySessionKey()) 468 if (request->HasSpdySessionKey())
446 return; 469 return;
447 RequestSet& request_set = spdy_session_request_map_[spdy_session_key]; 470 RequestSet& request_set = spdy_session_request_map_[spdy_session_key];
448 DCHECK(!base::ContainsKey(request_set, request)); 471 DCHECK(!base::ContainsKey(request_set, request));
449 request_set.insert(request); 472 request_set.insert(request);
450 request->SetSpdySessionKey(spdy_session_key); 473 request->SetSpdySessionKey(spdy_session_key);
451 } 474 }
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 598
576 if (idle_only && (*it)->is_active()) 599 if (idle_only && (*it)->is_active())
577 continue; 600 continue;
578 601
579 (*it)->CloseSessionOnError(error, description); 602 (*it)->CloseSessionOnError(error, description);
580 DCHECK(!IsSessionAvailable(*it)); 603 DCHECK(!IsSessionAvailable(*it));
581 } 604 }
582 } 605 }
583 606
584 } // namespace net 607 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698