enqueueBuild method
void
enqueueBuild(
- int step
)
Implementation
void enqueueBuild(int step) async {
if (!mutex.isLocked) {
lastBuild = DateTime.now();
await mutex.protect(() async {
enqueuedBuild = step;
while (enqueuedBuild != null) {
var nextStep = enqueuedBuild!;
enqueuedBuild = null;
currentBuild = nextStep;
cancellationToken = CancellationToken();
try {
await performBuild(nextStep, cancellationToken);
} catch (error, stack) {
logger.cln().err("Failed to rebuild: $error\n$stack");
}
}
});
return;
}
if (DateTime.now().difference(lastBuild).inMilliseconds.abs() < 250) {
return;
}
if (enqueuedBuild == null) {
enqueuedBuild = step;
} else {
enqueuedBuild = min(step, enqueuedBuild!);
}
if (enqueuedBuild == currentBuild) {
// Interrupt
logger.cln().info("Interrupting build");
cancelController.add(enqueuedBuild!);
cancellationToken.cancel();
}
}