Separate sub/pub data channels (#60)

This commit is contained in:
davidliu
2021-12-17 20:02:02 -08:00
committed by GitHub
parent f458f052a5
commit 435def8f2c
+11 -6
View File
@@ -45,8 +45,12 @@ class RTCEngine extends Disposable with EventsEmittable<EngineEvent> {
// data channels for packets // data channels for packets
rtc.RTCDataChannel? _reliableDC; rtc.RTCDataChannel? _reliableDC;
rtc.RTCDataChannel? _lossyDC; rtc.RTCDataChannel? _lossyDC;
rtc.RTCDataChannel? _reliableDCSub;
rtc.RTCDataChannel? _lossyDCSub;
rtc.RTCDataChannelState get reliableDataChannelState => rtc.RTCDataChannelState get reliableDataChannelState =>
_reliableDC?.state ?? rtc.RTCDataChannelState.RTCDataChannelClosed; _reliableDC?.state ?? rtc.RTCDataChannelState.RTCDataChannelClosed;
rtc.RTCDataChannelState get lossyDataChannelState => rtc.RTCDataChannelState get lossyDataChannelState =>
_lossyDC?.state ?? rtc.RTCDataChannelState.RTCDataChannelClosed; _lossyDC?.state ?? rtc.RTCDataChannelState.RTCDataChannelClosed;
bool _iceConnected = false; bool _iceConnected = false;
@@ -65,6 +69,7 @@ class RTCEngine extends Disposable with EventsEmittable<EngineEvent> {
String? token; String? token;
bool _subscriberPrimary = false; bool _subscriberPrimary = false;
// server-provided ice servers // server-provided ice servers
List<lk_rtc.ICEServer> _serverProvidedIceServers = []; List<lk_rtc.ICEServer> _serverProvidedIceServers = [];
@@ -439,16 +444,16 @@ class RTCEngine extends Disposable with EventsEmittable<EngineEvent> {
switch (dc.label) { switch (dc.label) {
case _reliableDCLabel: case _reliableDCLabel:
logger.fine('Server opened DC label: ${dc.label}'); logger.fine('Server opened DC label: ${dc.label}');
_reliableDC = dc; _reliableDCSub = dc;
_reliableDC?.onMessage = _onDCMessage; _reliableDCSub?.onMessage = _onDCMessage;
_reliableDC?.stateChangeStream _reliableDCSub?.stateChangeStream
.listen((state) => _onDCStateUpdated(Reliability.reliable, state)); .listen((state) => _onDCStateUpdated(Reliability.reliable, state));
break; break;
case _lossyDCLabel: case _lossyDCLabel:
logger.fine('Server opened DC label: ${dc.label}'); logger.fine('Server opened DC label: ${dc.label}');
_lossyDC = dc; _lossyDCSub = dc;
_lossyDC?.onMessage = _onDCMessage; _lossyDCSub?.onMessage = _onDCMessage;
_lossyDC?.stateChangeStream _lossyDCSub?.stateChangeStream
.listen((event) => _onDCStateUpdated(Reliability.lossy, event)); .listen((event) => _onDCStateUpdated(Reliability.lossy, event));
break; break;
default: default: