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

Side by Side Diff: net/quic/quic_stream_factory.cc

Issue 13976007: Land Recent QUIC Changes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Updated copyright notice Created 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_stream_factory.h ('k') | net/quic/quic_utils.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/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/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/message_loop_proxy.h" 10 #include "base/message_loop_proxy.h"
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 } 191 }
192 192
193 scoped_ptr<QuicHttpStream> QuicStreamRequest::ReleaseStream() { 193 scoped_ptr<QuicHttpStream> QuicStreamRequest::ReleaseStream() {
194 DCHECK(stream_); 194 DCHECK(stream_);
195 return stream_.Pass(); 195 return stream_.Pass();
196 } 196 }
197 197
198 int QuicStreamFactory::Job::DoConnect() { 198 int QuicStreamFactory::Job::DoConnect() {
199 io_state_ = STATE_CONNECT_COMPLETE; 199 io_state_ = STATE_CONNECT_COMPLETE;
200 200
201 session_ = factory_->CreateSession(host_port_proxy_pair_.first.host(), 201 session_ = factory_->CreateSession(host_port_proxy_pair_, address_list_,
202 address_list_, net_log_); 202 net_log_);
203 session_->StartReading(); 203 session_->StartReading();
204 int rv = session_->CryptoConnect( 204 int rv = session_->CryptoConnect(
205 base::Bind(&QuicStreamFactory::Job::OnIOComplete, 205 base::Bind(&QuicStreamFactory::Job::OnIOComplete,
206 base::Unretained(this))); 206 base::Unretained(this)));
207 return rv; 207 return rv;
208 } 208 }
209 209
210 int QuicStreamFactory::Job::DoConnectComplete(int rv) { 210 int QuicStreamFactory::Job::DoConnectComplete(int rv) {
211 if (rv != OK) 211 if (rv != OK)
212 return rv; 212 return rv;
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 } 353 }
354 return list; 354 return list;
355 } 355 }
356 356
357 bool QuicStreamFactory::HasActiveSession( 357 bool QuicStreamFactory::HasActiveSession(
358 const HostPortProxyPair& host_port_proxy_pair) { 358 const HostPortProxyPair& host_port_proxy_pair) {
359 return ContainsKey(active_sessions_, host_port_proxy_pair); 359 return ContainsKey(active_sessions_, host_port_proxy_pair);
360 } 360 }
361 361
362 QuicClientSession* QuicStreamFactory::CreateSession( 362 QuicClientSession* QuicStreamFactory::CreateSession(
363 const std::string& host, 363 const HostPortProxyPair& host_port_proxy_pair,
364 const AddressList& address_list, 364 const AddressList& address_list,
365 const BoundNetLog& net_log) { 365 const BoundNetLog& net_log) {
366 QuicGuid guid = random_generator_->RandUint64(); 366 QuicGuid guid = random_generator_->RandUint64();
367 IPEndPoint addr = *address_list.begin(); 367 IPEndPoint addr = *address_list.begin();
368 DatagramClientSocket* socket = 368 DatagramClientSocket* socket =
369 client_socket_factory_->CreateDatagramClientSocket( 369 client_socket_factory_->CreateDatagramClientSocket(
370 DatagramSocket::DEFAULT_BIND, base::Bind(&base::RandInt), 370 DatagramSocket::DEFAULT_BIND, base::Bind(&base::RandInt),
371 net_log.net_log(), net_log.source()); 371 net_log.net_log(), net_log.source());
372 socket->Connect(addr); 372 socket->Connect(addr);
373 socket->GetLocalAddress(&addr); 373 socket->GetLocalAddress(&addr);
374 374
375 QuicConnectionHelper* helper = new QuicConnectionHelper( 375 QuicConnectionHelper* helper = new QuicConnectionHelper(
376 MessageLoop::current()->message_loop_proxy(), 376 MessageLoop::current()->message_loop_proxy(),
377 clock_.get(), random_generator_, socket); 377 clock_.get(), random_generator_, socket);
378 378
379 QuicConnection* connection = new QuicConnection(guid, addr, helper, false); 379 QuicConnection* connection = new QuicConnection(guid, addr, helper, false);
380
381 QuicCryptoClientConfig* crypto_config =
382 GetOrCreateCryptoConfig(host_port_proxy_pair);
383 DCHECK(crypto_config);
384
380 QuicClientSession* session = 385 QuicClientSession* session =
381 new QuicClientSession(connection, socket, this, 386 new QuicClientSession(connection, socket, this,
382 quic_crypto_client_stream_factory_, host, 387 quic_crypto_client_stream_factory_,
383 net_log.net_log()); 388 host_port_proxy_pair.first.host(),
389 crypto_config, net_log.net_log());
384 all_sessions_.insert(session); // owning pointer 390 all_sessions_.insert(session); // owning pointer
385 return session; 391 return session;
386 } 392 }
387 393
388 bool QuicStreamFactory::HasActiveJob( 394 bool QuicStreamFactory::HasActiveJob(
389 const HostPortProxyPair& host_port_proxy_pair) { 395 const HostPortProxyPair& host_port_proxy_pair) {
390 return ContainsKey(active_jobs_, host_port_proxy_pair); 396 return ContainsKey(active_jobs_, host_port_proxy_pair);
391 } 397 }
392 398
393 void QuicStreamFactory::ActivateSession( 399 void QuicStreamFactory::ActivateSession(
394 const HostPortProxyPair& host_port_proxy_pair, 400 const HostPortProxyPair& host_port_proxy_pair,
395 QuicClientSession* session) { 401 QuicClientSession* session) {
396 DCHECK(!HasActiveSession(host_port_proxy_pair)); 402 DCHECK(!HasActiveSession(host_port_proxy_pair));
397 active_sessions_[host_port_proxy_pair] = session; 403 active_sessions_[host_port_proxy_pair] = session;
398 session_aliases_[session].insert(host_port_proxy_pair); 404 session_aliases_[session].insert(host_port_proxy_pair);
399 } 405 }
400 406
407 QuicCryptoClientConfig* QuicStreamFactory::GetOrCreateCryptoConfig(
408 const HostPortProxyPair& host_port_proxy_pair) {
409 QuicCryptoClientConfig* crypto_config;
410 if (ContainsKey(all_crypto_configs_, host_port_proxy_pair)) {
411 crypto_config = all_crypto_configs_[host_port_proxy_pair];
412 DCHECK(crypto_config);
413 } else {
414 crypto_config = new QuicCryptoClientConfig();
415 crypto_config->SetDefaults();
416 all_crypto_configs_[host_port_proxy_pair] = crypto_config;
417 }
418 return crypto_config;
419 }
401 420
402 } // namespace net 421 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_stream_factory.h ('k') | net/quic/quic_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698