Files
LiquidCode.Tester/src/LiquidCode.Tester.Worker/Program.cs
2025-11-04 20:22:51 +04:00

62 lines
2.2 KiB
C#

using LiquidCode.Tester.Worker.Services;
using LiquidCode.Tester.Worker.Services.Isolate;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container
builder.Services.AddControllers();
builder.Services.AddOpenApi();
// Add HttpClient
builder.Services.AddHttpClient();
// Register Isolate services
builder.Services.AddSingleton<IsolateService>();
builder.Services.AddSingleton(sp =>
{
var logger = sp.GetRequiredService<ILogger<IsolateBoxPool>>();
var maxBoxes = builder.Configuration.GetValue<int>("Isolate:MaxBoxes", 100);
return new IsolateBoxPool(maxBoxes, logger);
});
// Register application services
builder.Services.AddSingleton<PolygonProblemXmlParser>();
builder.Services.AddSingleton<AnswerGenerationService>();
builder.Services.AddSingleton<CheckerService>();
builder.Services.AddSingleton<IPackageParserService, PackageParserService>();
builder.Services.AddSingleton<IOutputCheckerService, OutputCheckerService>();
builder.Services.AddSingleton<ICallbackService, CallbackService>();
// Register compilation services
builder.Services.AddSingleton<CppCompilationService>();
builder.Services.AddSingleton<JavaCompilationService>();
builder.Services.AddSingleton<KotlinCompilationService>();
builder.Services.AddSingleton<CSharpCompilationService>();
builder.Services.AddSingleton<PythonCompilationService>();
builder.Services.AddSingleton<ICompilationServiceFactory, CompilationServiceFactory>();
// Register execution services
// Always register both standard and isolate versions
builder.Services.AddSingleton<CppExecutionService>();
builder.Services.AddSingleton<CppExecutionServiceIsolate>();
builder.Services.AddSingleton<JavaExecutionService>();
builder.Services.AddSingleton<KotlinExecutionService>();
builder.Services.AddSingleton<CSharpExecutionService>();
builder.Services.AddSingleton<PythonExecutionService>();
builder.Services.AddSingleton<IExecutionServiceFactory, ExecutionServiceFactory>();
// Register testing service
builder.Services.AddSingleton<ITestingService, TestingService>();
var app = builder.Build();
// Configure the HTTP request pipeline
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
}
app.MapControllers();
app.Run();