#2644 - doc FSM.NullFunction and when-requirements

This commit is contained in:
Roland 2012-11-28 15:43:42 +01:00
parent cda2c2b62a
commit 5cf2e7f8fd
2 changed files with 21 additions and 0 deletions

View file

@ -189,6 +189,15 @@ class FSMDocSpec extends MyFavoriteTestFrameWorkPlusAkkaTestKit {
} }
//#fsm-code-elided //#fsm-code-elided
"demonstrate NullFunction" in {
class A extends Actor with FSM[Int, Null] {
val SomeState = 0
//#NullFunction
when(SomeState)(FSM.NullFunction)
//#NullFunction
}
}
"batch correctly" in { "batch correctly" in {
val buncher = system.actorOf(Props(new Buncher)) val buncher = system.actorOf(Props(new Buncher))
buncher ! SetTarget(testActor) buncher ! SetTarget(testActor)

View file

@ -179,6 +179,18 @@ demonstrated below:
The :class:`Event(msg: Any, data: D)` case class is parameterized with the data The :class:`Event(msg: Any, data: D)` case class is parameterized with the data
type held by the FSM for convenient pattern matching. type held by the FSM for convenient pattern matching.
.. warning::
It is required that you define handlers for each of the possible FSM states,
otherwise there will be failures when trying to switch to undeclared states.
It is recommended practice to declare the states as objects extending a
sealed trait and then verify that there is a ``when`` clause for each of the
states. If you want to leave the handling of a state “unhandled” (more below),
it still needs to be declared like this:
.. includecode:: code/docs/actor/FSMDocSpec.scala#NullFunction
Defining the Initial State Defining the Initial State
-------------------------- --------------------------