dispatchExecution method
Dispatches an execution request to an available worker supporting the required capability.
Implementation
Future<WorkerExecutionResult> dispatchExecution(
WorkerExecutionRequest request) async {
_logger.info(
'Dispatching task "${request.taskType}" (${request.taskId}) requiring capability: ${request.requiredCapability.id}');
// Find suitable healthy worker
final candidate = _workers.values.firstWhere(
(w) =>
w.workerInfo.healthStatus == WorkerHealthStatus.healthy &&
w.workerInfo.capabilities.contains(request.requiredCapability),
orElse: () => throw StateError(
'No available healthy worker found supporting capability "${request.requiredCapability.id}".',
),
);
final result = await candidate.executeTask(request);
_executionHistory.add(result);
_logger.info(
'Task "${request.taskId}" completed on worker "${candidate.workerInfo.workerId}" with status: ${result.status.label}');
return result;
}