Skip to content

Commit

Permalink
Merge pull request #141 from shiguredo/feature/forwarding-filters
Browse files Browse the repository at this point in the history
リスト形式の転送フィルターに対応する
  • Loading branch information
zztkm authored Dec 16, 2024
2 parents bfe15d9 + 54f1c04 commit 82b568a
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 3 deletions.
16 changes: 16 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,22 @@

- [UPDATE] libwebrtc を 129.6668.1.0 に上げる
- @miosakuma
- [UPDATE] SoraForwardingFilterOption 型の引数を Sora での 2025 年 12 月の廃止に向けて非推奨にする
- 今後はリスト形式の転送フィルター設定を利用してもらう
- 非推奨になるクラス
- SoraMediaChannel
- SignalingChannelImpl
- ConnectMessage (Any で定義されているが、実態は SoraForwardingFilterOption を Map に変換したもの)
- @zztkm
- [ADD] 転送フィルター機能の設定を表すクラス `SoraForwardingFilterOption``name``priority` を追加する
- @zztkm
- [ADD] 転送フィルターをリスト形式で指定するためのプロパティを追加する
- プロパティが追加されるクラス
- SoraMediaChannel に `forwardingFiltersOption` を追加する
- SignalingChannelImpl に `forwardingFiltersOption` を追加する
- ConnectMessage に `forwardingFilters` を追加する
- クラスそのものに変更はないが `MessageConverter.buildConnectMessage``forwardingFiltersOption` を追加する
- @zztkm
- [FIX] SoraMediaChannel のコンストラクタで `signalingMetadata``signalingNotifyMetadata` に Map オブジェクトを指定した場合、null を持つフィールドが connect メッセージ送信時に省略されてしまう問題を修正
- `signalingMetadata``signalingNotifyMetadata` に設定する情報はユーザが任意に設定する項目であり value 値が null の情報も送信できるようにする必要がある
- Gson は JSON シリアライズ時、デフォルトで null フィールドを無視するので、null を持つフィールドは省略される
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ import kotlin.concurrent.schedule
* @param dataChannels connect メッセージに含める `data_channels`
* @param bundleId connect メッセージに含める `bundle_id`
* @param forwardingFilterOption 転送フィルター機能の設定
* @param forwardingFiltersOption リスト形式の転送フィルター機能の設定
*/
class SoraMediaChannel @JvmOverloads constructor(
private val context: Context,
Expand All @@ -86,7 +87,13 @@ class SoraMediaChannel @JvmOverloads constructor(
ignoreDisconnectWebSocket: Boolean? = null,
dataChannels: List<Map<String, Any>>? = null,
private var bundleId: String? = null,
@Deprecated(
"この項目は 2025 年 12 月リリース予定の Sora にて廃止されます",
ReplaceWith("forwardingFiltersOption"),
DeprecationLevel.WARNING
)
private val forwardingFilterOption: SoraForwardingFilterOption? = null,
private val forwardingFiltersOption: List<SoraForwardingFilterOption>? = null,
) {
companion object {
private val TAG = SoraMediaChannel::class.simpleName
Expand Down Expand Up @@ -672,6 +679,7 @@ class SoraMediaChannel @JvmOverloads constructor(
|bundleId = ${this.bundleId}
|signalingNotifyMetadata = ${this.signalingNotifyMetadata}
|forwardingFilter = ${this.forwardingFilterOption}
|forwardingFilters = ${this.forwardingFiltersOption}
""".trimMargin()
)

Expand Down Expand Up @@ -781,7 +789,8 @@ class SoraMediaChannel @JvmOverloads constructor(
signalingNotifyMetadata = signalingNotifyMetadata,
connectDataChannels = connectDataChannels,
redirect = redirectLocation != null,
forwardingFilterOption = forwardingFilterOption
forwardingFilterOption = forwardingFilterOption,
forwardingFiltersOption = forwardingFiltersOption
)
signaling!!.connect()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,16 @@ package jp.shiguredo.sora.sdk.channel.option
/**
* 転送フィルター機能の設定を表すクラスです。
*
* @param name 転送フィルターの名前
* @param priority 転送フィルターの優先度
* @param action 転送フィルター適用時の挙動
* @param rules 転送フィルターの適用ルール
* @param version 転送フィルターのバージョン
* @param metadata 転送フィルターのメタデータ
*/
class SoraForwardingFilterOption(
var name: String? = null,
var priority: Int? = null,
val action: Action? = null,
val rules: List<List<Rule>>,
val version: String? = null,
Expand Down Expand Up @@ -66,6 +70,8 @@ class SoraForwardingFilterOption(
internal val signaling: Any
get() {
return mapOf(
"name" to name,
"priority" to priority,
"action" to (action?.name?.lowercase() ?: null),
"rules" to rules.map { outerRule ->
outerRule.map { rule ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,13 @@ class SignalingChannelImpl @JvmOverloads constructor(
private val signalingNotifyMetadata: Any? = null,
private val connectDataChannels: List<Map<String, Any>>? = null,
private val redirect: Boolean = false,
@Deprecated(
"この項目は 2025 年 12 月リリース予定の Sora にて廃止されます",
ReplaceWith("forwardingFiltersOption"),
DeprecationLevel.WARNING
)
private val forwardingFilterOption: SoraForwardingFilterOption? = null,
private val forwardingFiltersOption: List<SoraForwardingFilterOption>? = null,
) : SignalingChannel {

companion object {
Expand Down Expand Up @@ -260,7 +266,8 @@ class SignalingChannelImpl @JvmOverloads constructor(
signalingNotifyMetadata = signalingNotifyMetadata,
dataChannels = connectDataChannels,
redirect = redirect,
forwardingFilterOption = forwardingFilterOption
forwardingFilterOption = forwardingFilterOption,
forwardingFiltersOption = forwardingFiltersOption
)
it.send(message)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,13 @@ data class ConnectMessage(
@SerializedName("audio_streaming_language_code")
val audioStreamingLanguageCode: String? = null,
@SerializedName("redirect") var redirect: Boolean? = null,
@SerializedName("forwarding_filter") val forwardingFilter: Any? = null
@Deprecated(
"この項目は 2025 年 12 月リリース予定の Sora にて廃止されます",
ReplaceWith("forwardingFilters"),
DeprecationLevel.WARNING
)
@SerializedName("forwarding_filter") val forwardingFilter: Any? = null,
@SerializedName("forwarding_filters") val forwardingFilters: List<Any>? = null
)

data class VideoSetting(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ class MessageConverter {
dataChannels: List<Map<String, Any>>? = null,
redirect: Boolean = false,
forwardingFilterOption: SoraForwardingFilterOption? = null,
forwardingFiltersOption: List<SoraForwardingFilterOption>? = null,
): String {

val msg = ConnectMessage(
Expand All @@ -60,6 +61,7 @@ class MessageConverter {
signalingNotifyMetadata = signalingNotifyMetadata,
audioStreamingLanguageCode = mediaOption.audioStreamingLanguageCode,
forwardingFilter = forwardingFilterOption?.signaling,
forwardingFilters = forwardingFiltersOption?.map { it.signaling }
)

if (mediaOption.upstreamIsRequired) {
Expand Down

0 comments on commit 82b568a

Please sign in to comment.