Skip to content
Merged
Prev Previous commit
Next Next commit
切断時に未完了 RPC リクエストをキャンセル扱いにする
  • Loading branch information
t-miya committed Feb 12, 2026
commit 3450d0f6b13b908dec0ece4cbfb5d5510dd7f988
9 changes: 8 additions & 1 deletion SoraUnitySdkExamples/Assets/SoraUnitySdk/Sora.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1289,7 +1289,7 @@ void EnqueueRpcResponseJson(string json)
}

// レスポンス待ちの全ての RPC リクエストをキャンセルします。
// Dispose で呼び出されます
// Dispose と切断時に呼び出されます
void CancelAllPendingRpc()
{
List<PendingRpc> cancelTargets;
Expand Down Expand Up @@ -1443,7 +1443,12 @@ public static long ParseId(string json)
static private void DisconnectCallback(int errorCode, string message, IntPtr userdata)
{
var sora = GCHandle.FromIntPtr(userdata).Target as Sora;
// 切断が発生したら未完了 RPC はキャンセル扱いとします。
sora!.CancelAllPendingRpc();
lock (sora!.rpcLock)
{
sora!.rpcResponseJsonQueue.Clear();
}
sora!.onDisconnect!((SoraConf.ErrorCode)errorCode, message);
}

Expand Down Expand Up @@ -1678,6 +1683,7 @@ public void RequestRpcNotification(string method, string paramsJson)
/// Sora への送信後、レスポンスが返ってくるまでのタイムアウト時間は 5,000 ms です。
/// レスポンス受信とタイムアウト判定は DispatchEvents() の呼び出しで処理されます。
/// DispatchEvents() を定期的に呼び出さない場合、onResult は呼ばれず、タイムアウトも返りません。
/// 切断が発生した場合、未完了の RPC は Canceled として返されます。
/// ResultKind は成功 / 失敗を表しません。 ResponseJson の内容を利用者側で判定してください。
/// </remarks>
/// <param name="method">呼び出すメソッド名</param>
Expand All @@ -1694,6 +1700,7 @@ public void RequestRpc(string method, string paramsJson, Action<RpcResult> onRes
/// <remarks>
/// レスポンス受信とタイムアウト判定は DispatchEvents() の呼び出しで処理されます。
/// DispatchEvents() を定期的に呼び出さない場合、onResult は呼ばれず、タイムアウトも返りません。
/// 切断が発生した場合、未完了の RPC は Canceled として返されます。
/// ResultKind は成功 / 失敗を表しません。 ResponseJson の内容を利用者側で判定してください。
/// </remarks>
/// <param name="method">呼び出すメソッド名</param>
Expand Down