From 549f6b20ef9c881d8c186739207be69cd8d2f7f7 Mon Sep 17 00:00:00 2001 From: Raimo Niskanen Date: Mon, 16 Apr 2018 11:07:04 +0200 Subject: Fix after feedback on 'When to use' --- lib/stdlib/doc/src/gen_statem.xml | 4 ++-- system/doc/design_principles/statem.xml | 23 +++++++++++------------ 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/lib/stdlib/doc/src/gen_statem.xml b/lib/stdlib/doc/src/gen_statem.xml index fe391b329a..28ea3fa00b 100644 --- a/lib/stdlib/doc/src/gen_statem.xml +++ b/lib/stdlib/doc/src/gen_statem.xml @@ -71,7 +71,7 @@ had and adds some really useful:

- Gathered state code + Co-located state code Arbitrary term state Event postponing Self-generated events @@ -175,7 +175,7 @@ erlang:'!' -----> Module:StateName/3 is state_functions, the state must be an atom and is used as the state callback name; see Module:StateName/3. - This gathers all code for a specific state + This co-locates all code for a specific state in one function as the gen_statem engine branches depending on state name. Note the fact that the callback function diff --git a/system/doc/design_principles/statem.xml b/system/doc/design_principles/statem.xml index c44f240098..ed6338e306 100644 --- a/system/doc/design_principles/statem.xml +++ b/system/doc/design_principles/statem.xml @@ -93,10 +93,10 @@ State(S) x Event(E) -> Actions(A), State(S')

- Gathered callback code for each state, + Co-located callback code for each state, regardless of - Event Types. - (such as calls, casts and infos) + Event Type + (such as call, cast and info) @@ -114,15 +114,14 @@ State(S) x Event(E) -> Actions(A), State(S') State Enter Calls - (callback on state entry gathered with the rest + (callback on state entry co-located with the rest of the state callback code) - Higher level timeouts - ( - State Time-Outs, + Easy-to-use timeouts + (State Time-Outs, Event Time-Outs - or + and Generic Time-outs (named time-outs)) @@ -133,14 +132,14 @@ State(S) x Event(E) -> Actions(A), State(S') gen_server.

- For simple state machines not needing these fetures + For simple state machines not needing these features gen_server works just fine. It also has got smaller call overhead, but we are talking about something like 2 vs 3.3 microseconds call roundtrip time here, so if the server callback does just a little bit more than just replying, - or if the callback is not extremely frequent, + or if the call is not extremely frequent, that difference will be hard to notice.

@@ -256,7 +255,7 @@ State(S) x Event(E) -> Actions(A), State(S') With state_functions, you are restricted to use atom-only states, and the gen_statem engine branches depending on state name for you. - This encourages the callback module to gather + This encourages the callback module to co-locate the implementation of all event actions particular to one state in the same place in the code, hence to focus on one state at the time. @@ -1686,7 +1685,7 @@ open(state_timeout, lock, Data) -> It can sometimes be beneficial to be able to generate events to your own state machine. This can be done with the - + State Transition Action {next_event,EventType,EventContent}. -- cgit v1.2.3