Chromium Code Reviews| Index: net/docs/pools.dot |
| diff --git a/net/docs/pools.dot b/net/docs/pools.dot |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..7f37b4c19a16f965528abc03b86731436519dab0 |
| --- /dev/null |
| +++ b/net/docs/pools.dot |
| @@ -0,0 +1,89 @@ |
| +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"]; |
| + 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"]; |
| + |
| + 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]; |
| + |
| + 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]; |
|
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'
|
| + |
| + ConnectJob -> ConnectJob_Delegate |
| + [dir=back, arrowhead=none, arrowtail=odiamond]; |
| + HigherLayeredPool -> ClientSocketPoolBaseHelper |
| + [arrowhead=odiamond, taillabel="*"]; |
| + LowerLayeredPool -> ClientSocketPoolBaseHelper |
| + [arrowhead=odiamond, taillabel="*"]; |
| + |
| + subgraph { |
| + rank=same; |
| + ClientSocketPoolBaseHelper_ConnectJobFactory -> ConnectJob |
| + [arrowhead=veevee]; |
| + } |
| + ClientSocketPoolBase_ConnectJobFactory -> ConnectJob [arrowhead=veevee]; |
| +} |
| + |