Adds an `.editorconfig` file with C# and project-specific conventions. Applies consistent indentation and formatting across backend handlers, runtime models, and AI services.
50 lines
1.7 KiB
C#
50 lines
1.7 KiB
C#
using System.Runtime.InteropServices;
|
|
using FastEndpoints;
|
|
using SpaceGame.Api.Universe.Simulation;
|
|
|
|
namespace SpaceGame.Api.Universe.Api;
|
|
|
|
public sealed class GetTelemetryHandler(TelemetryService telemetry, WorldService worldService) : EndpointWithoutRequest
|
|
{
|
|
public override void Configure()
|
|
{
|
|
Get("/api/telemetry");
|
|
AllowAnonymous();
|
|
}
|
|
|
|
public override Task HandleAsync(CancellationToken cancellationToken)
|
|
{
|
|
var status = worldService.GetStatus();
|
|
var connections = worldService.GetConnectionStats();
|
|
var uptime = telemetry.Uptime;
|
|
|
|
return SendOkAsync(new
|
|
{
|
|
process = new
|
|
{
|
|
uptimeSeconds = uptime.TotalSeconds,
|
|
cpuPercent = Math.Round(telemetry.CpuPercent, 1),
|
|
workingSetMb = Math.Round(telemetry.WorkingSetBytes / 1_048_576.0, 1),
|
|
gcMemoryMb = Math.Round(telemetry.GcMemoryBytes / 1_048_576.0, 1),
|
|
threadCount = telemetry.ThreadCount,
|
|
processorCount = Environment.ProcessorCount,
|
|
},
|
|
simulation = new
|
|
{
|
|
sequence = status.Sequence,
|
|
connectedClients = connections.ConnectedClients,
|
|
deltaHistoryCount = connections.DeltaHistoryCount,
|
|
tickIntervalMs = 200,
|
|
},
|
|
runtime = new
|
|
{
|
|
frameworkDescription = RuntimeInformation.FrameworkDescription,
|
|
osDescription = RuntimeInformation.OSDescription,
|
|
gcGen0 = GC.CollectionCount(0),
|
|
gcGen1 = GC.CollectionCount(1),
|
|
gcGen2 = GC.CollectionCount(2),
|
|
},
|
|
}, cancellationToken);
|
|
}
|
|
}
|