private static void Main(string[] args) { TaskManager taskManager; try { var config = ComponentConfigurationSection.LoadConfig("componentConfig", args); var serverAddress = IpEndPointParser.Parse(config.PrimaryServer.Address, config.PrimaryServer.Port); var taskSolversDirectoryRelativePath = config.TaskSolversPath; _logger.Info("Server address: " + serverAddress); ThreadManager threadManager = new ThreadPoolThreadManager(); taskManager = new TaskManager(threadManager, serverAddress, taskSolversDirectoryRelativePath); } catch (Exception ex) { var errorText = string.Format("{0}:{1}", ex.GetType().FullName, ex.Message); if (ex.InnerException != null) { errorText += string.Format("|({0}:{1})", ex.InnerException.GetType().FullName, ex.InnerException.Message); } _logger.Error(errorText); return; } taskManager.MessageEnqueuedToSend += taskManager_MessageEnqueuedToSend; taskManager.MessageSent += taskManager_MessageSent; taskManager.MessageReceived += taskManager_MessageReceived; taskManager.MessageHandlingException += taskManager_MessageHandlingException; taskManager.MessageSendingException += taskManager_MessageSendingException; taskManager.OnStarting += taskManager_OnStarting; taskManager.OnStarted += taskManager_OnStarted; taskManager.Start(); string line; while (true) { line = Console.ReadLine().ToLower(); if (line == "stop" || line == "quit" || line == "exit") { break; } if (line == "start") { taskManager.Start(); } if (line == "running") { Console.WriteLine("TaskManager.IsRunning={0}", taskManager.IsRunning); } } }
private static void Main(string[] args) { ComputationalClient computationalClient; try { var config = ComponentConfigurationSection.LoadConfig("componentConfig", args); var serverAddress = IpEndPointParser.Parse(config.PrimaryServer.Address, config.PrimaryServer.Port); //string taskSolversDirectoryRelativePath = config.TaskSolversPath; Logger.Info("Server address: " + serverAddress); computationalClient = new ComputationalClient(serverAddress); } catch (Exception ex) { var errorText = string.Format("{0}:{1}", ex.GetType().FullName, ex.Message); if (ex.InnerException != null) { errorText += string.Format("|({0}:{1})", ex.InnerException.GetType().FullName, ex.InnerException.Message); } Logger.Error(errorText); return; } computationalClient.MessageSent += computationalClient_MessageSent; computationalClient.MessageReceived += computationalClient_MessageReceived; computationalClient.MessageSendingException += computationalClient_MessageSendingException; computationalClient.MessageHandlingException += computationalClient_MessageHandlingException; string line; while (true) { Console.WriteLine(@"commands: -stop, quit, exit -solve -solution"); line = Console.ReadLine(); if (line != null) { line = line.ToLower(); } else { continue; } switch (line) { case "stop": case "quit": case "exit": return; case "solve": Console.WriteLine(@"File name that contains the problem: "); line = Console.ReadLine(); if (line == null) { goto case "solve"; } byte[] problemData; try { using (var memoryStream = new MemoryStream()) { var formatter = new BinaryFormatter(); formatter.Serialize(memoryStream, File.ReadAllText(line, Encoding.UTF8)); problemData = memoryStream.ToArray(); } } catch (Exception) { Console.WriteLine(@"Wrong file!"); continue; } Console.WriteLine(@"Timeout in seconds: "); ulong timeout; if (!ulong.TryParse(Console.ReadLine(), out timeout)) { timeout = (ulong)TimeSpan.MaxValue.TotalSeconds; } Console.WriteLine(@"Problem type (for example 'dvrp'): "); line = Console.ReadLine(); if (line == null) { goto case "solve"; } line = line.ToLower(); if (line == "dvrp") { var problemType = "UCC.Dvrp"; computationalClient.SendSolveRequest(problemType, problemData, timeout); } break; case "solution": Console.Write(@"Enter problem id: "); ulong id; if (ulong.TryParse(Console.ReadLine(), out id)) { var solutionsMessages = computationalClient.SendSolutionRequest(id); if (solutionsMessages != null && solutionsMessages.Count > 0) { switch (solutionsMessages[0].Solutions[0].Type) { case SolutionsMessage.SolutionType.Ongoing: Console.WriteLine(@"Server is still solving the problem"); break; case SolutionsMessage.SolutionType.Partial: case SolutionsMessage.SolutionType.Final: string problem; using (var mem = new MemoryStream(solutionsMessages[0].Solutions[0].Data)) { var formatter = new BinaryFormatter(); problem = (string)formatter.Deserialize(mem); } Console.WriteLine(@"Result message: {0}", problem); break; default: throw new ArgumentOutOfRangeException(); } } } else { Console.WriteLine(@"Parsing error!"); } break; } } }