Skip to content

Commit aae7d7b

Browse files
fippojlaine
authored andcommitted
avoid having a transceiver._transport
instead accesss it via the receivers transport. This is somewhat arbitrary since senders and receivers always exist but similar to how a transceivers receiver track is always set. Also remove transceiver.transport accessor added in aiortc#1229 (comment)
1 parent 61782eb commit aae7d7b

File tree

3 files changed

+59
-50
lines changed

3 files changed

+59
-50
lines changed

src/aiortc/rtcpeerconnection.py

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ def create_media_description_for_transceiver(
251251
)
252252
]
253253

254-
add_transport_description(media, transceiver._transport)
254+
add_transport_description(media, transceiver.receiver.transport)
255255

256256
return media
257257

@@ -410,7 +410,7 @@ async def addIceCandidate(self, candidate: RTCIceCandidate) -> None:
410410
candidate.sdpMid == transceiver.mid
411411
or candidate.sdpMLineIndex == transceiver._get_mline_index()
412412
) and not transceiver._bundled:
413-
iceTransport = transceiver._transport.transport
413+
iceTransport = transceiver.receiver.transport.transport
414414
await iceTransport.addRemoteCandidate(candidate)
415415
return
416416

@@ -500,8 +500,8 @@ async def close(self) -> None:
500500

501501
# stop transports
502502
for transceiver in self.__transceivers:
503-
await transceiver._transport.stop()
504-
await transceiver._transport.transport.stop()
503+
await transceiver.receiver.transport.stop()
504+
await transceiver.receiver.transport.transport.stop()
505505
if self.__sctp:
506506
await self.__sctp.transport.stop()
507507
await self.__sctp.transport.transport.stop()
@@ -551,7 +551,7 @@ async def createAnswer(self) -> RTCSessionDescription:
551551
),
552552
mid=transceiver.mid,
553553
)
554-
dtlsTransport = transceiver._transport
554+
dtlsTransport = transceiver.receiver.transport
555555
else:
556556
media = create_media_description_for_sctp(
557557
self.__sctp, legacy=self._sctpLegacySdp, mid=self.__sctp.mid
@@ -789,7 +789,7 @@ async def setLocalDescription(
789789
for i, media in enumerate(description.media):
790790
if media.kind in ["audio", "video"]:
791791
transceiver = self.__getTransceiverByMLineIndex(i)
792-
transceiver._transport._set_role(media.dtls.role)
792+
transceiver.receiver.transport._set_role(media.dtls.role)
793793
elif media.kind == "application":
794794
self.__sctp.transport._set_role(media.dtls.role)
795795

@@ -803,7 +803,7 @@ async def setLocalDescription(
803803
for i, media in enumerate(description.media):
804804
if media.kind in ["audio", "video"]:
805805
transceiver = self.__getTransceiverByMLineIndex(i)
806-
add_transport_description(media, transceiver._transport)
806+
add_transport_description(media, transceiver.receiver.transport)
807807
elif media.kind == "application":
808808
add_transport_description(media, self.__sctp.transport)
809809

@@ -900,7 +900,7 @@ async def setRemoteDescription(
900900
)
901901

902902
# memorise transport parameters
903-
dtlsTransport = transceiver._transport
903+
dtlsTransport = transceiver.receiver.transport
904904
self.__remoteDtls[transceiver] = media.dtls
905905
self.__remoteIce[transceiver] = media.ice
906906

@@ -947,32 +947,31 @@ async def setRemoteDescription(
947947
bundle = next((x for x in description.group if x.semantic == "BUNDLE"), None)
948948
if bundle and bundle.items:
949949
# find main media stream
950-
masterMid = bundle.items[0]
951-
masterTransport = None
950+
primaryMid = bundle.items[0]
951+
primaryTransport = None
952952
for transceiver in self.__transceivers:
953-
if transceiver.mid == masterMid:
954-
masterTransport = transceiver._transport
953+
if transceiver.mid == primaryMid:
954+
primaryTransport = transceiver.receiver.transport
955955
break
956-
if self.__sctp and self.__sctp.mid == masterMid:
957-
masterTransport = self.__sctp.transport
956+
if self.__sctp and self.__sctp.mid == primaryMid:
957+
primaryTransport = self.__sctp.transport
958958

959959
# replace transport for bundled media
960960
oldTransports = set()
961961
slaveMids = bundle.items[1:]
962962
for transceiver in self.__transceivers:
963963
if transceiver.mid in slaveMids and not transceiver._bundled:
964-
oldTransports.add(transceiver._transport)
965-
transceiver.receiver.setTransport(masterTransport)
966-
transceiver.sender.setTransport(masterTransport)
964+
oldTransports.add(transceiver.receiver.transport)
965+
transceiver.receiver.setTransport(primaryTransport)
966+
transceiver.sender.setTransport(primaryTransport)
967967
transceiver._bundled = True
968-
transceiver._transport = masterTransport
969968
if (
970969
self.__sctp
971970
and self.__sctp.mid in slaveMids
972971
and not self.__sctp._bundled
973972
):
974973
oldTransports.add(self.__sctp.transport)
975-
self.__sctp.setTransport(masterTransport)
974+
self.__sctp.setTransport(primaryTransport)
976975
self.__sctp._bundled = True
977976

978977
# stop and discard old ICE transports
@@ -1015,7 +1014,7 @@ async def setRemoteDescription(
10151014

10161015
async def __connect(self) -> None:
10171016
for transceiver in self.__transceivers:
1018-
dtlsTransport = transceiver._transport
1017+
dtlsTransport = transceiver.receiver.transport
10191018
iceTransport = dtlsTransport.transport
10201019
if (
10211020
iceTransport.iceGatherer.getLocalCandidates()
@@ -1065,7 +1064,7 @@ def __createDtlsTransport(self) -> RTCDtlsTransport:
10651064
if len(self.__transceivers) > 0:
10661065
parameters = self.__transceivers[
10671066
0
1068-
].transport.transport.iceGatherer.getLocalParameters()
1067+
].receiver.transport.transport.iceGatherer.getLocalParameters()
10691068
else:
10701069
parameters = (
10711070
self.__sctp.transport.transport.iceGatherer.getLocalParameters()
@@ -1103,7 +1102,7 @@ def __createSctpTransport(self) -> None:
11031102
and len(self.__transceivers) > 0
11041103
)
11051104
if bundled:
1106-
dtlsTransport = self.__transceivers[0].transport
1105+
dtlsTransport = self.__transceivers[0].receiver.transport
11071106
else:
11081107
dtlsTransport = self.__createDtlsTransport()
11091108
self.__sctp = RTCSctpTransport(dtlsTransport)
@@ -1121,7 +1120,7 @@ def __createTransceiver(
11211120
bundled = False
11221121
if self.__configuration.bundlePolicy == RTCBundlePolicy.MAX_BUNDLE:
11231122
if len(self.__transceivers) > 0:
1124-
dtlsTransport = self.__transceivers[0].transport
1123+
dtlsTransport = self.__transceivers[0].receiver.transport
11251124
bundled = True
11261125
elif self.__sctp:
11271126
dtlsTransport = self.__sctp.transport
@@ -1131,7 +1130,7 @@ def __createTransceiver(
11311130
filter(lambda t: t.kind == kind, self.__transceivers), None
11321131
)
11331132
if transceiver:
1134-
dtlsTransport = transceiver.transport
1133+
dtlsTransport = transceiver.receiver.transport
11351134
bundled = True
11361135

11371136
if not dtlsTransport:
@@ -1146,7 +1145,6 @@ def __createTransceiver(
11461145
transceiver.receiver._set_rtcp_ssrc(transceiver.sender._ssrc)
11471146
transceiver.sender._stream_id = self.__stream_id
11481147
transceiver._bundled = bundled
1149-
transceiver._transport = dtlsTransport
11501148
self.__transceivers.append(transceiver)
11511149
return transceiver
11521150

src/aiortc/rtcrtptransceiver.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
from typing import Optional
33

44
from .codecs import get_capabilities
5-
from .rtcdtlstransport import RTCDtlsTransport
65
from .rtcrtpparameters import (
76
RTCRtpCodecCapability,
87
RTCRtpCodecParameters,
@@ -40,7 +39,6 @@ def __init__(
4039

4140
self._offerDirection: Optional[str] = None
4241
self._preferred_codecs: list[RTCRtpCodecCapability] = []
43-
self._transport: RTCDtlsTransport = None
4442

4543
# FIXME: this is only used by RTCPeerConnection
4644
self._bundled = False
@@ -130,13 +128,6 @@ async def stop(self) -> None:
130128
await self.__sender.stop()
131129
self.__stopped = True
132130

133-
@property
134-
def transport(self) -> RTCDtlsTransport:
135-
"""
136-
The :class:`RTCDtlsTransport` over which media are transmitted.
137-
"""
138-
return self._transport
139-
140131
def _setCurrentDirection(self, direction: str) -> None:
141132
self.__currentDirection = direction
142133

tests/test_rtcpeerconnection.py

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5254,11 +5254,17 @@ async def test_bundlepolicy_max_bundle_ufrag_and_pwd(self) -> None:
52545254
transceiver2 = pc.addTransceiver("video")
52555255

52565256
await pc.createOffer()
5257-
param1 = transceiver1.transport.transport.iceGatherer.getLocalParameters()
5258-
param2 = transceiver2.transport.transport.iceGatherer.getLocalParameters()
5257+
param1 = (
5258+
transceiver1.receiver.transport.transport.iceGatherer.getLocalParameters()
5259+
)
5260+
param2 = (
5261+
transceiver2.receiver.transport.transport.iceGatherer.getLocalParameters()
5262+
)
52595263
self.assertEqual(param1.usernameFragment, param2.usernameFragment)
52605264
self.assertEqual(param1.password, param2.password)
5261-
self.assertEqual(transceiver1.transport, transceiver2.transport)
5265+
self.assertEqual(
5266+
transceiver1.receiver.transport, transceiver2.receiver.transport
5267+
)
52625268

52635269
@asynctest
52645270
async def test_bundlepolicy_max_bundle_ufrag_and_pwd_datachannel(self) -> None:
@@ -5269,11 +5275,13 @@ async def test_bundlepolicy_max_bundle_ufrag_and_pwd_datachannel(self) -> None:
52695275
transceiver = pc.addTransceiver("audio")
52705276

52715277
await pc.createOffer()
5272-
param1 = transceiver.transport.transport.iceGatherer.getLocalParameters()
5278+
param1 = (
5279+
transceiver.receiver.transport.transport.iceGatherer.getLocalParameters()
5280+
)
52735281
param2 = pc.sctp.transport.transport.iceGatherer.getLocalParameters()
52745282
self.assertEqual(param1.usernameFragment, param2.usernameFragment)
52755283
self.assertEqual(param1.password, param2.password)
5276-
self.assertEqual(transceiver.transport, pc.sctp.transport)
5284+
self.assertEqual(transceiver.receiver.transport, pc.sctp.transport)
52775285

52785286
@asynctest
52795287
async def test_bundlepolicy_transports_balanced(self) -> None:
@@ -5282,10 +5290,14 @@ async def test_bundlepolicy_transports_balanced(self) -> None:
52825290
transceiver2 = pc.addTransceiver("video")
52835291
transceiver3 = pc.addTransceiver("audio")
52845292
pc.createDataChannel("somechannel")
5285-
self.assertNotEqual(transceiver1.transport, transceiver2.transport)
5286-
self.assertEqual(transceiver1.transport, transceiver3.transport)
5287-
self.assertNotEqual(transceiver1.transport, pc.sctp.transport)
5288-
self.assertNotEqual(transceiver2.transport, pc.sctp.transport)
5293+
self.assertNotEqual(
5294+
transceiver1.receiver.transport, transceiver2.receiver.transport
5295+
)
5296+
self.assertEqual(
5297+
transceiver1.receiver.transport, transceiver3.receiver.transport
5298+
)
5299+
self.assertNotEqual(transceiver1.receiver.transport, pc.sctp.transport)
5300+
self.assertNotEqual(transceiver2.receiver.transport, pc.sctp.transport)
52895301

52905302
@asynctest
52915303
async def test_bundlepolicy_transports_max_compat(self) -> None:
@@ -5296,10 +5308,14 @@ async def test_bundlepolicy_transports_max_compat(self) -> None:
52965308
transceiver2 = pc.addTransceiver("video")
52975309
transceiver3 = pc.addTransceiver("audio")
52985310
pc.createDataChannel("somechannel")
5299-
self.assertNotEqual(transceiver1.transport, transceiver2.transport)
5300-
self.assertNotEqual(transceiver1.transport, transceiver3.transport)
5301-
self.assertNotEqual(transceiver1.transport, pc.sctp.transport)
5302-
self.assertNotEqual(transceiver2.transport, pc.sctp.transport)
5311+
self.assertNotEqual(
5312+
transceiver1.receiver.transport, transceiver2.receiver.transport
5313+
)
5314+
self.assertNotEqual(
5315+
transceiver1.receiver.transport, transceiver3.receiver.transport
5316+
)
5317+
self.assertNotEqual(transceiver1.receiver.transport, pc.sctp.transport)
5318+
self.assertNotEqual(transceiver2.receiver.transport, pc.sctp.transport)
53035319

53045320
@asynctest
53055321
async def test_bundlepolicy_transports_max_bundle(self) -> None:
@@ -5310,6 +5326,10 @@ async def test_bundlepolicy_transports_max_bundle(self) -> None:
53105326
transceiver2 = pc.addTransceiver("video")
53115327
transceiver3 = pc.addTransceiver("audio")
53125328
pc.createDataChannel("somechannel")
5313-
self.assertEqual(transceiver1.transport, transceiver2.transport)
5314-
self.assertEqual(transceiver1.transport, transceiver3.transport)
5315-
self.assertEqual(transceiver1.transport, pc.sctp.transport)
5329+
self.assertEqual(
5330+
transceiver1.receiver.transport, transceiver2.receiver.transport
5331+
)
5332+
self.assertEqual(
5333+
transceiver1.receiver.transport, transceiver3.receiver.transport
5334+
)
5335+
self.assertEqual(transceiver1.receiver.transport, pc.sctp.transport)

0 commit comments

Comments
 (0)