Files
ft/Client/Packages/io.github.hatayama.uloopmcp/Editor/Api/McpTools/Debug/SleepTool.cs

45 lines
1.7 KiB
C#

using System.Threading.Tasks;
using System.Threading;
namespace io.github.hatayama.uLoopMCP
{
/// <summary>
/// Debug tool that sleeps for specified duration to test timeout functionality
/// Related classes:
/// - SleepSchema: Input parameters including sleep duration and timeout
/// - SleepResponse: Output containing results and timing information
/// - AbstractUnityTool: Base class providing timeout infrastructure
/// </summary>
[McpTool(
DisplayDevelopmentOnly = true,
Description = "Debug tool that sleeps for specified duration to test timeout functionality"
)]
public class SleepTool : AbstractUnityTool<SleepSchema, SleepResponse>
{
public override string ToolName => "debug-sleep";
protected override async Task<SleepResponse> ExecuteAsync(SleepSchema parameters, CancellationToken cancellationToken)
{
int actualSleepSeconds = 0;
// Sleep 1 second at a time, checking for cancellation between each sleep
for (int i = 0; i < parameters.SleepSeconds; i++)
{
// Check for cancellation before each sleep iteration
cancellationToken.ThrowIfCancellationRequested();
// Sleep for 1 second with cancellation support
await Task.Delay(1000, cancellationToken);
actualSleepSeconds = i + 1;
}
return new SleepResponse
{
Message = $"Successfully slept for {actualSleepSeconds} seconds",
ActualSleepSeconds = actualSleepSeconds,
WasCancelled = false
};
}
}
}