organize the cleanUp chain
This commit is contained in:
@@ -88,9 +88,9 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
|
|||||||
_setUpSignalListeners();
|
_setUpSignalListeners();
|
||||||
|
|
||||||
onDispose(() async {
|
onDispose(() async {
|
||||||
|
await cleanUp();
|
||||||
await events.dispose();
|
await events.dispose();
|
||||||
await delays.dispose();
|
await delays.dispose();
|
||||||
await close();
|
|
||||||
await _signalListener.dispose();
|
await _signalListener.dispose();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -137,27 +137,22 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Close connection between the server.
|
// resets internal state to a re-usable state
|
||||||
Future<void> close() async {
|
Future<void> cleanUp() async {
|
||||||
logger.fine('${runtimeType}.close()');
|
logger.fine('[${objectId}] cleanUp()');
|
||||||
if (_connectionState == ConnectionState.disconnected) {
|
|
||||||
logger.warning('${runtimeType}.close() already disconnected');
|
|
||||||
}
|
|
||||||
// _statsTimer.cancel();
|
|
||||||
// cancel all ongoing delays
|
// cancel all ongoing delays
|
||||||
await delays.cancelAll();
|
await delays.cancelAll();
|
||||||
|
|
||||||
// PCTransport is responsible for disposing RTCPeerConnection
|
|
||||||
await publisher?.dispose();
|
await publisher?.dispose();
|
||||||
publisher = null;
|
publisher = null;
|
||||||
|
|
||||||
await subscriber?.dispose();
|
await subscriber?.dispose();
|
||||||
subscriber = null;
|
subscriber = null;
|
||||||
|
|
||||||
await signalClient.disconnect();
|
await signalClient.cleanUp();
|
||||||
|
|
||||||
_updateConnectionState(ConnectionState.disconnected);
|
_updateConnectionState(ConnectionState.disconnected);
|
||||||
// notifyListeners();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@internal
|
@internal
|
||||||
@@ -647,7 +642,7 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
|
|||||||
'[Signal] Received Leave while engine is reconnecting, ignoring...');
|
'[Signal] Received Leave while engine is reconnecting, ignoring...');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await close();
|
await cleanUp();
|
||||||
})
|
})
|
||||||
..on<SignalMuteTrackEvent>(
|
..on<SignalMuteTrackEvent>(
|
||||||
(event) => events.emit(EngineRemoteMuteChangedEvent(
|
(event) => events.emit(EngineRemoteMuteChangedEvent(
|
||||||
|
|||||||
+15
-9
@@ -91,6 +91,8 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
|
|||||||
});
|
});
|
||||||
|
|
||||||
onDispose(() async {
|
onDispose(() async {
|
||||||
|
// clean up routine
|
||||||
|
await _cleanUp();
|
||||||
// dispose events
|
// dispose events
|
||||||
await events.dispose();
|
await events.dispose();
|
||||||
// dispose local participant
|
// dispose local participant
|
||||||
@@ -489,24 +491,28 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
|
|||||||
extension RoomPrivateMethods on Room {
|
extension RoomPrivateMethods on Room {
|
||||||
// resets internal state to a re-usable state
|
// resets internal state to a re-usable state
|
||||||
Future<void> _cleanUp() async {
|
Future<void> _cleanUp() async {
|
||||||
logger.fine('[$objectId] _handleClose()');
|
logger.fine('[${objectId}] cleanUp()');
|
||||||
if (connectionState == ConnectionState.disconnected) {
|
|
||||||
logger.warning('[$objectId]: close() already disconnected');
|
|
||||||
}
|
|
||||||
|
|
||||||
// clean up RemoteParticipants
|
// clean up RemoteParticipants
|
||||||
for (final _ in _participants.values.toList()) {
|
for (final participant in _participants.values) {
|
||||||
// RemoteParticipant is responsible for disposing resources
|
// RemoteParticipant is responsible for disposing resources
|
||||||
await _.dispose();
|
await participant.dispose();
|
||||||
}
|
}
|
||||||
_participants.clear();
|
_participants.clear();
|
||||||
|
|
||||||
// clean up LocalParticipant
|
// clean up LocalParticipant
|
||||||
await localParticipant?.unpublishAllTracks();
|
await localParticipant?.unpublishAllTracks();
|
||||||
|
|
||||||
// clean up engine
|
|
||||||
await engine.close();
|
|
||||||
|
|
||||||
_activeSpeakers.clear();
|
_activeSpeakers.clear();
|
||||||
|
|
||||||
|
// clean up engine
|
||||||
|
await engine.cleanUp();
|
||||||
|
|
||||||
|
// reset params
|
||||||
|
_name = null;
|
||||||
|
_sid = null;
|
||||||
|
_metadata = null;
|
||||||
|
_serverVersion = null;
|
||||||
|
_serverRegion = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,8 +36,8 @@ class SignalClient extends Disposable with EventsEmittable<SignalEvent> {
|
|||||||
});
|
});
|
||||||
|
|
||||||
onDispose(() async {
|
onDispose(() async {
|
||||||
await events.dispose();
|
|
||||||
await cleanUp();
|
await cleanUp();
|
||||||
|
await events.dispose();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,19 +106,16 @@ class SignalClient extends Disposable with EventsEmittable<SignalEvent> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// resets internal state to a re-usable state
|
||||||
@internal
|
@internal
|
||||||
Future<void> cleanUp() async {
|
Future<void> cleanUp() async {
|
||||||
|
logger.fine('[${objectId}] cleanUp()');
|
||||||
|
|
||||||
await _ws?.dispose();
|
await _ws?.dispose();
|
||||||
_ws = null;
|
_ws = null;
|
||||||
_queue.clear();
|
_queue.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@internal
|
|
||||||
Future<void> disconnect() async {
|
|
||||||
logger.fine('SignalClient disconnect');
|
|
||||||
await cleanUp();
|
|
||||||
}
|
|
||||||
|
|
||||||
void _sendRequest(
|
void _sendRequest(
|
||||||
lk_rtc.SignalRequest req, {
|
lk_rtc.SignalRequest req, {
|
||||||
bool enqueueIfReconnecting = true,
|
bool enqueueIfReconnecting = true,
|
||||||
|
|||||||
Reference in New Issue
Block a user