summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2019-10-13 18:14:21 +0800
committerLi Haoyi <haoyi.sg@gmail.com>2019-10-13 18:14:21 +0800
commitf196a0b621a2afa45c577bd2641331152691b134 (patch)
tree880a51b9071d90122b88166de8d53914c7f20252
parent39d51e36cd5f2058966dd6200609d8fb9dac92ec (diff)
downloadcask-f196a0b621a2afa45c577bd2641331152691b134.tar.gz
cask-f196a0b621a2afa45c577bd2641331152691b134.tar.bz2
cask-f196a0b621a2afa45c577bd2641331152691b134.zip
Add a simple `StateMachineActor` class
-rw-r--r--cask/util/src/cask/util/BatchActor.scala11
1 files changed, 10 insertions, 1 deletions
diff --git a/cask/util/src/cask/util/BatchActor.scala b/cask/util/src/cask/util/BatchActor.scala
index 26f1c14..fd4861e 100644
--- a/cask/util/src/cask/util/BatchActor.scala
+++ b/cask/util/src/cask/util/BatchActor.scala
@@ -34,4 +34,13 @@ abstract class BatchActor[T]()(implicit ec: ExecutionContext,
}
}
}
-} \ No newline at end of file
+}
+
+abstract class StateMachine[T]()
+ (implicit ec: ExecutionContext,
+ log: Logger) {
+ class State(val run: T => State)
+ protected[this] def initialState: State
+ protected[this] var state: State = initialState
+ def run(items: Seq[T]): Unit = items.foreach{i => state = state.run(i)}
+}