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] |
+} |
+ |