public async Task SendTask(int taskId) { await _locker.WaitAsync(); try { int[,] task = await ReadStoredTask(taskId); byte[] matrixSize = ByteConverter.GetByteMatrixSize(task); byte[] matrix = ByteConverter.GetBytes(task); byte[] buffer = new byte[268435456]; WorkerServerDto server = await WorkerRepository.GetServerByAssignedTaskId(taskId); matrixSize = matrixSize.AddPrefix(Bytes.byteDef["size_prefix"]); matrix = matrix.AddPrefix(Bytes.byteDef["task_prefix"]); _connectionService.SendBytes(matrixSize, server.IpAddress, server.Port); _connectionService.ReceiveBytes(ref buffer, server.IpAddress, server.Port); _connectionService.SendBytes(matrix, server.IpAddress, server.Port); _connectionService.ReceiveBytes(ref buffer, server.IpAddress, server.Port); await TaskRepository.UpdateTaskStatus(taskId, "Working"); } finally { _locker.Release(); } }
public static async Task <bool> AddNewWorkerServer(WorkerServerDto server) { using (var dbContext = new LoadManagerContext()) { if (dbContext.WorkerServers.Count(b => b.IpAddress == server.IpAddress && b.Port == server.Port) != 0) { return(true); } dbContext.WorkerServers.Add(new WorkerServer() { IpAddress = server.IpAddress, IsConnected = server.IsConnected, Port = server.Port }); return(await dbContext.SaveChangesAsync() == 1); } }