mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 14:26:09 +03:00
102 lines
3.8 KiB
Plaintext
102 lines
3.8 KiB
Plaintext
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]
|
|
}
|
|
|