forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpools.dot
101 lines (88 loc) · 3.82 KB
/
pools.dot
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
digraph SocketPools {
subgraph cluster_legend {
label="Legend";
## The following legend is an attempt to match UML notation,
## except for template_class and Factory->object, which are
## invented for this diagram.
BaseClass;
SubClass [label="Derived Class"];
Whole;
Part;
A;
B;
Interface [label="Interface / ABC", style=dashed];
template_class [shape=diamond]; # Link will name parameter(s)
SubClass -> BaseClass [arrowhead="empty"];
SubClass -> Interface [arrowhead="empty", style=dashed];
Part -> Whole [arrowhead="diamond", label="ownership"];
Part -> Whole [arrowhead="odiamond", label="pointer"];
RefCountedPart -> Whole [arrowhead="diamond", color=red,
label="partial\nownership"];
A -> B [arrowhead="none", headlabel="?..?", taillabel="?..?",
label="association"];
// Often a "subgraph { rank=same; .. }" is used to wrap the
// below to make the generative relationship distinctive
// from the other class relationships.
Factory -> object [arrowhead=veevee];
};
ClientSocketPoolBase [shape=diamond];
ClientSocketPoolBaseHelper;
ClientSocketPoolBaseHelper_ConnectJobFactory
[style=dotted, label="ClientSocketPoolBaseHelper::\nConnectJobFactory"];
ClientSocketPoolBase_ConnectJobFactory
[style=dotted, shape=diamond,
label="ClientSocketPoolBase::\nConnectJobFactory"];
ClientSocketPoolBase_ConnectJobFactoryAdaptor
[shape=diamond,
label="ClientSocketPoolBase::\nConnectJobFactoryAdaptor"];
HigherLayeredPool [style=dotted];
LowerLayeredPool [style=dotted];
ClientSocketPool [style=dotted];
ConnectJob [style=dashed];
ConnectJob_Delegate [style=dotted, label="ConnectJob::Delegate"];
ClientSocketFactory [style=dotted];
DefaultClientSocketFactory;
TCPClientSocket;
StreamSocket [style=dotted]
Socket;
TransportSocketParams;
TransportConnectJobHelper;
TransportConnectJobFactory;
TransportConnectJob;
TransportClientSocketPool -> ClientSocketPool [arrowhead=empty];
ClientSocketPool -> LowerLayeredPool [arrowhead=empty];
ClientSocketPoolBaseHelper -> ConnectJob_Delegate [arrowhead=empty];
TransportConnectJobFactory -> ClientSocketPoolBase_ConnectJobFactory
[arrowhead=empty, label="TransportSocketParams"];
ClientSocketPoolBase_ConnectJobFactoryAdaptor ->
ClientSocketPoolBaseHelper_ConnectJobFactory
[arrowhead=empty, arrowtail=none];
TransportConnectJob -> ConnectJob [arrowhead=empty];
DefaultClientSocketFactory -> ClientSocketFactory [arrowhead=empty];
StreamSocket -> Socket [arrowhead=empty]
TCPClientSocket -> StreamSocket [arrowhead=empty]
ClientSocketPoolBaseHelper -> ClientSocketPoolBase [arrowhead=diamond];
ClientSocketPoolBase -> TransportClientSocketPool
[arrowhead=diamond, label="TransportSocketParams"];
ClientSocketPoolBase_ConnectJobFactory ->
ClientSocketPoolBase_ConnectJobFactoryAdaptor [arrowhead=diamond];
ClientSocketPoolBaseHelper_ConnectJobFactory ->
ClientSocketPoolBaseHelper [arrowhead=diamond];
TransportConnectJobHelper -> TransportConnectJob [arrowhead=diamond];
TransportSocketParams -> TransportConnectJobHelper
[arrowhead=diamond, color=red];
ConnectJob -> ConnectJob_Delegate
[dir=back, arrowhead=none, arrowtail=odiamond];
HigherLayeredPool -> ClientSocketPoolBaseHelper
[arrowhead=odiamond, taillabel="*"];
LowerLayeredPool -> ClientSocketPoolBaseHelper
[arrowhead=odiamond, taillabel="*"];
ClientSocketFactory -> ClientSocketPoolBaseHelper [arrowhead=odiamond];
subgraph {
rank=same;
ClientSocketPoolBaseHelper_ConnectJobFactory -> ConnectJob
[arrowhead=veevee];
}
ClientSocketPoolBase_ConnectJobFactory -> ConnectJob [arrowhead=veevee];
ClientSocketFactory -> TCPClientSocket [arrowhead=veevee]
}