Supervisor<G extends Grunt> constructor
Supervisor<G extends Grunt> ({
- required Type gruntType,
- required DuplexChannel grunt,
Implementation
Supervisor({required this.gruntType, required this.grunt}) {
_sub = grunt.inbound.listen((DecodedMessage event) {
log.info(
" got message from worker: ${event.messageCodeInfo}: ${event.payload?.runtimeType}");
switch (event.messageCode) {
case GruntMessages.kReady:
if (!_ready.isCompleted) {
_ready.complete();
}
grunt.send(SupervisorMessages.kAck);
break;
case GruntMessages.kStatusUpdate:
if (!_ready.isCompleted) {
_ready.complete();
}
var workStatus = WorkStatus.fromJson(event.payload);
if (workStatus != null) {
log.info(" * details: ${workStatus.message}");
if (workStatus.percentComplete != null) {
log.info(
" * pct: ${(workStatus.percentComplete! * 100).toInt() / 100}%");
}
if (workStatus.error != null) {
log.info(" * error: ${workStatus.error}");
}
log.info(" ---------------------------------");
_status = _status + workStatus;
_ctrl.add(_status);
}
break;
default:
log.severe("Invalid message: ${event.messageCode}");
}
});
}