62 lines
2.2 KiB
C#
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(); |