Skip to content

Commit 8ce303b

Browse files
authored
better track types (#393)
1 parent 316e363 commit 8ce303b

File tree

3 files changed

+32
-16
lines changed

3 files changed

+32
-16
lines changed

livekit-rtc/livekit/rtc/participant.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -704,7 +704,7 @@ async def publish_track(
704704
raise PublishTrackError(cb.publish_track.error)
705705

706706
track_publication = LocalTrackPublication(cb.publish_track.publication)
707-
track_publication.track = track
707+
track_publication._track = track
708708
track._info.sid = track_publication.sid
709709
self._track_publications[track_publication.sid] = track_publication
710710

@@ -739,7 +739,7 @@ async def unpublish_track(self, track_sid: str) -> None:
739739
raise UnpublishTrackError(cb.unpublish_track.error)
740740

741741
publication = self._track_publications.pop(track_sid)
742-
publication.track = None
742+
publication._track = None
743743
queue.task_done()
744744
finally:
745745
self._room_queue.unsubscribe(queue)

livekit-rtc/livekit/rtc/room.py

+10-10
Original file line numberDiff line numberDiff line change
@@ -508,8 +508,8 @@ def _on_room_event(self, event: proto_room.RoomEvent):
508508
elif which == "local_track_published":
509509
sid = event.local_track_published.track_sid
510510
lpublication = self.local_participant.track_publications[sid]
511-
track = lpublication.track
512-
self.emit("local_track_published", lpublication, track)
511+
ltrack = lpublication.track
512+
self.emit("local_track_published", lpublication, ltrack)
513513
elif which == "local_track_unpublished":
514514
sid = event.local_track_unpublished.publication_sid
515515
lpublication = self.local_participant.track_publications[sid]
@@ -535,23 +535,23 @@ def _on_room_event(self, event: proto_room.RoomEvent):
535535
track_info = owned_track_info.info
536536
rparticipant = self._remote_participants[event.track_subscribed.participant_identity]
537537
rpublication = rparticipant.track_publications[track_info.sid]
538-
rpublication.subscribed = True
538+
rpublication._subscribed = True
539539
if track_info.kind == TrackKind.KIND_VIDEO:
540540
remote_video_track = RemoteVideoTrack(owned_track_info)
541-
rpublication.track = remote_video_track
541+
rpublication._track = remote_video_track
542542
self.emit("track_subscribed", remote_video_track, rpublication, rparticipant)
543543
elif track_info.kind == TrackKind.KIND_AUDIO:
544544
remote_audio_track = RemoteAudioTrack(owned_track_info)
545-
rpublication.track = remote_audio_track
545+
rpublication._track = remote_audio_track
546546
self.emit("track_subscribed", remote_audio_track, rpublication, rparticipant)
547547
elif which == "track_unsubscribed":
548548
identity = event.track_unsubscribed.participant_identity
549549
rparticipant = self._remote_participants[identity]
550550
rpublication = rparticipant.track_publications[event.track_unsubscribed.track_sid]
551-
track = rpublication.track
552-
rpublication.track = None
553-
rpublication.subscribed = False
554-
self.emit("track_unsubscribed", track, rpublication, rparticipant)
551+
rtrack = rpublication.track
552+
rpublication._track = None
553+
rpublication._subscribed = False
554+
self.emit("track_unsubscribed", rtrack, rpublication, rparticipant)
555555
elif which == "track_subscription_failed":
556556
identity = event.track_subscription_failed.participant_identity
557557
rparticipant = self._remote_participants[identity]
@@ -828,4 +828,4 @@ def __repr__(self) -> str:
828828
if self._first_sid_future.done():
829829
sid = self._first_sid_future.result()
830830

831-
return f"rtc.Room(sid={sid}, name={self.name}, metadata={self.metadata}, connection_state={self._connection_state})"
831+
return f"rtc.Room(sid={sid}, name={self.name}, metadata={self.metadata}, connection_state={ConnectionState.Name(self._connection_state)})"

livekit-rtc/livekit/rtc/track_publication.py

+20-4
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,26 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
from typing import Optional
15+
from typing import Optional, cast
1616
import asyncio
1717

1818
from ._ffi_client import FfiHandle, FfiClient
1919
from ._proto import e2ee_pb2 as proto_e2ee
2020
from ._proto import ffi_pb2 as proto_ffi
2121
from ._proto import track_pb2 as proto_track
22-
from .track import Track
22+
from .track import Track, LocalTrack, RemoteTrack
2323

2424

2525
class TrackPublication:
2626
def __init__(self, owned_info: proto_track.OwnedTrackPublication):
2727
self._info = owned_info.info
28-
self.track: Optional[Track] = None
28+
self._track: Optional[Track] = None
2929
self._ffi_handle = FfiHandle(owned_info.handle.id)
3030

31+
@property
32+
def track(self) -> Optional[Track]:
33+
return self._track
34+
3135
@property
3236
def sid(self) -> str:
3337
return self._info.sid
@@ -74,6 +78,10 @@ def __init__(self, owned_info: proto_track.OwnedTrackPublication):
7478
super().__init__(owned_info)
7579
self._first_subscription: asyncio.Future[None] = asyncio.Future()
7680

81+
@property
82+
def track(self) -> Optional[LocalTrack]:
83+
return cast(Optional[LocalTrack], self._track)
84+
7785
async def wait_for_subscription(self) -> None:
7886
await asyncio.shield(self._first_subscription)
7987

@@ -84,7 +92,15 @@ def __repr__(self) -> str:
8492
class RemoteTrackPublication(TrackPublication):
8593
def __init__(self, owned_info: proto_track.OwnedTrackPublication):
8694
super().__init__(owned_info)
87-
self.subscribed = False
95+
self._subscribed = False
96+
97+
@property
98+
def track(self) -> Optional[RemoteTrack]:
99+
return cast(Optional[RemoteTrack], self._track)
100+
101+
@property
102+
def subscribed(self) -> bool:
103+
return self._subscribed
88104

89105
def set_subscribed(self, subscribed: bool):
90106
req = proto_ffi.FfiRequest()

0 commit comments

Comments
 (0)