Chromium Code Reviews| 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..2b7c29f4fd8afc2a8dbe40b3076800cd56e0f195 |
| --- /dev/null |
| +++ b/net/docs/url_request.dot |
| @@ -0,0 +1,185 @@ |
| +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; |
| + URLRequestJobManager; |
|
mmenke
2016/04/07 16:00:11
Suggest removing this one - we want to get rid of
Randy Smith (Not in Mondays)
2016/04/07 18:31:02
Done.
|
| + URLRequest; |
| + URLRequestJob [style=dashed]; |
| + URLRequestJob_Others [label="...others..."]; |
|
mmenke
2016/04/07 16:00:11
Don't suppose we could squeeze in a more complete
Randy Smith (Not in Mondays)
2016/04/07 18:31:02
Doesn't seem to hurt the diagram too much; done.
mmenke
2016/04/07 20:02:25
I think it makes sense to make the other other(s)
Randy Smith (Not in Mondays)
2016/04/07 21:37:14
Done.
|
| + URLRequestHttpJob; |
|
mmenke
2016/04/07 16:00:11
There's no link between the URLRequestHttpJob and
Randy Smith (Not in Mondays)
2016/04/07 18:31:02
Yeah. This diagram is a (semi- :-}) static object
|
| + 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; |
| + URLRequestJobManager -> URLRequestJob [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; |
| + HttpTransaction_Others [label="...others..."]; |
|
mmenke
2016/04/07 16:00:11
The only others here are dev tool's network simula
Randy Smith (Not in Mondays)
2016/04/07 18:31:02
Done.
|
| + |
| + { HttpNetworkTransaction, HttpCache_Transaction, |
| + HttpTransaction_Others } -> 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"]; |
|
mmenke
2016/04/07 16:00:11
When we create two jobs, they talk to each other (
Randy Smith (Not in Mondays)
2016/04/07 18:31:02
I've put in an associative link labeled with the d
|
| + HttpStreamRequest_Delegate |
| + [label="HttpStreamRequest::Delegate",style=dashed]; |
| + HttpBasicStream; |
| + QuicHttpStream; |
| + SpdyHttpStream; |
| + HttpBasicState; |
|
mmenke
2016/04/07 16:00:11
Wonder if it's even worth including this one.
Randy Smith (Not in Mondays)
2016/04/07 18:31:02
Well, on the one hand it doesn't really add much,
mmenke
2016/04/07 20:02:25
My thinking here is that we are (Are should be) fo
mmenke
2016/04/07 20:03:17
Are should be == Or should be
Randy Smith (Not in Mondays)
2016/04/07 21:37:14
Understood and agreed with the adding noise; I'm j
|
| + |
| + 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]; |
| + |
| + 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="...others..."]; |
| + ConnectJob_Delegate [label="ConnectJob::Delegate",style=dashed]; |
| + |
| + StreamSocket [style=dashed]; |
| + TCPClientSocket; |
|
mmenke
2016/04/07 16:00:11
Seems a little weird that you have nothing creatin
Randy Smith (Not in Mondays)
2016/04/07 18:31:02
More lack of knowledge when I originally did the d
|
| + StreamSocket_Others [label="...others..."]; |
| + |
| + 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]; |
|
mmenke
2016/04/07 16:00:11
SSLClientSocketPool should have this same relation
Randy Smith (Not in Mondays)
2016/04/07 18:31:02
Done.
(I had thought of this diagram as doing a
|
| + |
| + 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; |
| + TransportClientSocketPool -> ClientSocketHandle [arrowhead=veevee]; |
|
mmenke
2016/04/07 16:00:11
This one is incorrect - ClientSocketHandles are cr
Randy Smith (Not in Mondays)
2016/04/07 18:31:02
So one think I've realized in doing these diagrams
mmenke
2016/04/07 20:02:25
I agree the ownership is really weird here. It ma
mmenke
2016/04/07 20:04:35
By changing creation here I mean in the code, not
|
| + } |
| +} |