davidliu
Committed by GitHub

Protocol 8 (#112)

1 package io.livekit.android 1 package io.livekit.android
2 2
  3 +import io.livekit.android.room.ProtocolVersion
3 import org.webrtc.PeerConnection 4 import org.webrtc.PeerConnection
4 5
5 6
@@ -17,6 +18,11 @@ data class ConnectOptions( @@ -17,6 +18,11 @@ data class ConnectOptions(
17 * capture and publish video track on connect, defaults to false 18 * capture and publish video track on connect, defaults to false
18 */ 19 */
19 val video: Boolean = false, 20 val video: Boolean = false,
  21 +
  22 + /**
  23 + * the protocol version to use with the server.
  24 + */
  25 + val protocolVersion: ProtocolVersion = ProtocolVersion.v8
20 ) { 26 ) {
21 internal var reconnect: Boolean = false 27 internal var reconnect: Boolean = false
22 } 28 }
@@ -4,6 +4,7 @@ import android.app.Application @@ -4,6 +4,7 @@ import android.app.Application
4 import android.content.Context 4 import android.content.Context
5 import io.livekit.android.dagger.DaggerLiveKitComponent 5 import io.livekit.android.dagger.DaggerLiveKitComponent
6 import io.livekit.android.dagger.create 6 import io.livekit.android.dagger.create
  7 +import io.livekit.android.room.ProtocolVersion
7 import io.livekit.android.room.Room 8 import io.livekit.android.room.Room
8 import io.livekit.android.room.RoomListener 9 import io.livekit.android.room.RoomListener
9 import io.livekit.android.util.LKLog 10 import io.livekit.android.util.LKLog
@@ -82,6 +83,7 @@ class LiveKit { @@ -82,6 +83,7 @@ class LiveKit {
82 * @param url URL to LiveKit server (i.e. ws://mylivekitdeploy.io) 83 * @param url URL to LiveKit server (i.e. ws://mylivekitdeploy.io)
83 * @param listener Listener to Room events. LiveKit interactions take place with these callbacks 84 * @param listener Listener to Room events. LiveKit interactions take place with these callbacks
84 */ 85 */
  86 + @Deprecated("Use LiveKit.create and Room.connect instead. This is limited to max protocol 7.")
85 suspend fun connect( 87 suspend fun connect(
86 appContext: Context, 88 appContext: Context,
87 url: String, 89 url: String,
@@ -94,7 +96,11 @@ class LiveKit { @@ -94,7 +96,11 @@ class LiveKit {
94 val room = create(appContext, roomOptions, overrides) 96 val room = create(appContext, roomOptions, overrides)
95 97
96 room.listener = listener 98 room.listener = listener
97 - room.connect(url, token, options) 99 +
  100 + val protocolVersion = maxOf(options.protocolVersion, ProtocolVersion.v7)
  101 + val connectOptions = options.copy(protocolVersion = protocolVersion)
  102 +
  103 + room.connect(url, token, connectOptions)
98 return room 104 return room
99 } 105 }
100 106
@@ -128,6 +128,7 @@ constructor( @@ -128,6 +128,7 @@ constructor(
128 128
129 val queryParams = mutableListOf<Pair<String, String>>() 129 val queryParams = mutableListOf<Pair<String, String>>()
130 queryParams.add(CONNECT_QUERY_TOKEN to token) 130 queryParams.add(CONNECT_QUERY_TOKEN to token)
  131 + queryParams.add(CONNECT_QUERY_PROTOCOL to options.protocolVersion.value.toString())
131 132
132 if (options.reconnect) { 133 if (options.reconnect) {
133 queryParams.add(CONNECT_QUERY_RECONNECT to 1.toString()) 134 queryParams.add(CONNECT_QUERY_RECONNECT to 1.toString())
@@ -142,7 +143,6 @@ constructor( @@ -142,7 +143,6 @@ constructor(
142 // Client info 143 // Client info
143 queryParams.add(CONNECT_QUERY_SDK to "android") 144 queryParams.add(CONNECT_QUERY_SDK to "android")
144 queryParams.add(CONNECT_QUERY_VERSION to clientInfo.version) 145 queryParams.add(CONNECT_QUERY_VERSION to clientInfo.version)
145 - queryParams.add(CONNECT_QUERY_PROTOCOL to clientInfo.protocol.toString())  
146 queryParams.add(CONNECT_QUERY_DEVICE_MODEL to clientInfo.deviceModel) 146 queryParams.add(CONNECT_QUERY_DEVICE_MODEL to clientInfo.deviceModel)
147 queryParams.add(CONNECT_QUERY_OS to clientInfo.os) 147 queryParams.add(CONNECT_QUERY_OS to clientInfo.os)
148 queryParams.add(CONNECT_QUERY_OS_VERSION to clientInfo.osVersion) 148 queryParams.add(CONNECT_QUERY_OS_VERSION to clientInfo.osVersion)
@@ -604,7 +604,6 @@ constructor( @@ -604,7 +604,6 @@ constructor(
604 const val SD_TYPE_ANSWER = "answer" 604 const val SD_TYPE_ANSWER = "answer"
605 const val SD_TYPE_OFFER = "offer" 605 const val SD_TYPE_OFFER = "offer"
606 const val SD_TYPE_PRANSWER = "pranswer" 606 const val SD_TYPE_PRANSWER = "pranswer"
607 - const val PROTOCOL_VERSION = 7  
608 const val SDK_TYPE = "android" 607 const val SDK_TYPE = "android"
609 608
610 private val skipQueueTypes = listOf( 609 private val skipQueueTypes = listOf(
@@ -627,4 +626,15 @@ constructor( @@ -627,4 +626,15 @@ constructor(
627 // iceServer("stun:stun4.l.google.com:19302"), 626 // iceServer("stun:stun4.l.google.com:19302"),
628 ) 627 )
629 } 628 }
  629 +}
  630 +
  631 +enum class ProtocolVersion(val value: Int) {
  632 + v1(1),
  633 + v2(2),
  634 + v3(3),
  635 + v4(4),
  636 + v5(5),
  637 + v6(6),
  638 + v7(7),
  639 + v8(8),
630 } 640 }
@@ -7,7 +7,6 @@ import livekit.LivekitModels @@ -7,7 +7,6 @@ import livekit.LivekitModels
7 7
8 internal fun getClientInfo() = with(LivekitModels.ClientInfo.newBuilder()) { 8 internal fun getClientInfo() = with(LivekitModels.ClientInfo.newBuilder()) {
9 sdk = LivekitModels.ClientInfo.SDK.ANDROID 9 sdk = LivekitModels.ClientInfo.SDK.ANDROID
10 - protocol = SignalClient.PROTOCOL_VERSION  
11 version = BuildConfig.VERSION_NAME 10 version = BuildConfig.VERSION_NAME
12 os = SignalClient.SDK_TYPE 11 os = SignalClient.SDK_TYPE
13 osVersion = Build.VERSION.RELEASE ?: "" 12 osVersion = Build.VERSION.RELEASE ?: ""