private void ProcessingModuleDemontrationTaskHandler_TaskRecieve(DNet_DataContracts.Processing.Task task) { task.SearchContext.Result = "Processing result"; task.IsFinished = true; _connectionInstance.SendToHub("TaskResult", task); //task.TestAction.Invoke(); }
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); }
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); }
protected virtual async void OnResultRecieve(DNet_DataContracts.Processing.Task task) { _logger.LogInformation("Recieve result of task. Task ID: \'{0}\' ", task.Id); ResultRecieve?.Invoke(task); }
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 }
public async Task ModuleUnsupportTaskType(DNet_DataContracts.Processing.Task task) { //Handle this }
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); }
public async Task TaskReciever(DNet_DataContracts.Processing.Task task) { task.RequestedBy = Modules.FirstOrDefault(x => x.ConnectionId == Context.ConnectionId)?.TargedModule; await _loadBalancerService.SelectTargetModule(task, this); }