| Index: net/docs/url_request.dot
|
| diff --git a/net/docs/url_request.dot b/net/docs/url_request.dot
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..220393498af51fe554dafcaa530455ea6d56a3fb
|
| --- /dev/null
|
| +++ b/net/docs/url_request.dot
|
| @@ -0,0 +1,186 @@
|
| +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];
|
| + }
|
| +}
|
|
|