Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
xuning
/
livekitAndroidXuningTest
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
davidliu
2025-08-04 23:40:01 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2025-08-04 23:40:01 +0900
Commit
b390b80898435986866d492fc4a53355f8bfe6a2
b390b808
1 parent
caa474d2
Data stream helper methods (#732)
隐藏空白字符变更
内嵌
并排对比
正在显示
5 个修改的文件
包含
67 行增加
和
1 行删除
.changeset/rich-penguins-walk.md
.changeset/tall-trees-tan.md
livekit-android-sdk/src/main/java/io/livekit/android/room/datastream/StreamOptions.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/datastream/outgoing/ByteStreamSender.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/datastream/outgoing/OutgoingDataStreamManager.kt
.changeset/rich-penguins-walk.md
0 → 100644
查看文件 @
b390b80
---
"
client-sdk-android"
:
patch
---
Add sendText and sendFile helper methods to LocalParticipant for ease of use
...
...
.changeset/tall-trees-tan.md
0 → 100644
查看文件 @
b390b80
---
"
client-sdk-android"
:
patch
---
Add default name of "unknown" for StreamByteOptions to allow for no-arg construction
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/datastream/StreamOptions.kt
查看文件 @
b390b80
...
...
@@ -56,7 +56,7 @@ data class StreamBytesOptions(
/**
* The name of the file being sent.
*/
val name: String,
val name: String
= "unknown"
,
/**
* The total exact size in bytes, if known.
*/
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/datastream/outgoing/ByteStreamSender.kt
查看文件 @
b390b80
...
...
@@ -20,13 +20,18 @@ import androidx.annotation.CheckResult
import io.livekit.android.room.datastream.ByteStreamInfo
import okio.Buffer
import okio.FileSystem
import okio.Path.Companion.toOkioPath
import okio.Path.Companion.toPath
import okio.Source
import okio.source
import java.io.File
import java.io.InputStream
import java.util.Arrays
import kotlin.math.min
/**
* A stream sender for sending byte-based messages (e.g. files, images, etc.)
*/
class ByteStreamSender(
val info: ByteStreamInfo,
destination: StreamDestination<ByteArray>,
...
...
@@ -52,7 +57,19 @@ private val byteDataChunker: DataChunker<ByteArray> = { data: ByteArray, chunkSi
}
/**
* Reads the [file] and writes it to the data stream.
*
* @param file the file to read from
*/
@CheckResult
suspend fun ByteStreamSender.writeFile(file: File): Result<Unit> {
return write(FileSystem.SYSTEM.source(file.toOkioPath()))
}
/**
* Reads the file from [filePath] and writes it to the data stream.
*
* @param filePath absolute path to the file
*/
@CheckResult
suspend fun ByteStreamSender.writeFile(filePath: String): Result<Unit> {
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/datastream/outgoing/OutgoingDataStreamManager.kt
查看文件 @
b390b80
...
...
@@ -29,6 +29,8 @@ import io.livekit.android.room.participant.Participant
import io.livekit.android.util.LKLog
import livekit.LivekitModels.DataPacket
import livekit.LivekitModels.DataStream
import java.io.File
import java.io.InputStream
import java.util.Collections
import java.util.Date
import java.util.concurrent.atomic.AtomicLong
...
...
@@ -38,6 +40,7 @@ interface OutgoingDataStreamManager {
/**
* Start sending a stream of text. Call [TextStreamSender.close] when finished sending.
*
* @see [TextStreamSender.write]
* @throws StreamException if the stream failed to open.
*/
suspend fun streamText(options: StreamTextOptions = StreamTextOptions()): TextStreamSender
...
...
@@ -45,9 +48,45 @@ interface OutgoingDataStreamManager {
/**
* Start sending a stream of bytes. Call [ByteStreamSender.close] when finished sending.
*
* Extension functions are available for sending bytes from sources such as [InputStream] or [File].
*
* @see [ByteStreamSender.write]
* @see [ByteStreamSender.writeFile]
* @throws StreamException if the stream failed to open.
*/
suspend fun streamBytes(options: StreamBytesOptions): ByteStreamSender
/**
* Send text through a data stream.
*/
@CheckResult
suspend fun sendText(text: String, options: StreamTextOptions = StreamTextOptions()): Result<Unit> {
val sender = streamText(options)
val result = sender.write(text)
if (result.isFailure) {
sender.close(result.exceptionOrNull()?.message ?: "Unknown error.")
} else {
sender.close()
}
return result
}
/**
* Send a file through a data stream.
*/
@CheckResult
suspend fun sendFile(file: File, options: StreamBytesOptions = StreamBytesOptions()): Result<Unit> {
val sender = streamBytes(options)
val result = sender.writeFile(file)
if (result.isFailure) {
sender.close(result.exceptionOrNull()?.message ?: "Unknown error.")
} else {
sender.close()
}
return result
}
}
/**
...
...
请
注册
或
登录
后发表评论