diff --git a/lib/src/events.dart b/lib/src/events.dart index f31ea68..b52781b 100644 --- a/lib/src/events.dart +++ b/lib/src/events.dart @@ -1,19 +1,17 @@ import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc; -import 'package:meta/meta.dart'; import 'participant/local_participant.dart'; import 'participant/participant.dart'; import 'participant/remote_participant.dart'; import 'proto/livekit_models.pb.dart' as lk_models; -import 'proto/livekit_rtc.pb.dart' as lk_rtc; import 'publication/local_track_publication.dart'; import 'publication/remote_track_publication.dart'; import 'publication/track_publication.dart'; -import 'track/track.dart'; -import 'types.dart'; import 'room.dart'; import 'rtc_engine.dart'; import 'signal_client.dart'; +import 'track/track.dart'; +import 'types.dart'; /// Base type for all LiveKit events. abstract class LiveKitEvent {} @@ -283,113 +281,3 @@ class EngineRemoteMuteChangedEvent with EngineEvent { required this.muted, }); } - -// -// Signal events -// - -@internal -class SignalConnectedEvent with SignalEvent { - final lk_rtc.JoinResponse response; - const SignalConnectedEvent({ - required this.response, - }); -} - -@internal -class SignalCloseEvent with SignalEvent { - final CloseReason? reason; - const SignalCloseEvent({ - this.reason, - }); -} - -@internal -class SignalOfferEvent with SignalEvent { - final rtc.RTCSessionDescription sd; - const SignalOfferEvent({ - required this.sd, - }); -} - -@internal -class SignalAnswerEvent with SignalEvent { - final rtc.RTCSessionDescription sd; - const SignalAnswerEvent({ - required this.sd, - }); -} - -@internal -class SignalTrickleEvent with SignalEvent { - final rtc.RTCIceCandidate candidate; - final lk_rtc.SignalTarget target; - const SignalTrickleEvent({ - required this.candidate, - required this.target, - }); -} - -@internal -// relayed by Engine -class SignalParticipantUpdateEvent with SignalEvent, EngineEvent { - final List participants; - const SignalParticipantUpdateEvent({ - required this.participants, - }); -} - -@internal -class SignalConnectionQualityUpdateEvent with SignalEvent, EngineEvent { - final List updates; - const SignalConnectionQualityUpdateEvent({ - required this.updates, - }); -} - -@internal -class SignalLocalTrackPublishedEvent with SignalEvent { - final String cid; - final lk_models.TrackInfo track; - const SignalLocalTrackPublishedEvent({ - required this.cid, - required this.track, - }); -} - -@internal -// Speaker update received through websocket -// relayed by Engine -class SignalSpeakersChangedEvent with SignalEvent, EngineEvent { - final List speakers; - const SignalSpeakersChangedEvent({ - required this.speakers, - }); -} - -@internal -// Event received through data channel -class EngineActiveSpeakersUpdateEvent with EngineEvent { - final List speakers; - const EngineActiveSpeakersUpdateEvent({ - required this.speakers, - }); -} - -@internal -class SignalLeaveEvent with SignalEvent { - final bool canReconnect; - const SignalLeaveEvent({ - required this.canReconnect, - }); -} - -@internal -class SignalMuteTrackEvent with SignalEvent { - final String sid; - final bool muted; - const SignalMuteTrackEvent({ - required this.sid, - required this.muted, - }); -} diff --git a/lib/src/internal/events.dart b/lib/src/internal/events.dart index 085f361..19fc885 100644 --- a/lib/src/internal/events.dart +++ b/lib/src/internal/events.dart @@ -5,7 +5,10 @@ import 'package:meta/meta.dart'; import 'package:visibility_detector/visibility_detector.dart'; import '../events.dart'; +import '../proto/livekit_models.pb.dart' as lk_models; +import '../proto/livekit_rtc.pb.dart' as lk_rtc; import '../track/track.dart'; +import '../types.dart'; abstract class InternalEvent implements LiveKitEvent {} @@ -72,3 +75,113 @@ class TrackMuteUpdatedEvent with TrackEvent, InternalEvent { required this.muted, }); } + +// +// Signal events +// + +@internal +class SignalConnectedEvent with SignalEvent { + final lk_rtc.JoinResponse response; + const SignalConnectedEvent({ + required this.response, + }); +} + +@internal +class SignalCloseEvent with SignalEvent { + final CloseReason? reason; + const SignalCloseEvent({ + this.reason, + }); +} + +@internal +class SignalOfferEvent with SignalEvent { + final rtc.RTCSessionDescription sd; + const SignalOfferEvent({ + required this.sd, + }); +} + +@internal +class SignalAnswerEvent with SignalEvent { + final rtc.RTCSessionDescription sd; + const SignalAnswerEvent({ + required this.sd, + }); +} + +@internal +class SignalTrickleEvent with SignalEvent { + final rtc.RTCIceCandidate candidate; + final lk_rtc.SignalTarget target; + const SignalTrickleEvent({ + required this.candidate, + required this.target, + }); +} + +@internal +// relayed by Engine +class SignalParticipantUpdateEvent with SignalEvent, EngineEvent { + final List participants; + const SignalParticipantUpdateEvent({ + required this.participants, + }); +} + +@internal +class SignalConnectionQualityUpdateEvent with SignalEvent, EngineEvent { + final List updates; + const SignalConnectionQualityUpdateEvent({ + required this.updates, + }); +} + +@internal +class SignalLocalTrackPublishedEvent with SignalEvent { + final String cid; + final lk_models.TrackInfo track; + const SignalLocalTrackPublishedEvent({ + required this.cid, + required this.track, + }); +} + +@internal +// Speaker update received through websocket +// relayed by Engine +class SignalSpeakersChangedEvent with SignalEvent, EngineEvent { + final List speakers; + const SignalSpeakersChangedEvent({ + required this.speakers, + }); +} + +@internal +// Event received through data channel +class EngineActiveSpeakersUpdateEvent with EngineEvent { + final List speakers; + const EngineActiveSpeakersUpdateEvent({ + required this.speakers, + }); +} + +@internal +class SignalLeaveEvent with SignalEvent { + final bool canReconnect; + const SignalLeaveEvent({ + required this.canReconnect, + }); +} + +@internal +class SignalMuteTrackEvent with SignalEvent { + final String sid; + final bool muted; + const SignalMuteTrackEvent({ + required this.sid, + required this.muted, + }); +} diff --git a/lib/src/participant/local_participant.dart b/lib/src/participant/local_participant.dart index 13a9e86..040f639 100644 --- a/lib/src/participant/local_participant.dart +++ b/lib/src/participant/local_participant.dart @@ -11,13 +11,13 @@ import '../managers/event.dart'; import '../options.dart'; import '../proto/livekit_models.pb.dart' as lk_models; import '../publication/local_track_publication.dart'; +import '../room.dart'; import '../rtc_engine.dart'; import '../track/local.dart'; import '../track/local/audio.dart'; import '../track/local/video.dart'; import '../types.dart'; import '../utils.dart'; -import '../room.dart'; import 'participant.dart'; /// Represents the current participant in the room. Instance of [LocalParticipant] is automatically diff --git a/lib/src/room.dart b/lib/src/room.dart index e4a69b8..558e1db 100644 --- a/lib/src/room.dart +++ b/lib/src/room.dart @@ -6,6 +6,7 @@ import 'constants.dart'; import 'events.dart'; import 'exceptions.dart'; import 'extensions.dart'; +import 'internal/events.dart'; import 'logger.dart'; import 'managers/event.dart'; import 'options.dart'; diff --git a/lib/src/rtc_engine.dart b/lib/src/rtc_engine.dart index e09e0ae..125fce2 100644 --- a/lib/src/rtc_engine.dart +++ b/lib/src/rtc_engine.dart @@ -17,11 +17,11 @@ import 'managers/event.dart'; import 'options.dart'; import 'proto/livekit_models.pb.dart' as lk_models; import 'proto/livekit_rtc.pb.dart' as lk_rtc; +import 'room.dart'; import 'signal_client.dart'; import 'support/disposable.dart'; import 'transport.dart'; import 'types.dart'; -import 'room.dart'; class RTCEngine extends Disposable with EventsEmittable { static const _lossyDCLabel = '_lossy'; diff --git a/lib/src/signal_client.dart b/lib/src/signal_client.dart index 0072272..80edb5c 100644 --- a/lib/src/signal_client.dart +++ b/lib/src/signal_client.dart @@ -6,6 +6,7 @@ import 'package:http/http.dart' as http; import 'events.dart'; import 'exceptions.dart'; import 'extensions.dart'; +import 'internal/events.dart'; import 'logger.dart'; import 'managers/event.dart'; import 'options.dart';