OLD | NEW |
---|---|
(Empty) | |
1 digraph SocketPools { | |
2 subgraph cluster_legend { | |
3 label="Legend"; | |
4 | |
5 ## The following legend is an attempt to match UML notation, | |
6 ## except for template_class and Factory->object, which are | |
7 ## invented for this diagram. | |
8 BaseClass; | |
9 SubClass [label="Derived Class"]; | |
10 Whole; | |
11 Part; | |
12 A; | |
13 B; | |
14 Interface [label="Interface / ABC", style=dashed]; | |
15 template_class [shape=diamond]; # Link will name parameter(s) | |
16 | |
17 SubClass -> BaseClass [arrowhead="empty"]; | |
18 SubClass -> Interface [arrowhead="empty", style=dashed]; | |
19 Part -> Whole [arrowhead="diamond", label="ownership"]; | |
20 Part -> Whole [arrowhead="odiamond", label="pointer"]; | |
21 A -> B [arrowhead="none", headlabel="?..?", taillabel="?..?", | |
22 label="association"]; | |
23 // Often a "subgraph { rank=same; .. }" is used to wrap the | |
24 // below to make the generative relationship distinctive | |
25 // from the other class relationships. | |
26 Factory -> object [arrowhead=veevee]; | |
27 }; | |
28 | |
29 ClientSocketPoolBase [shape=diamond]; | |
30 ClientSocketPoolBaseHelper; | |
31 | |
32 ClientSocketPoolBaseHelper_ConnectJobFactory | |
33 [style=dotted, label="ClientSocketPoolBaseHelper::\nConnectJobFactory"]; | |
34 ClientSocketPoolBase_ConnectJobFactory | |
35 [style=dotted, shape=diamond, | |
36 label="ClientSocketPoolBase::\nConnectJobFactory"]; | |
37 ClientSocketPoolBase_ConnectJobFactoryAdaptor | |
38 [shape=diamond, | |
39 label="ClientSocketPoolBase::\nConnectJobFactoryAdaptor"]; | |
40 | |
41 HigherLayeredPool [style=dotted]; | |
42 LowerLayeredPool [style=dotted]; | |
43 ClientSocketPool [style=dotted]; | |
44 | |
45 | |
46 ConnectJob [style=dashed]; | |
47 ConnectJob_Delegate [style=dotted, label="ConnectJob::Delegate"]; | |
48 | |
49 TransportSocketParams; | |
50 TransportConnectJobHelper; | |
51 TransportConnectJobFactory; | |
52 TransportConnectJob; | |
53 | |
54 TransportClientSocketPool -> ClientSocketPool [arrowhead=empty]; | |
55 ClientSocketPool -> LowerLayeredPool [arrowhead=empty]; | |
56 ClientSocketPoolBaseHelper -> ConnectJob_Delegate [arrowhead=empty]; | |
57 TransportConnectJobFactory -> ClientSocketPoolBase_ConnectJobFactory | |
58 [arrowhead=empty, label="TransportSocketParams"]; | |
59 ClientSocketPoolBase_ConnectJobFactoryAdaptor -> | |
60 ClientSocketPoolBaseHelper_ConnectJobFactory | |
61 [arrowhead=empty, arrowtail=none]; | |
62 TransportConnectJob -> ConnectJob [arrowhead=empty]; | |
63 | |
64 ClientSocketPoolBaseHelper -> ClientSocketPoolBase [arrowhead=diamond]; | |
65 ClientSocketPoolBase -> TransportClientSocketPool | |
66 [arrowhead=diamond, label="TransportSocketParams"]; | |
67 ClientSocketPoolBase_ConnectJobFactory -> | |
68 ClientSocketPoolBase_ConnectJobFactoryAdaptor [arrowhead=diamond]; | |
69 ClientSocketPoolBaseHelper_ConnectJobFactory -> | |
70 ClientSocketPoolBaseHelper [arrowhead=diamond]; | |
71 TransportConnectJobHelper -> TransportConnectJob [arrowhead=diamond]; | |
72 TransportSocketParams -> TransportConnectJobHelper | |
73 [arrowhead=diamond, color=red]; | |
mmenke
2016/04/07 16:00:11
Why is this red? The cast?
Randy Smith (Not in Mondays)
2016/04/07 18:31:01
Whoops, sorry, put that back into the legend. It'
| |
74 | |
75 ConnectJob -> ConnectJob_Delegate | |
76 [dir=back, arrowhead=none, arrowtail=odiamond]; | |
77 HigherLayeredPool -> ClientSocketPoolBaseHelper | |
78 [arrowhead=odiamond, taillabel="*"]; | |
79 LowerLayeredPool -> ClientSocketPoolBaseHelper | |
80 [arrowhead=odiamond, taillabel="*"]; | |
81 | |
82 subgraph { | |
83 rank=same; | |
84 ClientSocketPoolBaseHelper_ConnectJobFactory -> ConnectJob | |
85 [arrowhead=veevee]; | |
86 } | |
87 ClientSocketPoolBase_ConnectJobFactory -> ConnectJob [arrowhead=veevee]; | |
88 } | |
89 | |
OLD | NEW |