mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 14:26:09 +03:00
187 lines
6.1 KiB
Plaintext
187 lines
6.1 KiB
Plaintext
|
digraph URLRequestRoot {
|
||
|
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];
|
||
|
};
|
||
|
|
||
|
## URLRequest, URLRequestJob, and subclasses
|
||
|
URLRequestContext;
|
||
|
URLRequest;
|
||
|
URLRequestJob [style=dashed];
|
||
|
URLRequestJob_Others [label="...other job types..."];
|
||
|
URLRequestHttpJob;
|
||
|
Filter;
|
||
|
|
||
|
{URLRequestHttpJob, URLRequestJob_Others} -> URLRequestJob
|
||
|
[arrowhead="empty"];
|
||
|
|
||
|
URLRequestJob -> URLRequest [arrowhead="diamond"];
|
||
|
Filter -> URLRequestJob [arrowhead="diamond"];
|
||
|
Filter -> Filter [arrowhead="diamond", taillabel="0..1"];
|
||
|
|
||
|
subgraph {
|
||
|
rank=same;
|
||
|
URLRequestContext -> URLRequest [arrowhead=veevee];
|
||
|
}
|
||
|
subgraph {
|
||
|
rank=same;
|
||
|
URLRequestHttpJob -> Filter [arrowhead=veevee];
|
||
|
}
|
||
|
|
||
|
|
||
|
## HttpTransaction, subclasses, and generative classes.
|
||
|
HttpTransactionFactory;
|
||
|
HttpCache;
|
||
|
HttpNetworkLayer;
|
||
|
HttpTransaction [style=dashed];
|
||
|
HttpCache_Transaction [label="HttpCache::Transaction"];
|
||
|
HttpNetworkTransaction;
|
||
|
|
||
|
{ HttpNetworkTransaction, HttpCache_Transaction } -> HttpTransaction
|
||
|
[style=dashed, arrowhead="empty"];
|
||
|
{ HttpNetworkLayer, HttpCache } -> HttpTransactionFactory
|
||
|
[arrowhead=empty, style=dashed];
|
||
|
|
||
|
HttpTransaction -> HttpCache_Transaction [arrowhead=diamond];
|
||
|
HttpTransaction -> URLRequestHttpJob [arrowhead="diamond"]
|
||
|
|
||
|
subgraph {
|
||
|
rank=same;
|
||
|
HttpCache -> HttpCache_Transaction [arrowhead=veevee];
|
||
|
}
|
||
|
subgraph {
|
||
|
rank=same;
|
||
|
HttpTransactionFactory -> HttpTransaction [arrowhead=veevee];
|
||
|
}
|
||
|
subgraph {
|
||
|
rank=same;
|
||
|
HttpNetworkLayer -> HttpNetworkTransaction [arrowhead=veevee];
|
||
|
}
|
||
|
|
||
|
## HttpStreamFactory and related.
|
||
|
HttpStreamFactoryImpl;
|
||
|
HttpStreamRequest [style=dashed];
|
||
|
HttpStream [style=dashed];
|
||
|
HttpStreamFactoryImpl_Request [label="HttpStreamFactoryImpl::Request"];
|
||
|
HttpStreamFactoryImpl_Job [label="HttpStreamFactoryImpl::Job"];
|
||
|
HttpStreamRequest_Delegate
|
||
|
[label="HttpStreamRequest::Delegate",style=dashed];
|
||
|
HttpBasicStream;
|
||
|
QuicHttpStream;
|
||
|
SpdyHttpStream;
|
||
|
HttpBasicState;
|
||
|
|
||
|
HttpNetworkTransaction -> HttpStreamRequest_Delegate
|
||
|
[style=dashed, arrowhead="empty"];
|
||
|
HttpStreamFactoryImpl_Request -> HttpStreamRequest
|
||
|
[style=dashed, arrowhead="empty"];
|
||
|
{ HttpBasicStream, QuicHttpStream, SpdyHttpStream } -> HttpStream
|
||
|
[style=dashed, arrowhead="empty"];
|
||
|
|
||
|
HttpStreamRequest -> HttpNetworkTransaction [arrowhead="diamond"];
|
||
|
HttpStream -> HttpNetworkTransaction [arrowhead="diamond"];
|
||
|
HttpBasicState -> HttpBasicStream [arrowhead=diamond];
|
||
|
HttpStreamFactoryImpl_Job -> HttpStreamFactoryImpl_Request
|
||
|
[arrowhead="diamond",taillabel="1..*"];
|
||
|
|
||
|
HttpStreamRequest_Delegate -> HttpStreamFactoryImpl_Request
|
||
|
[arrowhead=odiamond];
|
||
|
HttpStreamFactoryImpl_Job -> HttpStreamFactoryImpl_Job
|
||
|
[arrowhead=odiamond, label="blocking_job_\nwaiting_job_"];
|
||
|
|
||
|
subgraph {
|
||
|
rank=same;
|
||
|
HttpStreamFactoryImpl -> HttpStreamRequest [arrowhead=veevee];
|
||
|
}
|
||
|
subgraph {
|
||
|
rank=same;
|
||
|
HttpStreamRequest -> HttpStream [arrowhead=veevee];
|
||
|
}
|
||
|
|
||
|
## ClientSocketHandle and socket pools.
|
||
|
ClientSocketPool [style=dashed];
|
||
|
TransportClientSocketPool;
|
||
|
SSLClientSocketPool;
|
||
|
ClientSocketPool_Others [label="...others..."];
|
||
|
ClientSocketPoolBase [label="ClientSocketPoolBase", shape=diamond];
|
||
|
ClientSocketPoolBaseHelper;
|
||
|
|
||
|
ConnectJobFactory;
|
||
|
ConnectJob [style=dashed];
|
||
|
TransportConnectJob;
|
||
|
SSLConnectJob;
|
||
|
ConnectJob_Others [label="...other connect job types..."];
|
||
|
ConnectJob_Delegate [label="ConnectJob::Delegate",style=dashed];
|
||
|
|
||
|
StreamSocket [style=dashed];
|
||
|
TCPClientSocket;
|
||
|
StreamSocket_Others [label="...other socket types..."];
|
||
|
|
||
|
TransportConnectJobHelper;
|
||
|
SingleRequestHostResolver;
|
||
|
|
||
|
{ SSLClientSocketPool, TransportClientSocketPool,
|
||
|
ClientSocketPool_Others} -> ClientSocketPool
|
||
|
[style=dashed, arrowhead=empty];
|
||
|
ClientSocketPoolBaseHelper -> ConnectJob_Delegate
|
||
|
[arrowhead=empty, style=dashed];
|
||
|
StreamSocket -> Socket [arrowhead=empty, style=dashed];
|
||
|
{ TCPClientSocket, StreamSocket_Others } -> StreamSocket
|
||
|
[arrowhead=empty, style=dashed];
|
||
|
{SSLConnectJob, TransportConnectJob, ConnectJob_Others} -> ConnectJob
|
||
|
[style=dashed, arrowhead=empty];
|
||
|
|
||
|
ClientSocketHandle -> HttpStreamFactoryImpl_Job [arrowhead="diamond"];
|
||
|
ClientSocketHandle -> HttpBasicState [arrowhead="diamond"];
|
||
|
ClientSocketPoolBaseHelper -> ClientSocketPoolBase [arrowhead=diamond];
|
||
|
ClientSocketPoolBase -> TransportClientSocketPool
|
||
|
[arrowhead=diamond, label=TransportSocketParams];
|
||
|
ClientSocketPoolBase -> SSLClientSocketPool
|
||
|
[arrowhead=diamond, label=SSLSocketParams];
|
||
|
|
||
|
StreamSocket -> ClientSocketHandle [arrowhead=diamond];
|
||
|
ConnectJobFactory -> ClientSocketPoolBase [arrowhead=diamond];
|
||
|
StreamSocket -> ConnectJob [arrowhead=diamond];
|
||
|
SingleRequestHostResolver -> TransportConnectJobHelper
|
||
|
[arrowhead=diamond];
|
||
|
TransportConnectJobHelper -> TransportConnectJob [arrowhead=diamond];
|
||
|
|
||
|
ClientSocketPool -> ClientSocketHandle [arrowhead=odiamond];
|
||
|
ConnectJob_Delegate -> ConnectJob [arrowhead=odiamond];
|
||
|
|
||
|
subgraph {
|
||
|
rank=same;
|
||
|
ConnectJobFactory -> ConnectJob [arrowhead=veevee];
|
||
|
}
|
||
|
subgraph {
|
||
|
rank=same;
|
||
|
HttpStreamFactoryImpl_Job -> ClientSocketHandle [arrowhead=veevee];
|
||
|
}
|
||
|
subgraph {
|
||
|
rank=same;
|
||
|
TransportConnectJob -> StreamSocket [arrowhead=veevee];
|
||
|
}
|
||
|
}
|