Add XML documentation across gateway, worker, and .NET client

This commit is contained in:
Joseph Doherty
2026-04-30 11:49:58 -04:00
parent 4731ab535c
commit eed1e88a37
269 changed files with 4555 additions and 13 deletions
@@ -16,6 +16,7 @@ namespace MxGateway.Worker.Tests.Ipc;
public sealed class WorkerPipeClientTests
{
/// <summary>Verifies that worker client connects and completes handshake.</summary>
[Fact]
public async Task RunAsync_ConnectsToPipeAndCompletesHandshake()
{
@@ -81,6 +82,7 @@ public sealed class WorkerPipeClientTests
await clientTask;
}
/// <summary>Verifies that worker client retries until pipe server becomes available.</summary>
[Fact]
public async Task RunAsync_RetriesUntilPipeServerAppears()
{
@@ -122,6 +124,7 @@ public sealed class WorkerPipeClientTests
await clientTask;
}
/// <summary>Verifies that worker client throws timeout if pipe never appears.</summary>
[Fact]
public async Task RunAsync_WhenPipeNeverAppears_ThrowsTimeoutException()
{
@@ -190,6 +193,11 @@ public sealed class WorkerPipeClientTests
private sealed class FakeRuntimeSession : IWorkerRuntimeSession
{
/// <summary>Starts the worker session.</summary>
/// <param name="sessionId">Session ID.</param>
/// <param name="workerProcessId">Worker process ID.</param>
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns>Worker ready response.</returns>
public Task<WorkerReady> StartAsync(
string sessionId,
int workerProcessId,
@@ -204,6 +212,9 @@ public sealed class WorkerPipeClientTests
});
}
/// <summary>Dispatches a command to STA thread.</summary>
/// <param name="command">The command.</param>
/// <returns>Command reply.</returns>
public Task<MxCommandReply> DispatchAsync(StaCommand command)
{
return Task.FromResult(new MxCommandReply
@@ -219,6 +230,8 @@ public sealed class WorkerPipeClientTests
});
}
/// <summary>Captures current runtime heartbeat snapshot.</summary>
/// <returns>Heartbeat snapshot.</returns>
public WorkerRuntimeHeartbeatSnapshot CaptureHeartbeat()
{
return new WorkerRuntimeHeartbeatSnapshot(
@@ -229,25 +242,38 @@ public sealed class WorkerPipeClientTests
currentCommandCorrelationId: string.Empty);
}
/// <summary>Drains queued events.</summary>
/// <param name="maxEvents">Maximum events to drain.</param>
/// <returns>Drained events.</returns>
public IReadOnlyList<WorkerEvent> DrainEvents(uint maxEvents)
{
return Array.Empty<WorkerEvent>();
}
/// <summary>Drains pending fault if any.</summary>
/// <returns>Fault or null.</returns>
public WorkerFault? DrainFault()
{
return null;
}
/// <summary>Cancels a command by correlation ID.</summary>
/// <param name="correlationId">Command correlation ID.</param>
/// <returns>True if cancelled.</returns>
public bool CancelCommand(string correlationId)
{
return false;
}
/// <summary>Requests graceful shutdown.</summary>
public void RequestShutdown()
{
}
/// <summary>Shuts down gracefully within timeout.</summary>
/// <param name="timeout">Shutdown timeout.</param>
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns>Shutdown result.</returns>
public Task<MxAccessShutdownResult> ShutdownGracefullyAsync(
TimeSpan timeout,
CancellationToken cancellationToken = default)
@@ -255,6 +281,7 @@ public sealed class WorkerPipeClientTests
return Task.FromResult(new MxAccessShutdownResult(Array.Empty<MxAccessShutdownFailure>()));
}
/// <summary>Disposes resources.</summary>
public void Dispose()
{
}