Modify PeerConnection for end-to-end QuicDataChannel usage
To allow end-to-end QuicDataChannel usage with a
PeerConnection, RTCConfiguration has been modified to
include a boolean for whether to do QUIC, since negotiation of
QUIC is not implemented. If one peer does QUIC, then it will be
assumed that the other peer must do QUIC or the connection
will fail.
PeerConnection has been modified to create data channels of type
QuicDataChannel when the peer wants to do QUIC.
WebRtcSession has been modified to use a QuicTransportChannel
instead of a DtlsTransportChannelWrapper/DataChannel
when QUIC should be used.
Modification of previous in-flight CL: https://codereview.chromium.org/1844803002/
Review-Url: https://codereview.webrtc.org/2089553002
Cr-Commit-Position: refs/heads/master@{#13470}
diff --git a/webrtc/api/quicdatachannel.h b/webrtc/api/quicdatachannel.h
index a6b987b..18a10ac 100644
--- a/webrtc/api/quicdatachannel.h
+++ b/webrtc/api/quicdatachannel.h
@@ -88,6 +88,7 @@
QuicDataChannel(rtc::Thread* signaling_thread,
rtc::Thread* worker_thread,
+ rtc::Thread* network_thread,
const std::string& label,
const DataChannelInit& config);
~QuicDataChannel() override;
@@ -155,11 +156,13 @@
void OnReadyToSend(cricket::TransportChannel* channel);
void OnConnectionClosed();
- // Worker thread methods.
+ // Network thread methods.
// Sends the data buffer to the remote peer using an outgoing QUIC stream.
// Returns true if the data buffer can be successfully sent, or if it is
// queued to be sent later.
- bool Send_w(const DataBuffer& buffer);
+ bool Send_n(const DataBuffer& buffer);
+
+ // Worker thread methods.
// Connects the |quic_transport_channel_| signals to this QuicDataChannel,
// then returns the new QuicDataChannel state.
DataState SetTransportChannel_w();
@@ -185,8 +188,10 @@
cricket::QuicTransportChannel* quic_transport_channel_ = nullptr;
// Signaling thread for DataChannelInterface methods.
rtc::Thread* const signaling_thread_;
- // Worker thread for sending data and |quic_transport_channel_| callbacks.
+ // Worker thread for |quic_transport_channel_| callbacks.
rtc::Thread* const worker_thread_;
+ // Network thread for sending data and |quic_transport_channel_| callbacks.
+ rtc::Thread* const network_thread_;
rtc::AsyncInvoker invoker_;
// Map of QUIC stream ID => ReliableQuicStream* for write blocked QUIC
// streams.