diff options
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.scala | 10 |
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) + } + } |