Esempio n. 1
0
		private void Run()
		{
			AppDomain.MonitoringIsEnabled = true;
			Console.WriteLine("Listen {0}", address);
			var client = new Client(address, token);
			MainLoop(client);
		}
Esempio n. 2
0
		private void MainLoop(Client client)
		{
			while (true)
			{
				var newUnhandled = client.TryGetSubmissions(jobsToRequest).Result;
				Console.WriteLine("Received {0} submissions: [{1}]", newUnhandled.Count, string.Join(", ", newUnhandled.Select(s => s.Id)));

				if (newUnhandled.Any())
				{
					var results = newUnhandled.Select(SandboxRunner.Run).ToList();
					Console.WriteLine("Results: [{0}]", string.Join(", ", results.Select(r => r.Verdict)));
					client.SendResults(results);
				}
				Thread.Sleep(sleep);
			}
			// ReSharper disable once FunctionNeverReturns
		}
Esempio n. 3
0
		public void Run()
		{
			if (!Settings.MsBuildSettings.CompilerDirectory.Exists)
			{
				log.Error($"Не найдена папка с компиляторами: {Settings.MsBuildSettings.CompilerDirectory}");
				Environment.Exit(1);
			}
			log.Info($"Путь до компиляторов: {Settings.MsBuildSettings.CompilerDirectory}");

			AppDomain.MonitoringIsEnabled = true;
			log.Info($"Отправляю запросы на {address} для получения новых решений");

			Client client;
			try
			{
				client = new Client(address, token);
			}
			catch (Exception e)
			{
				log.Error("Не могу создать HTTP-клиента для отправки запроса на ulearn", e);
				throw;
			}
			MainLoop(client);
		}
Esempio n. 4
0
		private void MainLoop(Client client)
		{
			while (!shutdownEvent.WaitOne(0))
			{
				List<RunnerSubmission> newUnhandled;
				try
				{
					newUnhandled = client.TryGetSubmissions(jobsToRequest).Result;
				}
				catch (Exception e)
				{
					log.Error($"Не могу получить решения из ulearn. Следующая попытка через {sleep.TotalSeconds} секунд", e);
					Thread.Sleep(sleep);
					continue;
				}

				log.Info($"Получил {newUnhandled.Count} решение(й) со следующими ID: [{string.Join(", ", newUnhandled.Select(s => s.Id))}]");

				if (newUnhandled.Any())
				{
					var results = newUnhandled.Select(unhandled => SandboxRunner.Run(unhandled, Settings)).ToList();
					log.Info($"Результаты проверки: [{string.Join(", ", results.Select(r => r.Verdict))}]");
					try
					{
						client.SendResults(results);
					}
					catch (Exception e)
					{
						log.Error("Не могу отправить результаты проверки на ulearn", e);
					}
				}
				Thread.Sleep(sleep);
			}
		}