File tree Expand file tree Collapse file tree
livekit-android-sdk/src/main/java/io/livekit/android/room
livekit-android-test/src/test/java/io/livekit/android/room/participant Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -694,7 +694,11 @@ internal constructor(
694694
695695 @CheckResult
696696 internal suspend fun sendData (dataPacket : LivekitModels .DataPacket ): Result <Unit > {
697- ensurePublisherConnected(dataPacket.kind)
697+ try {
698+ ensurePublisherConnected(dataPacket.kind)
699+ } catch (e: Exception ) {
700+ return Result .failure(e)
701+ }
698702
699703 fun sendDataImpl (dataPacket : LivekitModels .DataPacket ): Result <Unit > {
700704 try {
Original file line number Diff line number Diff line change @@ -26,6 +26,7 @@ import io.livekit.android.events.ParticipantEvent
2626import io.livekit.android.events.RoomEvent
2727import io.livekit.android.room.DefaultsManager
2828import io.livekit.android.room.RTCEngine
29+ import io.livekit.android.room.RoomException
2930import io.livekit.android.room.track.LocalVideoTrack
3031import io.livekit.android.room.track.LocalVideoTrackOptions
3132import io.livekit.android.room.track.ScreenSharePresets
@@ -879,4 +880,19 @@ class LocalParticipantMockE2ETest : MockE2ETest() {
879880
880881 assertTrue(headerPacket.user.payload.toByteArray().contentEquals(data))
881882 }
883+
884+ @Test
885+ fun publishDataReturnsFailureWhenPublisherChannelIsMissing () = runTest {
886+ connect()
887+
888+ val rtcEngine = component.rtcEngine()
889+ val reliableDataChannelField = RTCEngine ::class .java.getDeclaredField(" reliableDataChannel" )
890+ reliableDataChannelField.isAccessible = true
891+ reliableDataChannelField.set(rtcEngine, null )
892+
893+ val result = room.localParticipant.publishData(" hello" .toByteArray())
894+
895+ assertTrue(result.isFailure)
896+ assertTrue(result.exceptionOrNull() is RoomException .ConnectException )
897+ }
882898}
You can’t perform that action at this time.
0 commit comments