From 435def8f2c78aefd3b0eae06c6922857e8ee48d2 Mon Sep 17 00:00:00 2001 From: davidliu Date: Fri, 17 Dec 2021 20:02:02 -0800 Subject: [PATCH] Separate sub/pub data channels (#60) --- lib/src/rtc_engine.dart | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/src/rtc_engine.dart b/lib/src/rtc_engine.dart index b9ecd0d..72312b0 100644 --- a/lib/src/rtc_engine.dart +++ b/lib/src/rtc_engine.dart @@ -45,8 +45,12 @@ class RTCEngine extends Disposable with EventsEmittable { // data channels for packets rtc.RTCDataChannel? _reliableDC; rtc.RTCDataChannel? _lossyDC; + rtc.RTCDataChannel? _reliableDCSub; + rtc.RTCDataChannel? _lossyDCSub; + rtc.RTCDataChannelState get reliableDataChannelState => _reliableDC?.state ?? rtc.RTCDataChannelState.RTCDataChannelClosed; + rtc.RTCDataChannelState get lossyDataChannelState => _lossyDC?.state ?? rtc.RTCDataChannelState.RTCDataChannelClosed; bool _iceConnected = false; @@ -65,6 +69,7 @@ class RTCEngine extends Disposable with EventsEmittable { String? token; bool _subscriberPrimary = false; + // server-provided ice servers List _serverProvidedIceServers = []; @@ -439,16 +444,16 @@ class RTCEngine extends Disposable with EventsEmittable { switch (dc.label) { case _reliableDCLabel: logger.fine('Server opened DC label: ${dc.label}'); - _reliableDC = dc; - _reliableDC?.onMessage = _onDCMessage; - _reliableDC?.stateChangeStream + _reliableDCSub = dc; + _reliableDCSub?.onMessage = _onDCMessage; + _reliableDCSub?.stateChangeStream .listen((state) => _onDCStateUpdated(Reliability.reliable, state)); break; case _lossyDCLabel: logger.fine('Server opened DC label: ${dc.label}'); - _lossyDC = dc; - _lossyDC?.onMessage = _onDCMessage; - _lossyDC?.stateChangeStream + _lossyDCSub = dc; + _lossyDCSub?.onMessage = _onDCMessage; + _lossyDCSub?.stateChangeStream .listen((event) => _onDCStateUpdated(Reliability.lossy, event)); break; default: