Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(616)

Side by Side Diff: net/docs/url_request.dot

Issue 1859793002: Include class relationship diagrams in network stack documentation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleaned up and regularized .dot files. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 digraph URLRequestRoot {
2 subgraph cluster_legend {
3 label="Legend";
4
5 ## The following legend is an attempt to match UML notation,
6 ## except for template_class and Factory->object, which are
7 ## invented for this diagram.
8 BaseClass;
9 SubClass [label="Derived Class"];
10 Whole;
11 Part;
12 A;
13 B;
14 Interface [label="Interface / ABC", style=dashed];
15 template_class [shape=diamond]; # Link will name parameter(s)
16
17 SubClass -> BaseClass [arrowhead="empty"];
18 SubClass -> Interface [arrowhead="empty", style=dashed];
19 Part -> Whole [arrowhead="diamond", label="ownership"];
20 Part -> Whole [arrowhead="odiamond", label="pointer"];
21 A -> B [arrowhead="none", headlabel="?..?", taillabel="?..?",
22 label="association"];
23 // Often a "subgraph { rank=same; .. }" is used to wrap the
24 // below to make the generative relationship distinctive
25 // from the other class relationships.
26 Factory -> object [arrowhead=veevee];
27 };
28
29 ## URLRequest, URLRequestJob, and subclasses
30 URLRequestContext;
31 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.
32 URLRequest;
33 URLRequestJob [style=dashed];
34 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.
35 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
36 Filter;
37
38 {URLRequestHttpJob, URLRequestJob_Others} -> URLRequestJob
39 [arrowhead="empty"];
40
41 URLRequestJob -> URLRequest [arrowhead="diamond"];
42 Filter -> URLRequestJob [arrowhead="diamond"];
43 Filter -> Filter [arrowhead="diamond", taillabel="0..1"];
44
45 subgraph {
46 rank=same;
47 URLRequestContext -> URLRequest [arrowhead=veevee];
48 }
49 subgraph {
50 rank=same;
51 URLRequestJobManager -> URLRequestJob [arrowhead=veevee];
52 }
53 subgraph {
54 rank=same;
55 URLRequestHttpJob -> Filter [arrowhead=veevee];
56 }
57
58
59 ## HttpTransaction, subclasses, and generative classes.
60 HttpTransactionFactory;
61 HttpCache;
62 HttpNetworkLayer;
63 HttpTransaction [style=dashed];
64 HttpCache_Transaction [label="HttpCache::Transaction"];
65 HttpNetworkTransaction;
66 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.
67
68 { HttpNetworkTransaction, HttpCache_Transaction,
69 HttpTransaction_Others } -> HttpTransaction
70 [style=dashed, arrowhead="empty"];
71 { HttpNetworkLayer, HttpCache } -> HttpTransactionFactory
72 [arrowhead=empty, style=dashed];
73
74 HttpTransaction -> HttpCache_Transaction [arrowhead=diamond];
75 HttpTransaction -> URLRequestHttpJob [arrowhead="diamond"]
76
77 subgraph {
78 rank=same;
79 HttpCache -> HttpCache_Transaction [arrowhead=veevee];
80 }
81 subgraph {
82 rank=same;
83 HttpTransactionFactory -> HttpTransaction [arrowhead=veevee];
84 }
85 subgraph {
86 rank=same;
87 HttpNetworkLayer -> HttpNetworkTransaction [arrowhead=veevee];
88 }
89
90 ## HttpStreamFactory and related.
91 HttpStreamFactoryImpl;
92 HttpStreamRequest [style=dashed];
93 HttpStream [style=dashed];
94 HttpStreamFactoryImpl_Request [label="HttpStreamFactoryImpl::Request"];
95 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
96 HttpStreamRequest_Delegate
97 [label="HttpStreamRequest::Delegate",style=dashed];
98 HttpBasicStream;
99 QuicHttpStream;
100 SpdyHttpStream;
101 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
102
103 HttpNetworkTransaction -> HttpStreamRequest_Delegate
104 [style=dashed, arrowhead="empty"];
105 HttpStreamFactoryImpl_Request -> HttpStreamRequest
106 [style=dashed, arrowhead="empty"];
107 { HttpBasicStream, QuicHttpStream, SpdyHttpStream } -> HttpStream
108 [style=dashed, arrowhead="empty"];
109
110 HttpStreamRequest -> HttpNetworkTransaction [arrowhead="diamond"];
111 HttpStream -> HttpNetworkTransaction [arrowhead="diamond"];
112 HttpBasicState -> HttpBasicStream [arrowhead=diamond];
113 HttpStreamFactoryImpl_Job -> HttpStreamFactoryImpl_Request
114 [arrowhead="diamond",taillabel="1..*"];
115
116 HttpStreamRequest_Delegate -> HttpStreamFactoryImpl_Request
117 [arrowhead=odiamond];
118
119 subgraph {
120 rank=same;
121 HttpStreamFactoryImpl -> HttpStreamRequest [arrowhead=veevee];
122 }
123 subgraph {
124 rank=same;
125 HttpStreamRequest -> HttpStream [arrowhead=veevee];
126 }
127
128 ## ClientSocketHandle and socket pools.
129 ClientSocketPool [style=dashed];
130 TransportClientSocketPool;
131 SSLClientSocketPool;
132 ClientSocketPool_Others [label="...others..."];
133 ClientSocketPoolBase [label="ClientSocketPoolBase", shape=diamond];
134 ClientSocketPoolBaseHelper;
135
136 ConnectJobFactory;
137 ConnectJob [style=dashed];
138 TransportConnectJob;
139 SSLConnectJob;
140 ConnectJob_Others [label="...others..."];
141 ConnectJob_Delegate [label="ConnectJob::Delegate",style=dashed];
142
143 StreamSocket [style=dashed];
144 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
145 StreamSocket_Others [label="...others..."];
146
147 TransportConnectJobHelper;
148 SingleRequestHostResolver;
149
150 { SSLClientSocketPool, TransportClientSocketPool,
151 ClientSocketPool_Others} -> ClientSocketPool
152 [style=dashed, arrowhead=empty];
153 ClientSocketPoolBaseHelper -> ConnectJob_Delegate
154 [arrowhead=empty, style=dashed];
155 StreamSocket -> Socket [arrowhead=empty, style=dashed];
156 { TCPClientSocket, StreamSocket_Others } -> StreamSocket
157 [arrowhead=empty, style=dashed];
158 {SSLConnectJob, TransportConnectJob, ConnectJob_Others} -> ConnectJob
159 [style=dashed, arrowhead=empty];
160
161 ClientSocketHandle -> HttpStreamFactoryImpl_Job [arrowhead="diamond"];
162 ClientSocketHandle -> HttpBasicState [arrowhead="diamond"];
163 ClientSocketPoolBaseHelper -> ClientSocketPoolBase [arrowhead=diamond];
164 ClientSocketPoolBase -> TransportClientSocketPool
165 [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
166
167 StreamSocket -> ClientSocketHandle [arrowhead=diamond];
168 ConnectJobFactory -> ClientSocketPoolBase [arrowhead=diamond];
169 StreamSocket -> ConnectJob [arrowhead=diamond];
170 SingleRequestHostResolver -> TransportConnectJobHelper
171 [arrowhead=diamond];
172 TransportConnectJobHelper -> TransportConnectJob [arrowhead=diamond];
173
174 ClientSocketPool -> ClientSocketHandle [arrowhead=odiamond];
175 ConnectJob_Delegate -> ConnectJob [arrowhead=odiamond];
176
177 subgraph {
178 rank=same;
179 ConnectJobFactory -> ConnectJob [arrowhead=veevee];
180 }
181 subgraph {
182 rank=same;
183 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
184 }
185 }
OLDNEW
« net/docs/pools.dot ('K') | « net/docs/pools.svg ('k') | net/docs/url_request.svg » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698