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

Side by Side Diff: webrtc/p2p/quic/quictransportchannel.cc

Issue 1844803002: Modify PeerConnection for end-to-end QuicDataChannel usage (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Remove webrtcsdp.cc from this CL Created 4 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
OLDNEW
1 /* 1 /*
2 * Copyright 2016 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2016 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 : net::Perspective::IS_SERVER; 436 : net::Perspective::IS_SERVER;
437 bool owns_writer = false; 437 bool owns_writer = false;
438 rtc::scoped_ptr<net::QuicConnection> connection(new net::QuicConnection( 438 rtc::scoped_ptr<net::QuicConnection> connection(new net::QuicConnection(
439 kConnectionId, kConnectionIpEndpoint, &helper_, this, owns_writer, 439 kConnectionId, kConnectionIpEndpoint, &helper_, this, owns_writer,
440 perspective, net::QuicSupportedVersions())); 440 perspective, net::QuicSupportedVersions()));
441 quic_.reset(new QuicSession(std::move(connection), config_)); 441 quic_.reset(new QuicSession(std::move(connection), config_));
442 quic_->SignalHandshakeComplete.connect( 442 quic_->SignalHandshakeComplete.connect(
443 this, &QuicTransportChannel::OnHandshakeComplete); 443 this, &QuicTransportChannel::OnHandshakeComplete);
444 quic_->SignalConnectionClosed.connect( 444 quic_->SignalConnectionClosed.connect(
445 this, &QuicTransportChannel::OnConnectionClosed); 445 this, &QuicTransportChannel::OnConnectionClosed);
446 quic_->SignalIncomingStream.connect(this,
447 &QuicTransportChannel::OnIncomingStream);
446 return true; 448 return true;
447 } 449 }
448 450
449 bool QuicTransportChannel::StartQuicHandshake() { 451 bool QuicTransportChannel::StartQuicHandshake() {
450 if (*ssl_role_ == rtc::SSL_CLIENT) { 452 if (*ssl_role_ == rtc::SSL_CLIENT) {
451 // Unique identifier for remote peer. 453 // Unique identifier for remote peer.
452 net::QuicServerId server_id(remote_fingerprint_->value, kQuicServerPort); 454 net::QuicServerId server_id(remote_fingerprint_->value, kQuicServerPort);
453 // Perform authentication of remote peer; owned by QuicCryptoClientConfig. 455 // Perform authentication of remote peer; owned by QuicCryptoClientConfig.
454 // TODO(mikescarlett): Actually verify proof. 456 // TODO(mikescarlett): Actually verify proof.
455 net::ProofVerifier* proof_verifier = new InsecureProofVerifier(); 457 net::ProofVerifier* proof_verifier = new InsecureProofVerifier();
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 518
517 // TODO(mikescarlett): Implement check for whether |channel_| is currently 519 // TODO(mikescarlett): Implement check for whether |channel_| is currently
518 // write blocked so that |quic_| does not try to write packet. This is 520 // write blocked so that |quic_| does not try to write packet. This is
519 // necessary because |channel_| can be writable yet write blocked and 521 // necessary because |channel_| can be writable yet write blocked and
520 // channel_->GetError() is not flushed when there is no error. 522 // channel_->GetError() is not flushed when there is no error.
521 bool QuicTransportChannel::IsWriteBlocked() const { 523 bool QuicTransportChannel::IsWriteBlocked() const {
522 return !channel_->writable(); 524 return !channel_->writable();
523 } 525 }
524 526
525 void QuicTransportChannel::OnHandshakeComplete() { 527 void QuicTransportChannel::OnHandshakeComplete() {
528 LOG_J(LS_INFO, this)
529 << "QUIC handshake complete, setting QuicTransportChanel to writable";
526 set_quic_state(QUIC_TRANSPORT_CONNECTED); 530 set_quic_state(QUIC_TRANSPORT_CONNECTED);
527 set_writable(true); 531 set_writable(true);
528 // OnReceivingState might have been called before the QUIC channel was 532 // OnReceivingState might have been called before the QUIC channel was
529 // connected, in which case the QUIC channel is now receiving. 533 // connected, in which case the QUIC channel is now receiving.
530 if (channel_->receiving()) { 534 if (channel_->receiving()) {
531 set_receiving(true); 535 set_receiving(true);
532 } 536 }
533 } 537 }
534 538
535 void QuicTransportChannel::OnConnectionClosed(net::QuicErrorCode error, 539 void QuicTransportChannel::OnConnectionClosed(net::QuicErrorCode error,
536 bool from_peer) { 540 bool from_peer) {
537 LOG_J(LS_INFO, this) << "Connection closed by " 541 LOG_J(LS_INFO, this) << "Connection closed by "
538 << (from_peer ? "other" : "this") << " peer " 542 << (from_peer ? "other" : "this") << " peer "
539 << "with QUIC error " << error; 543 << "with QUIC error " << error;
540 // TODO(mikescarlett): Allow the QUIC session to be reset when the connection 544 // TODO(mikescarlett): Allow the QUIC session to be reset when the connection
541 // does not close due to failure. 545 // does not close due to failure.
542 set_quic_state(QUIC_TRANSPORT_CLOSED); 546 set_quic_state(QUIC_TRANSPORT_CLOSED);
543 set_writable(false); 547 set_writable(false);
548 SignalClosed();
544 } 549 }
545 550
546 void QuicTransportChannel::OnProofValid( 551 void QuicTransportChannel::OnProofValid(
547 const net::QuicCryptoClientConfig::CachedState& cached) { 552 const net::QuicCryptoClientConfig::CachedState& cached) {
548 LOG_J(LS_INFO, this) << "Cached proof marked valid"; 553 LOG_J(LS_INFO, this) << "Cached proof marked valid";
549 } 554 }
550 555
551 void QuicTransportChannel::OnProofVerifyDetailsAvailable( 556 void QuicTransportChannel::OnProofVerifyDetailsAvailable(
552 const net::ProofVerifyDetails& verify_details) { 557 const net::ProofVerifyDetails& verify_details) {
553 LOG_J(LS_INFO, this) << "Proof verify details available from" 558 LOG_J(LS_INFO, this) << "Proof verify details available from"
554 << " QuicCryptoClientStream"; 559 << " QuicCryptoClientStream";
555 } 560 }
556 561
557 bool QuicTransportChannel::HasDataToWrite() const { 562 bool QuicTransportChannel::HasDataToWrite() const {
558 return quic_ && quic_->HasDataToWrite(); 563 return quic_ && quic_->HasDataToWrite();
559 } 564 }
560 565
561 void QuicTransportChannel::OnCanWrite() { 566 void QuicTransportChannel::OnCanWrite() {
562 RTC_DCHECK(quic_ != nullptr); 567 RTC_DCHECK(quic_ != nullptr);
563 quic_->connection()->OnCanWrite(); 568 quic_->connection()->OnCanWrite();
564 } 569 }
565 570
566 void QuicTransportChannel::set_quic_state(QuicTransportState state) { 571 void QuicTransportChannel::set_quic_state(QuicTransportState state) {
567 LOG_J(LS_VERBOSE, this) << "set_quic_state from:" << quic_state_ << " to " 572 LOG_J(LS_VERBOSE, this) << "set_quic_state from:" << quic_state_ << " to "
568 << state; 573 << state;
569 quic_state_ = state; 574 quic_state_ = state;
570 } 575 }
571 576
577 ReliableQuicStream* QuicTransportChannel::CreateQuicStream() {
578 if (quic_) {
579 net::SpdyPriority priority = 0; // Priority of the QUIC stream (not used)
580 return quic_->CreateOutgoingDynamicStream(priority);
581 }
582 return nullptr;
583 }
584
585 void QuicTransportChannel::OnIncomingStream(ReliableQuicStream* stream) {
586 SignalIncomingStream(stream);
587 }
588
572 } // namespace cricket 589 } // namespace cricket
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698