2021-09-21 17:49:21 +02:00
|
|
|
strict digraph state {
|
2021-09-21 20:17:12 +02:00
|
|
|
rank = 0
|
|
|
|
subgraph "cluster_internal_state" {
|
|
|
|
rank = 1
|
|
|
|
ctr = applied
|
|
|
|
start
|
|
|
|
[shape=doublecircle, label="BFFH"]
|
|
|
|
created
|
|
|
|
[label="Machine object created"];
|
|
|
|
start -> created;
|
|
|
|
|
|
|
|
created -> attach
|
|
|
|
[label="New state or loaded from disk"];
|
|
|
|
|
|
|
|
attach
|
|
|
|
[label="Attach actor", shape=box];
|
|
|
|
|
|
|
|
unapplied
|
|
|
|
[label="Unapplied"];
|
|
|
|
applied
|
|
|
|
[label="Applied"];
|
|
|
|
verified
|
|
|
|
[label="Verified"];
|
|
|
|
|
|
|
|
wait_apply
|
|
|
|
[label="Wait ∀ Actors", shape=box]
|
|
|
|
wait_verify
|
|
|
|
[label="Wait ∀ Actors", shape=box]
|
|
|
|
|
|
|
|
unapplied -> wait_apply -> applied;
|
|
|
|
applied -> wait_verify -> verified;
|
|
|
|
|
|
|
|
applied -> unapplied
|
|
|
|
[label="statechange received"];
|
|
|
|
verified -> unapplied
|
|
|
|
[label="statechange received"];
|
|
|
|
unapplied -> unapplied
|
|
|
|
[label="statechange received"];
|
|
|
|
|
|
|
|
unapplied -> attach -> unapplied;
|
|
|
|
applied -> attach -> unapplied;
|
|
|
|
verified -> attach -> unapplied;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
subgraph "cluster_actor" {
|
|
|
|
rank = 1
|
|
|
|
center = actor_applied
|
|
|
|
actor_start
|
|
|
|
[shape=doublecircle, label="Actor"];
|
2021-09-21 17:49:21 +02:00
|
|
|
actor_fresh
|
|
|
|
[label="Actor was just constructed"];
|
2021-09-21 20:17:12 +02:00
|
|
|
actor_start -> actor_fresh;
|
|
|
|
|
2021-09-21 17:49:21 +02:00
|
|
|
actor_attached
|
2021-09-21 20:17:12 +02:00
|
|
|
[label="Attached"];
|
2021-09-21 17:49:21 +02:00
|
|
|
actor_unapplied
|
2021-09-21 20:17:12 +02:00
|
|
|
[label="Unapplied"];
|
2021-09-21 17:49:21 +02:00
|
|
|
actor_applied
|
2021-09-21 20:17:12 +02:00
|
|
|
[label="Applied"];
|
2021-09-21 17:49:21 +02:00
|
|
|
actor_verified
|
2021-09-21 20:17:12 +02:00
|
|
|
[label="Verified"];
|
|
|
|
|
|
|
|
wait_initial
|
|
|
|
[label="Recv", shape=box];
|
|
|
|
wait_state
|
|
|
|
[label="Recv", shape=box];
|
|
|
|
|
|
|
|
actor_fresh -> wait_initial -> actor_attached;
|
2021-09-21 17:49:21 +02:00
|
|
|
|
|
|
|
actor_attached -> actor_applied
|
2021-09-21 20:17:12 +02:00
|
|
|
[label="initialize/apply"];
|
2021-09-21 17:49:21 +02:00
|
|
|
actor_unapplied -> actor_applied
|
2021-09-21 20:17:12 +02:00
|
|
|
[label="apply"];
|
2021-09-21 17:49:21 +02:00
|
|
|
actor_applied -> actor_verified
|
2021-09-21 20:17:12 +02:00
|
|
|
[label="verify"];
|
|
|
|
|
|
|
|
actor_unapplied -> wait_state;
|
|
|
|
actor_applied -> wait_state;
|
|
|
|
actor_verified -> wait_state;
|
|
|
|
|
|
|
|
wait_state -> actor_unapplied;
|
2021-09-21 17:49:21 +02:00
|
|
|
}
|
|
|
|
|
2021-09-21 20:17:12 +02:00
|
|
|
attach -> wait_initial
|
|
|
|
[label="Send initial state to that actor", style=dotted]
|
|
|
|
unapplied -> wait_state
|
|
|
|
[label="Send new state to all actors", style=dotted];
|
|
|
|
actor_applied -> wait_apply
|
|
|
|
[label="Confirm apply", style=dotted];
|
|
|
|
actor_verified -> wait_verify
|
|
|
|
[label="Confirm verify", style=dotted];
|
2021-09-21 17:49:21 +02:00
|
|
|
}
|