private MessageFromServerToClient HandleRequestForJob([NotNull] MessageFromClientToServer req)
        {
            if (OpenTasks.IsEmpty)
            {
                return(new MessageFromServerToClient(ServerResponseEnum.NothingToDo, req.TaskGuid));
            }

            bool success = OpenTasks.TryDequeue(out var task);

            if (success)
            {
                SaveExecuteHelper.Get().SaveExecuteWithWait(() => ActiveTasks.Add(task));
                task.Client         = req.ClientName;
                task.ExecutionStart = DateTime.Now;
                var answer = new MessageFromServerToClient(ServerResponseEnum.ServeCalcJob, task.Guid);
                answer.HouseJobStr = File.ReadAllText(task.OriginalJsonFilePath ??
                                                      throw new DistSimException("Jsonpath was not found: " + task.OriginalJsonFilePath));
                FileInfo fi = new FileInfo(task.OriginalJsonFilePath);
                answer.OriginalFileName = fi.Name;
                answer.LpgFiles         = InitalizeLpgFiles(false);
                return(answer);
            }

            return(new MessageFromServerToClient(ServerResponseEnum.NothingToDo, req.TaskGuid));
        }
Esempio n. 2
0
 void Activate(System.Type taskType)
 {
     if (!ActiveTasks.ContainsKey(taskType))
     {
         ActiveTasks.Add(taskType, (T)tasks[taskType]);
     }
 }
Esempio n. 3
0
 public void ActivateAll()
 {
     ActiveTasks.Clear();
     foreach (var task in tasks)
     {
         ActiveTasks.Add(task.Key, task.Value as T);
     }
 }
Esempio n. 4
0
 public void AddTask(Task task)
 {
     System.Type taskType = task.GetType();
     if (tasks.ContainsKey(taskType))
     {
         throw new System.Exception("The task list '" + this + "' already contains the task '" + task + "'");
     }
     tasks.Add(taskType, task);
     ActiveTasks.Add(taskType, task as T);
 }
Esempio n. 5
0
        private void RunTask(ThreadTask task)
        {
            task.OnCompletedTask += Task_OnCompletedTask;
            task.OnErrorTask     += Task_OnErrorTask;
            ActiveTasks.Add(task);
            QueuingTasks.Remove(task);
            var thread = new System.Threading.Thread(() =>
            {
                System.Threading.Thread.Sleep(task.DelayMilliseconds);
                task.Run();
            });

            thread.Start();
            OnStartedTask?.Invoke(this, new ThreadManagerScheduledTaskEventArgs(task));
        }