static void Main(string[] args) { Console.WriteLine($"--- {SubmissionType.FullName} ---"); var submissionRunner = new SubmissionRunner(SubmissionType) { Seed = Seed }; submissionRunner.Run(); }
private static void Test4() { var runner = new SubmissionRunner(typeof(SimulatedEfficientSolution)) { ShouldValidateResult = false, Seed = 1 }; runner.Run(); }
public override void Start(IConnection connection) { base.Start(connection); var consumer = new AsyncEventingBasicConsumer(Channel); consumer.Received += async(ch, ea) => { using var scope = _factory.CreateScope(); var serialized = Encoding.UTF8.GetString(ea.Body.ToArray()); var message = JsonConvert.DeserializeObject <JobRequestMessage>(serialized); IJobRunner runner = null; switch (message.JobType) { case JobType.JudgeSubmission: runner = new SubmissionRunner(scope.ServiceProvider); break; case JobType.CheckPlagiarism: runner = new PlagiarismChecker(scope.ServiceProvider); break; default: Logger.LogError($"Unknown job type JobType={message.JobType}"); break; } if (runner is not null) { var completeVersion = await runner.HandleJobRequest(message); if (completeVersion > 0) { await _producer.SendAsync(message.JobType, message.TargetId, completeVersion); } } Channel.BasicAck(ea.DeliveryTag, false); }; Channel.BasicQos(0, 1, false); Channel.BasicConsume(Queue, false, consumer); // disable auto ack for work scheduling }