1/* This DOT file represents the logical interaction between
2 * the events in the system and the "state" of tlsdated.
3 */
4digraph tlsdated {
5  graph[compound=true];
6
7  node[style=filled,color=lightblue];
8
9  subgraph cluster_states {
10    state_label[shape=box,style=dashed,label="States"];
11    sleep -> wake;
12    wake -> sync;
13    sync -> save;
14    save -> sleep;
15    wake -> terminate;
16    sync -> terminate;
17    save -> terminate;
18  }
19
20  subgraph cluster_wake {
21    color=purple;
22    style=filled;
23    wake_label[shape=box,style=dashed,label="Wake Events"];
24    periodic_local_clock_check -> wake;
25    periodic_network_sync -> wake;
26    random_sigterm -> wake;
27    random_route_change -> wake;
28  }
29
30  subgraph cluster_dbus {
31    dbus_label[shape=box,style=dashed,label="DBus Events"];
32    dbus-> cros_shill_manager_change -> wake;
33    dbus-> cros_shill_service_change -> wake;
34    dbus -> cros_proxy_resolved -> {proxy_ok, proxy_failed};
35    dbus -> cros_user_set_time -> save;
36            cros_user_set_time -> sync [style=dotted];
37    get_proxy -> cros_resolve_proxy -> dbus;
38    announce -> dbus;
39  }
40
41  subgraph cluster_sync {
42    sync_label[shape=box,style=dashed,label="Network Sync"];
43    sync -> get_proxy -> {proxy_ok, proxy_failed, proxy_timed_out} -> tlsdate;
44    tlsdate -> tlsdate_ok -> save;
45    tlsdate -> tlsdate_fail;
46    tlsdate_fail -> tlsdate [label="retry",style=dotted];
47    tlsdate_fail -> terminate;
48  };
49
50  subgraph cluster_save {
51    save_label[shape=box,style=dashed,label="Save to the system"];
52    save -> { synchronize_rtc, synchronize_kernel, synchronize_disk } -> { save_ok, save_fail, save_bad_time };
53    save_ok -> announce -> sleep;
54    save_fail -> terminate;
55    save_bad_time -> sleep;
56  }
57}
58
59