davidliu
Committed by GitHub

Force relay client configuration (#155)

* Update protocol submodule

* Force relay configuration

* tests
... ... @@ -201,6 +201,14 @@ internal constructor(
PeerConnection.ContinualGatheringPolicy.GATHER_CONTINUALLY
}
if (joinResponse.hasClientConfiguration()) {
val clientConfig = joinResponse.clientConfiguration
if (clientConfig.forceRelay == LivekitModels.ClientConfigSetting.ENABLED) {
rtcConfig.iceTransportsType = PeerConnection.IceTransportsType.RELAY
}
}
_publisher?.close()
_publisher = pctFactory.create(
rtcConfig,
... ...
... ... @@ -7,7 +7,8 @@ private class MockNativePeerConnectionFactory : NativePeerConnectionFactory {
}
class MockPeerConnection(
val observer: PeerConnection.Observer?
val rtcConfig: RTCConfiguration,
val observer: Observer?
) : PeerConnection(MockNativePeerConnectionFactory()) {
private var closed = false
... ...
... ... @@ -5,8 +5,10 @@ import io.livekit.android.mock.MockPeerConnection
import io.livekit.android.util.toOkioByteString
import io.livekit.android.util.toPBByteString
import kotlinx.coroutines.ExperimentalCoroutinesApi
import livekit.LivekitModels
import livekit.LivekitRtc
import org.junit.Assert
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
... ... @@ -95,4 +97,21 @@ class RTCEngineMockE2ETest : MockE2ETest() {
Assert.assertNotEquals(oldToken, newToken)
Assert.assertEquals(SignalClientTest.REFRESH_TOKEN.refreshToken, newToken)
}
@Test
fun relayConfiguration() = runTest {
connect(with(SignalClientTest.JOIN.toBuilder()) {
join = with(join.toBuilder()) {
clientConfiguration = with(LivekitModels.ClientConfiguration.newBuilder()) {
forceRelay = LivekitModels.ClientConfigSetting.ENABLED
build()
}
build()
}
build()
})
val pubPeerConnection = rtcEngine.subscriber.peerConnection as MockPeerConnection
assertEquals(PeerConnection.IceTransportsType.RELAY, pubPeerConnection.rtcConfig.iceTransportsType)
}
}
\ No newline at end of file
... ...
... ... @@ -4,11 +4,11 @@ import io.livekit.android.mock.MockPeerConnection
class MockPeerConnectionFactory : PeerConnectionFactory(1L) {
override fun createPeerConnectionInternal(
rtcConfig: PeerConnection.RTCConfiguration?,
rtcConfig: PeerConnection.RTCConfiguration,
constraints: MediaConstraints?,
observer: PeerConnection.Observer?,
sslCertificateVerifier: SSLCertificateVerifier?
): PeerConnection {
return MockPeerConnection(observer)
return MockPeerConnection(rtcConfig, observer)
}
}
\ No newline at end of file
... ...
Subproject commit 6ec04e9ca47ebad2f3426be543fb6cbeef58c2b5
Subproject commit 3f47968225995df268658982f311d5f3942aa223
... ...