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

Unified Diff: net/quic/chromium/quic_stream_factory.cc

Issue 2334943002: Add a new QuicChromiumClientSession::Handle class (Closed)
Patch Set: cleanup Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: net/quic/chromium/quic_stream_factory.cc
diff --git a/net/quic/chromium/quic_stream_factory.cc b/net/quic/chromium/quic_stream_factory.cc
index 61f79e0a5a2950db56e2a25fc78d12b0377add60..6a546f1959ade654ea8d9a3040ac9c2ddbe00c35 100644
--- a/net/quic/chromium/quic_stream_factory.cc
+++ b/net/quic/chromium/quic_stream_factory.cc
@@ -607,9 +607,9 @@ int QuicStreamRequest::Request(const HostPortPair& destination,
return rv;
}
-void QuicStreamRequest::SetSession(QuicChromiumClientSession* session) {
- DCHECK(session);
- session_ = session->GetWeakPtr();
+void QuicStreamRequest::SetSession(
+ const QuicChromiumClientSession::Handle& session) {
+ session_.reset(new QuicChromiumClientSession::Handle(session));
}
void QuicStreamRequest::OnRequestComplete(int rv) {
@@ -624,16 +624,18 @@ base::TimeDelta QuicStreamRequest::GetTimeDelayForWaitingJob() const {
}
std::unique_ptr<HttpStream> QuicStreamRequest::CreateStream() {
- if (!session_)
+ if (!session_ || !session_->IsConnected())
return nullptr;
- return base::MakeUnique<QuicHttpStream>(session_, http_server_properties_);
+
+ return base::MakeUnique<QuicHttpStream>(*session_, http_server_properties_);
}
std::unique_ptr<BidirectionalStreamImpl>
QuicStreamRequest::CreateBidirectionalStreamImpl() {
- if (!session_)
+ if (!session_ || !session_->IsConnected())
return nullptr;
- return base::MakeUnique<BidirectionalStreamQuicImpl>(session_);
+
+ return base::MakeUnique<BidirectionalStreamQuicImpl>(*session_);
}
QuicStreamFactory::QuicStreamFactory(
@@ -874,7 +876,7 @@ int QuicStreamFactory::Create(const QuicServerId& server_id,
static_cast<QuicChromiumClientSession*>(promised->session());
DCHECK(session);
if (session->server_id().privacy_mode() == server_id.privacy_mode()) {
- request->SetSession(session);
+ request->SetSession(session->GetHandle());
++num_push_streams_created_;
return OK;
}
@@ -890,7 +892,7 @@ int QuicStreamFactory::Create(const QuicServerId& server_id,
SessionMap::iterator it = active_sessions_.find(server_id);
if (it != active_sessions_.end()) {
QuicChromiumClientSession* session = it->second;
- request->SetSession(session);
+ request->SetSession(session->GetHandle());
return OK;
}
}
@@ -915,7 +917,7 @@ int QuicStreamFactory::Create(const QuicServerId& server_id,
QuicChromiumClientSession* session = key_value.second;
if (destination.Equals(all_sessions_[session].destination()) &&
session->CanPool(server_id.host(), server_id.privacy_mode())) {
- request->SetSession(session);
+ request->SetSession(session->GetHandle());
return OK;
}
}
@@ -949,7 +951,7 @@ int QuicStreamFactory::Create(const QuicServerId& server_id,
if (it == active_sessions_.end())
return ERR_QUIC_PROTOCOL_ERROR;
QuicChromiumClientSession* session = it->second;
- request->SetSession(session);
+ request->SetSession(session->GetHandle());
}
return rv;
}
@@ -1014,7 +1016,7 @@ void QuicStreamFactory::OnJobComplete(Job* job, int rv) {
for (QuicStreamRequest* request : requests_iter->second) {
DCHECK(request->server_id() == server_id);
// Do not notify |request| yet.
- request->SetSession(session);
+ request->SetSession(session->GetHandle());
}
}
}

Powered by Google App Engine
This is Rietveld 408576698