Пример #1
0
        private void ProcessingModuleDemontrationTaskHandler_TaskRecieve(DNet_DataContracts.Processing.Task task)
        {
            task.SearchContext.Result = "Processing result";

            task.IsFinished = true;

            _connectionInstance.SendToHub("TaskResult", task);
            //task.TestAction.Invoke();
        }
Пример #2
0
        public async Task TaskResult(DNet_DataContracts.Processing.Task task)
        {
            _logger.LogDebug($"Task with ID: \'{task.Id}\' successfully finished");
            var temp = TaskHistory.FirstOrDefault(x => x.Id == task.Id);

            TaskHistory.Remove(temp);
            TaskHistory.Add(task);
            await this.Clients.Client(task.RequestedBy.ConnectionID).SendAsync("ResultRecieve", task);
        }
Пример #3
0
        public async Task SelectTargetModule(DNet_DataContracts.Processing.Task task, MainHub hubInstance)
        {
            var modules = MainHub.Modules
                          .Where(x => task.ModuleType.Contains(x.TargedModule.ModuleType))                    //determine comparible module types
                          .OrderByDescending(x => x.TargedModule.ModulesHostSpecs.PerformancePoint).ToList(); //sort by performance points

            //var oldModuleInfo = modules.Where(x => (DateTime.Now - x.LastLoadUpdate).TotalSeconds > 30); //detect old info modules

            //await hubInstance.RequestLoadUpdate(oldModuleInfo); //Collect all load from potential modules

            //await _taskEvaluationAlghoritm.EvaluateTask(task, modules);

            //foreach(var oldModule in oldModuleInfo)
            //{
            //    oldModule.WaitTillGetNewLoadInfo();
            //}

            //modules = modules.OrderBy(x => x.Load.CPULoad).ToList();

            var module = modules.First();

            task.Executor = module.TargedModule;
            await hubInstance.SendTask(module.ConnectionId, task);
        }
Пример #4
0
 protected virtual async void OnResultRecieve(DNet_DataContracts.Processing.Task task)
 {
     _logger.LogInformation("Recieve result of task. Task ID: \'{0}\' ", task.Id);
     ResultRecieve?.Invoke(task);
 }
Пример #5
0
 protected virtual async void OnTaskRecieve(DNet_DataContracts.Processing.Task task)
 {
     _logger.LogInformation("Recieve new task. Task ID: \'{0}\' ", task.Id);
     TaskRecieve?.Invoke(task); //TODO: if there is no subscribers, create a new one or send a callback
 }
Пример #6
0
 public async Task ModuleUnsupportTaskType(DNet_DataContracts.Processing.Task task)
 {
     //Handle this
 }
Пример #7
0
 public async Task SendTask(string connectionId, DNet_DataContracts.Processing.Task task)
 {
     task.IsExecuting = true;
     TaskHistory.Add(task);
     await this.Clients.Client(connectionId).SendAsync("TaskRecieve", task);
 }
Пример #8
0
        public async Task TaskReciever(DNet_DataContracts.Processing.Task task)
        {
            task.RequestedBy = Modules.FirstOrDefault(x => x.ConnectionId == Context.ConnectionId)?.TargedModule;

            await _loadBalancerService.SelectTargetModule(task, this);
        }