Trigger reconnect on Publisher PC disconnect also (#105)
* impl * clean up _hasPublished
This commit is contained in:
@@ -139,6 +139,7 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
|
|||||||
|
|
||||||
await publisher?.dispose();
|
await publisher?.dispose();
|
||||||
publisher = null;
|
publisher = null;
|
||||||
|
_hasPublished = false;
|
||||||
|
|
||||||
await subscriber?.dispose();
|
await subscriber?.dispose();
|
||||||
subscriber = null;
|
subscriber = null;
|
||||||
@@ -367,11 +368,11 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
|
|||||||
));
|
));
|
||||||
|
|
||||||
events.on<EnginePeerStateUpdatedEvent>((event) {
|
events.on<EnginePeerStateUpdatedEvent>((event) {
|
||||||
// only listen to primary ice events
|
//
|
||||||
if (!event.isPrimary) return;
|
final isPrimaryOrPublisher = event.isPrimary ||
|
||||||
|
(_hasPublished && event is EnginePublisherPeerStateUpdatedEvent);
|
||||||
|
|
||||||
if (event.state ==
|
if (isPrimaryOrPublisher && event.state.isDisconnectedOrFailed()) {
|
||||||
rtc.RTCPeerConnectionState.RTCPeerConnectionStateFailed) {
|
|
||||||
// trigger reconnect sequence
|
// trigger reconnect sequence
|
||||||
_onDisconnected(DisconnectReason.peerConnection);
|
_onDisconnected(DisconnectReason.peerConnection);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,6 +77,11 @@ extension RTCIceCandidateExt on rtc.RTCIceCandidate {
|
|||||||
extension RTCPeerConnectionStateExt on rtc.RTCPeerConnectionState {
|
extension RTCPeerConnectionStateExt on rtc.RTCPeerConnectionState {
|
||||||
bool isConnected() =>
|
bool isConnected() =>
|
||||||
this == rtc.RTCPeerConnectionState.RTCPeerConnectionStateConnected;
|
this == rtc.RTCPeerConnectionState.RTCPeerConnectionStateConnected;
|
||||||
|
|
||||||
|
bool isDisconnectedOrFailed() => [
|
||||||
|
rtc.RTCPeerConnectionState.RTCPeerConnectionStateDisconnected,
|
||||||
|
rtc.RTCPeerConnectionState.RTCPeerConnectionStateFailed,
|
||||||
|
].contains(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
extension RTCIceTransportPolicyExt on RTCIceTransportPolicy {
|
extension RTCIceTransportPolicyExt on RTCIceTransportPolicy {
|
||||||
|
|||||||
Reference in New Issue
Block a user