| Index: net/docs/pools.dot
|
| diff --git a/net/docs/pools.dot b/net/docs/pools.dot
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..271d98de138f6f4c21f838ee5d8546bdc8e348aa
|
| --- /dev/null
|
| +++ b/net/docs/pools.dot
|
| @@ -0,0 +1,101 @@
|
| +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]
|
| +}
|
| +
|
|
|