summaryrefslogtreecommitdiff
path: root/crashbox-server/src/main/scala/io/crashbox/ci/Schedulers.scala
diff options
context:
space:
mode:
authorJakob Odersky <jakob@odersky.com>2017-03-07 20:38:47 -0800
committerJakob Odersky <jakob@odersky.com>2017-03-07 20:38:47 -0800
commit204376d7ede8f630d1f58aa5fea86f01f951ba8d (patch)
tree0f0f01addd0a389633cda82c2d2e4a19df37a97f /crashbox-server/src/main/scala/io/crashbox/ci/Schedulers.scala
parentf9d26e8f9e46144605d6f8450953f8a5f99001ff (diff)
downloadcrashbox-ci-204376d7ede8f630d1f58aa5fea86f01f951ba8d.tar.gz
crashbox-ci-204376d7ede8f630d1f58aa5fea86f01f951ba8d.tar.bz2
crashbox-ci-204376d7ede8f630d1f58aa5fea86f01f951ba8d.zip
Implement cancellation
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)
+ }
+
}