summaryrefslogtreecommitdiff
path: root/docs/state-machines.txt
blob: a762aa9dca7a108b3355d38811296bba6e5a2d03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

Proposal for the loading state machines


ViewFrame state machine

States are:


E: Empty (the initial state right after construction)
A: Activating (waiting for component to be activated)
N: No load_location request (a view component has been loaded, but no load_location request has been sent yet)
W: Waiting (waiting for a response after a load request)
U: Underway (the component has responded and the load is assumed underway)
L: Loaded (the component has finished loading successfully)
F: Failed (there was a fatal error somewhere)

X: this stimulus is guaranteed impossible in this state


Things I was unsure about:

?2: Once a load has failed at some stage, should it be OK for Nautilus
to try to make further calls of any kind?

Missing:

1) "Component stops responding" stimulus.
2) Distinction of failure loading vs. crash of the component.

Note:

A "*" means that this is illegal but non-fatal, so we want to use g_warning.


                                            State Transition Chart


                                                             Initial State

                                                  |  E  |  A  |  N  |  W  |  U  |  L  |  F  |
          ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
          successful load_client call             |  A  |  X  |  X  |  X  |  X  |  X  | ?2  |
          ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
          unsuccessful load_client call           |  F  |  X  |  X  |  X  |  X  |  X  | ?2  |
          ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
	  successful activated_component call     |  X  |  N  |  X  |  X  |  X  |  X  | ?2  |
	  ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
	  unsuccessful activated_component call   |  X  |  F  |  X  |  X  |  X  |  X  | ?2  |
	  ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
	  stop activation                         |  E  |  E  |  X  |  X  |  X  |  X  | ?2  |
	  ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
          nautilus_view_frame_load_location call  |  X  |  F  |  W  |  W  |  W  |  W  | ?2  |
          ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
          open_location call from component       |  X  |  X  |  N* |  U  |  U  |  L  |  X  |
          ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
          open_location_in_new_window             |  X  |  X  |  N* |  U  |  U  |  L  |  X  |
          ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
          report_location_change                  |  X  |  X  |  N* |  U  |  U  |  U  |  X  |
S         ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
t         report_selection_change                 |  X  |  X  |  N* |  U  |  U  |  L  |  X  |
i         ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
m         report_status                           |  X  |  X  |  N* |  U  |  U  |  L  |  X  |
u         ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
l         report_load_underway                    |  X  |  X  |  N* |  U  |  U  |  U  |  X  |
u         ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
s         report_load_progress                    |  X  |  X  |  N* |  U  |  U  |  U  |  X  |
          ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
          report_load_complete                    |  X  |  X  |  N* |  L  |  L  |  L  |  X  |
          ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
          report_load_failed                      |  X  |  X  |  N* |  F  |  F  |  F  |  X  |
          ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
          set_title                               |  X  |  X  |  N* |  U  |  U  |  L  |  X  |
          ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|
          user hits cancel on timer dialog        |  X  |  X  |  X  |  F  |  X  |  X  |  X  |
          ----------------------------------------|-----|-----|-----|-----|-----|-----|-----|