EngineConnectionStateUpdatedEvent instead of individual events

This commit is contained in:
Hiroshi Horie
2022-03-04 20:10:28 +09:00
parent 21591e46e3
commit 99460dd436
5 changed files with 108 additions and 109 deletions
+32 -30
View File
@@ -84,7 +84,8 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
events.listen((event) => logger.fine('[EngineEvent] $objectId ${event}'));
}
_setUpListeners();
_setUpEngineListeners();
_setUpSignalListeners();
onDispose(() async {
await events.dispose();
@@ -531,33 +532,6 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
await reconnect();
}
void _updateConnectionState(ConnectionState newValue) {
if (_connectionState == newValue) return;
logger.fine('Engine ConnectionState '
'${_connectionState.name} -> ${newValue.name}');
bool didReconnect = _connectionState == ConnectionState.reconnecting &&
newValue == ConnectionState.connected;
// update internal value
_connectionState = newValue;
// emit event
if (_connectionState == ConnectionState.connected) {
if (didReconnect) {
events.emit(const EngineReconnectedEvent());
// send queued requests if engine re-connected
signalClient.sendQueuedRequests();
} else {
events.emit(const EngineConnectedEvent());
}
} else if (_connectionState == ConnectionState.reconnecting) {
events.emit(const EngineReconnectingEvent());
} else if (_connectionState == ConnectionState.disconnected) {
signalClient.cleanUp();
events.emit(const EngineDisconnectedEvent());
}
}
@internal
void sendSyncState({
required lk_rtc.UpdateSubscription subscription,
@@ -571,7 +545,15 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
);
}
void _setUpListeners() => _signalListener
void _setUpEngineListeners() =>
events.on<EngineConnectionStateUpdatedEvent>((event) async {
if (event.didReconnect) {
// send queued requests if engine re-connected
signalClient.sendQueuedRequests();
}
});
void _setUpSignalListeners() => _signalListener
..on<SignalJoinResponseEvent>((event) async {
// create peer connections
_subscriberPrimary = event.response.subscriberPrimary;
@@ -666,7 +648,6 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
return;
}
await close();
events.emit(const EngineDisconnectedEvent());
})
..on<SignalMuteTrackEvent>(
(event) => events.emit(EngineRemoteMuteChangedEvent(
@@ -675,6 +656,27 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
)));
}
extension EngineInternalMethods on Engine {
void _updateConnectionState(ConnectionState newValue) {
if (_connectionState == newValue) return;
logger.fine('Engine ConnectionState '
'${_connectionState.name} -> ${newValue.name}');
bool didReconnect = _connectionState == ConnectionState.reconnecting &&
newValue == ConnectionState.connected;
// update internal value
final oldState = _connectionState;
_connectionState = newValue;
events.emit(EngineConnectionStateUpdatedEvent(
newState: _connectionState,
oldState: oldState,
didReconnect: didReconnect,
));
}
}
extension EnginePrivateMethods on Engine {
// publisher data channel for the reliability
rtc.RTCDataChannel? _publisherDataChannel(Reliability reliability) =>