Connection quality (#27)

* update protos

* signal event

* implemented

* format

* implement example

* protocol 5

* icon size
This commit is contained in:
Hiroshi Horie
2021-11-06 17:36:47 +09:00
committed by GitHub
parent 721b04753a
commit d31daa5d8e
17 changed files with 388 additions and 11 deletions
+19
View File
@@ -174,6 +174,8 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
(event) => _onEngineActiveSpeakersUpdateEvent(event.speakers))
..on<SignalSpeakersChangedEvent>(
(event) => _onSignalSpeakersChangedEvent(event.speakers))
..on<SignalConnectionQualityUpdateEvent>(
(event) => _onSignalConnectionQualityUpdateEvent(event.updates))
..on<EngineDataPacketReceivedEvent>(_onDataMessageEvent)
..on<EngineRemoteMuteChangedEvent>((event) async {
final track = localParticipant.trackPublications[event.sid];
@@ -366,6 +368,23 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
events.emit(ActiveSpeakersChangedEvent(speakers: activeSpeakers));
}
void _onSignalConnectionQualityUpdateEvent(
List<lk_rtc.ConnectionQualityInfo> updates) {
for (final entry in updates) {
Participant? participant;
if (entry.participantSid == localParticipant.sid) {
participant = localParticipant;
} else {
participant = _participants[entry.participantSid];
}
if (participant != null) {
// update the connection quality if the participant is found
participant.updateConnectionQuality(entry.quality.toLKType());
}
}
}
void _onDataMessageEvent(EngineDataPacketReceivedEvent dataPacketEvent) {
// participant may be null if data is sent from Server-API
final senderSid = dataPacketEvent.packet.participantSid;