123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- 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;
- TransportClientSocket [style=dotted]
- 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 -> TransportClientSocket [arrowhead=empty]
- TransportClientSocket -> 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]
- }
|