Skip to content

Commit f858754

Browse files
committed
rpcMethods と RPCMethod を削除し SDK 外部からメソッドの構造を指定できるようにする
1 parent d2b2165 commit f858754

File tree

5 files changed

+0
-101
lines changed

5 files changed

+0
-101
lines changed

Sora/MediaChannel.swift

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -154,27 +154,6 @@ public final class MediaChannel {
154154
/// サーバーから通知を受信可能であり、接続中にのみ取得可能です。
155155
public private(set) var subscriberCount: Int?
156156

157-
/// RPC で利用可能なメソッド一覧
158-
///
159-
/// Sora サーバーから通知された RPC メソッドが列挙型として取得できます。
160-
/// rpc メソッドを呼び出す前に、必要なメソッドがこの一覧に含まれているかを確認することを推奨します。
161-
///
162-
/// - Returns: 利用可能な RPC メソッドの一覧。RPC が初期化されていない場合は空配列を返します
163-
///
164-
/// # 使用例
165-
///
166-
/// ```swift
167-
/// if mediaChannel.rpcMethods.contains(.requestSimulcastRid) {
168-
/// let result = try await mediaChannel.rpc(
169-
/// method: RequestSimulcastRid.self,
170-
/// params: RequestSimulcastRidParams(rid: "r0")
171-
/// )
172-
/// }
173-
/// ```
174-
public var rpcMethods: [RPCMethod] {
175-
peerChannel.rpcChannel?.allowedMethods.compactMap { RPCMethod(name: $0) } ?? []
176-
}
177-
178157
// MARK: 接続チャネル
179158

180159
/// シグナリングチャネル
@@ -257,8 +236,6 @@ public final class MediaChannel {
257236
/// RPC メソッドを型安全に呼び出します
258237
///
259238
/// このメソッドを使用して、Sora サーバーで定義された RPC メソッドを非同期で実行できます。
260-
/// 呼び出す前に rpcMethods プロパティで該当メソッドが利用可能であることを確認してください。
261-
///
262239
/// - Parameters:
263240
/// - method: 呼び出す RPC メソッドの型 (例: `RequestSimulcastRid.self`)
264241
/// - params: メソッドに渡すパラメータ。型安全に検証されます
@@ -269,7 +246,6 @@ public final class MediaChannel {
269246
///
270247
/// - Throws: 以下のエラーが発生することがあります
271248
/// - `SoraError.rpcUnavailable`: RPC チャネルが利用不可
272-
/// - `SoraError.rpcMethodNotAllowed`: 指定されたメソッドが利用不可
273249
/// - `SoraError.rpcEncodingError`: パラメータのエンコーディングに失敗した
274250
/// - `SoraError.rpcDecodingError`: レスポンスのデコーディングに失敗した
275251
/// - `SoraError.rpcDataChannelClosed`: RPC の送受信に利用する DataChannel が切断された

Sora/PeerChannel.swift

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -942,14 +942,6 @@ class PeerChannel: NSObject, RTCPeerConnectionDelegate {
942942

943943
if let rpcMethods = offer.rpcMethods {
944944
rpcAllowedMethods = rpcMethods
945-
// 未知の RPC メソッドが含まれている場合はログ出力する
946-
for method in rpcMethods {
947-
if RPCMethod(name: method) == nil {
948-
Logger.warn(
949-
type: .peerChannel,
950-
message: "unknown RPC method received from server: \(method)")
951-
}
952-
}
953945
} else {
954946
rpcAllowedMethods = []
955947
}

Sora/RPC.swift

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -66,20 +66,13 @@ public final class RPCChannel {
6666
private var nextId: Int = 1
6767
private var pendings: [RPCID: Pending] = [:]
6868

69-
/// Sora から払い出されたメソッド一覧 (メソッド名の文字列リスト)
70-
/// MediaChannel.rpcMethods で RPCMethod Enum に変換されます
71-
let allowedMethods: [String]
72-
private let allowedMethodNames: Set<String>
73-
7469
init?(
7570
dataChannel: DataChannel, rpcMethods: [String]
7671
) {
7772
guard !rpcMethods.isEmpty else {
7873
return nil
7974
}
8075
self.dataChannel = dataChannel
81-
self.allowedMethods = rpcMethods
82-
self.allowedMethodNames = Set(rpcMethods)
8376
}
8477

8578
/// RPC が利用可能かを返す。
@@ -101,11 +94,6 @@ public final class RPCChannel {
10194
return false
10295
}
10396

104-
guard allowedMethodNames.contains(methodName) else {
105-
completion?(.failure(SoraError.rpcMethodNotAllowed(method: methodName)))
106-
return false
107-
}
108-
10997
var payload: [String: Any] = [
11098
"jsonrpc": "2.0",
11199
"method": methodName,

Sora/RPCTypes.swift

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -292,55 +292,3 @@ public enum PutSignalingNotifyMetadataItem<Metadata: Decodable, Value: Encodable
292292
RPCMethodNames.putSignalingNotifyMetadataItem
293293
}
294294
}
295-
296-
/// RPC メソッドを型安全に表現する Enum
297-
///
298-
/// MediaChannel.rpcMethods で利用可能なメソッドをこの型として取得できます。
299-
/// このEnum を使用することで、コンパイル時にメソッド名の妥当性が検証されます。
300-
///
301-
/// # 使用例
302-
/// ```swift
303-
/// if mediaChannel.rpcMethods.contains(.requestSimulcastRid) {
304-
/// let params = RequestSimulcastRidParams(rid: "r0")
305-
/// let response = try await mediaChannel.rpc(
306-
/// method: RequestSimulcastRid.self,
307-
/// params: params
308-
/// )
309-
/// }
310-
/// ```
311-
public enum RPCMethod {
312-
case requestSimulcastRid
313-
case requestSpotlightRid
314-
case resetSpotlightRid
315-
case putSignalingNotifyMetadata
316-
case putSignalingNotifyMetadataItem
317-
318-
var name: String {
319-
switch self {
320-
case .requestSimulcastRid:
321-
return RPCMethodNames.requestSimulcastRid
322-
case .requestSpotlightRid:
323-
return RPCMethodNames.requestSpotlightRid
324-
case .resetSpotlightRid:
325-
return RPCMethodNames.resetSpotlightRid
326-
case .putSignalingNotifyMetadata:
327-
return RPCMethodNames.putSignalingNotifyMetadata
328-
case .putSignalingNotifyMetadataItem:
329-
return RPCMethodNames.putSignalingNotifyMetadataItem
330-
}
331-
}
332-
333-
init?(name: String) {
334-
let allMethods: [RPCMethod] = [
335-
.requestSimulcastRid,
336-
.requestSpotlightRid,
337-
.resetSpotlightRid,
338-
.putSignalingNotifyMetadata,
339-
.putSignalingNotifyMetadataItem,
340-
]
341-
guard let method = allMethods.first(where: { $0.name == name }) else {
342-
return nil
343-
}
344-
self = method
345-
}
346-
}

Sora/SoraError.swift

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,6 @@ public enum SoraError: Error {
4545
/// RPC 機能が利用できない
4646
case rpcUnavailable(reason: String)
4747

48-
/// 利用を許可されていない RPC メソッド
49-
case rpcMethodNotAllowed(method: String)
50-
5148
/// RPC リクエストのエンコードに失敗
5249
case rpcEncodingError(reason: String)
5350

@@ -106,8 +103,6 @@ extension SoraError: LocalizedError {
106103
return "Messaging error: \(reason)"
107104
case .rpcUnavailable(let reason):
108105
return "RPC unavailable: \(reason)"
109-
case .rpcMethodNotAllowed(let method):
110-
return "RPC method not allowed: \(method)"
111106
case .rpcEncodingError(let reason):
112107
return "RPC encoding error: \(reason)"
113108
case .rpcDecodingError(let reason):

0 commit comments

Comments
 (0)