summaryrefslogtreecommitdiff
path: root/crashbox-server/src/main/scala/io/crashbox/ci/Schedulers.scala
diff options
context:
space:
mode:
Diffstat (limited to 'crashbox-server/src/main/scala/io/crashbox/ci/Schedulers.scala')
-rw-r--r--crashbox-server/src/main/scala/io/crashbox/ci/Schedulers.scala10
1 files changed, 10 insertions, 0 deletions
diff --git a/crashbox-server/src/main/scala/io/crashbox/ci/Schedulers.scala b/crashbox-server/src/main/scala/io/crashbox/ci/Schedulers.scala
index 7632d95..3600fc1 100644
--- a/crashbox-server/src/main/scala/io/crashbox/ci/Schedulers.scala
+++ b/crashbox-server/src/main/scala/io/crashbox/ci/Schedulers.scala
@@ -119,6 +119,7 @@ trait Schedulers extends { self: Core with Source with Builders with Parsers =>
out: () => OutputStream,
update: BuildState => Unit
) extends SchedulerCommand
+ private case class CancelBuild(buildId: String) extends SchedulerCommand
class Scheduler extends Actor {
@@ -137,6 +138,11 @@ trait Schedulers extends { self: Core with Source with Builders with Parsers =>
runningBuilds += sb.buildId -> buildManager
}
+ case CancelBuild(id) =>
+ runningBuilds.get(id).foreach { builder =>
+ context.stop(builder)
+ }
+
case Terminated(buildManager) =>
//TODO use a more efficient data structure
runningBuilds.find(_._2 == buildManager).foreach {
@@ -157,4 +163,8 @@ trait Schedulers extends { self: Core with Source with Builders with Parsers =>
scheduler ! ScheduleBuild(buildId, url, out, update)
}
+ def cancel(buildId: String): Unit = {
+ scheduler ! CancelBuild(buildId)
+ }
+
}