xref: /aosp_15_r20/external/cronet/net/docs/url_request.dot (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Workerdigraph URLRequestRoot {
2*6777b538SAndroid Build Coastguard Worker    subgraph cluster_legend {
3*6777b538SAndroid Build Coastguard Worker	label="Legend";
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Worker	## The following legend is an attempt to match UML notation,
6*6777b538SAndroid Build Coastguard Worker	## except for template_class and Factory->object, which are
7*6777b538SAndroid Build Coastguard Worker	## invented for this diagram.
8*6777b538SAndroid Build Coastguard Worker	BaseClass;
9*6777b538SAndroid Build Coastguard Worker	SubClass [label="Derived Class"];
10*6777b538SAndroid Build Coastguard Worker	Whole;
11*6777b538SAndroid Build Coastguard Worker	Part;
12*6777b538SAndroid Build Coastguard Worker	A;
13*6777b538SAndroid Build Coastguard Worker	B;
14*6777b538SAndroid Build Coastguard Worker	Interface [label="Interface / ABC", style=dashed];
15*6777b538SAndroid Build Coastguard Worker	template_class [shape=diamond]; # Link will name parameter(s)
16*6777b538SAndroid Build Coastguard Worker
17*6777b538SAndroid Build Coastguard Worker	SubClass -> BaseClass [arrowhead="empty"];
18*6777b538SAndroid Build Coastguard Worker	SubClass -> Interface [arrowhead="empty", style=dashed];
19*6777b538SAndroid Build Coastguard Worker	Part -> Whole [arrowhead="diamond", label="ownership"];
20*6777b538SAndroid Build Coastguard Worker	Part -> Whole [arrowhead="odiamond", label="pointer"];
21*6777b538SAndroid Build Coastguard Worker	A -> B [arrowhead="none", headlabel="?..?", taillabel="?..?",
22*6777b538SAndroid Build Coastguard Worker		label="association"];
23*6777b538SAndroid Build Coastguard Worker	// Often a "subgraph { rank=same; .. }" is used to wrap the
24*6777b538SAndroid Build Coastguard Worker	// below to make the generative relationship distinctive
25*6777b538SAndroid Build Coastguard Worker	// from the other class relationships.
26*6777b538SAndroid Build Coastguard Worker	Factory -> object [arrowhead=veevee];
27*6777b538SAndroid Build Coastguard Worker    };
28*6777b538SAndroid Build Coastguard Worker
29*6777b538SAndroid Build Coastguard Worker    ## URLRequest, URLRequestJob, and subclasses
30*6777b538SAndroid Build Coastguard Worker    URLRequestContext;
31*6777b538SAndroid Build Coastguard Worker    URLRequest;
32*6777b538SAndroid Build Coastguard Worker    URLRequestJob [style=dashed];
33*6777b538SAndroid Build Coastguard Worker    URLRequestJob_Others [label="...other job types..."];
34*6777b538SAndroid Build Coastguard Worker    URLRequestHttpJob;
35*6777b538SAndroid Build Coastguard Worker    Filter;
36*6777b538SAndroid Build Coastguard Worker
37*6777b538SAndroid Build Coastguard Worker    {URLRequestHttpJob, URLRequestJob_Others} -> URLRequestJob
38*6777b538SAndroid Build Coastguard Worker	[arrowhead="empty"];
39*6777b538SAndroid Build Coastguard Worker
40*6777b538SAndroid Build Coastguard Worker    URLRequestJob -> URLRequest [arrowhead="diamond"];
41*6777b538SAndroid Build Coastguard Worker    Filter -> URLRequestJob [arrowhead="diamond"];
42*6777b538SAndroid Build Coastguard Worker    Filter -> Filter [arrowhead="diamond", taillabel="0..1"];
43*6777b538SAndroid Build Coastguard Worker
44*6777b538SAndroid Build Coastguard Worker    subgraph {
45*6777b538SAndroid Build Coastguard Worker	rank=same;
46*6777b538SAndroid Build Coastguard Worker	URLRequestContext -> URLRequest [arrowhead=veevee];
47*6777b538SAndroid Build Coastguard Worker    }
48*6777b538SAndroid Build Coastguard Worker    subgraph {
49*6777b538SAndroid Build Coastguard Worker	rank=same;
50*6777b538SAndroid Build Coastguard Worker	URLRequestHttpJob -> Filter [arrowhead=veevee];
51*6777b538SAndroid Build Coastguard Worker    }
52*6777b538SAndroid Build Coastguard Worker
53*6777b538SAndroid Build Coastguard Worker
54*6777b538SAndroid Build Coastguard Worker    ## HttpTransaction, subclasses, and generative classes.
55*6777b538SAndroid Build Coastguard Worker    HttpTransactionFactory [style=dashed];
56*6777b538SAndroid Build Coastguard Worker    HttpCache;
57*6777b538SAndroid Build Coastguard Worker    HttpNetworkLayer;
58*6777b538SAndroid Build Coastguard Worker    HttpTransaction [style=dashed];
59*6777b538SAndroid Build Coastguard Worker    HttpCache_Transaction [label="HttpCache::Transaction"];
60*6777b538SAndroid Build Coastguard Worker    HttpNetworkTransaction;
61*6777b538SAndroid Build Coastguard Worker
62*6777b538SAndroid Build Coastguard Worker    { HttpNetworkTransaction, HttpCache_Transaction } -> HttpTransaction
63*6777b538SAndroid Build Coastguard Worker	[style=dashed, arrowhead="empty"];
64*6777b538SAndroid Build Coastguard Worker    { HttpNetworkLayer, HttpCache } -> HttpTransactionFactory
65*6777b538SAndroid Build Coastguard Worker	[arrowhead=empty, style=dashed];
66*6777b538SAndroid Build Coastguard Worker
67*6777b538SAndroid Build Coastguard Worker    HttpTransaction -> HttpCache_Transaction  [arrowhead=diamond];
68*6777b538SAndroid Build Coastguard Worker    HttpTransaction -> URLRequestHttpJob [arrowhead="diamond"]
69*6777b538SAndroid Build Coastguard Worker
70*6777b538SAndroid Build Coastguard Worker    subgraph {
71*6777b538SAndroid Build Coastguard Worker	rank=same;
72*6777b538SAndroid Build Coastguard Worker	HttpCache -> HttpCache_Transaction [arrowhead=veevee];
73*6777b538SAndroid Build Coastguard Worker    }
74*6777b538SAndroid Build Coastguard Worker    subgraph {
75*6777b538SAndroid Build Coastguard Worker	rank=same;
76*6777b538SAndroid Build Coastguard Worker	HttpTransactionFactory -> HttpTransaction [arrowhead=veevee];
77*6777b538SAndroid Build Coastguard Worker    }
78*6777b538SAndroid Build Coastguard Worker    subgraph {
79*6777b538SAndroid Build Coastguard Worker	rank=same;
80*6777b538SAndroid Build Coastguard Worker	HttpNetworkLayer -> HttpNetworkTransaction [arrowhead=veevee];
81*6777b538SAndroid Build Coastguard Worker    }
82*6777b538SAndroid Build Coastguard Worker
83*6777b538SAndroid Build Coastguard Worker    ## HttpStreamFactory and related.
84*6777b538SAndroid Build Coastguard Worker    HttpStreamFactory;
85*6777b538SAndroid Build Coastguard Worker    HttpStreamRequest;
86*6777b538SAndroid Build Coastguard Worker    HttpStream [style=dashed];
87*6777b538SAndroid Build Coastguard Worker    HttpStreamFactory_Job [label="HttpStreamFactory::Job"];
88*6777b538SAndroid Build Coastguard Worker    HttpStreamRequest_Delegate
89*6777b538SAndroid Build Coastguard Worker	[label="HttpStreamRequest::Delegate",style=dashed];
90*6777b538SAndroid Build Coastguard Worker    HttpBasicStream;
91*6777b538SAndroid Build Coastguard Worker    QuicHttpStream;
92*6777b538SAndroid Build Coastguard Worker    SpdyHttpStream;
93*6777b538SAndroid Build Coastguard Worker    HttpBasicState;
94*6777b538SAndroid Build Coastguard Worker
95*6777b538SAndroid Build Coastguard Worker    HttpNetworkTransaction -> HttpStreamRequest_Delegate
96*6777b538SAndroid Build Coastguard Worker	[style=dashed, arrowhead="empty"];
97*6777b538SAndroid Build Coastguard Worker    { HttpBasicStream, QuicHttpStream, SpdyHttpStream } -> HttpStream
98*6777b538SAndroid Build Coastguard Worker	[style=dashed, arrowhead="empty"];
99*6777b538SAndroid Build Coastguard Worker
100*6777b538SAndroid Build Coastguard Worker    HttpStreamRequest -> HttpNetworkTransaction [arrowhead="diamond"];
101*6777b538SAndroid Build Coastguard Worker    HttpStream -> HttpNetworkTransaction [arrowhead="diamond"];
102*6777b538SAndroid Build Coastguard Worker    HttpBasicState -> HttpBasicStream [arrowhead=diamond];
103*6777b538SAndroid Build Coastguard Worker    HttpStreamFactory_Job -> HttpStreamRequest
104*6777b538SAndroid Build Coastguard Worker	[arrowhead="diamond",taillabel="1..*"];
105*6777b538SAndroid Build Coastguard Worker
106*6777b538SAndroid Build Coastguard Worker    HttpStreamRequest_Delegate -> HttpStreamRequest
107*6777b538SAndroid Build Coastguard Worker        [arrowhead=odiamond];
108*6777b538SAndroid Build Coastguard Worker    HttpStreamFactory_Job -> HttpStreamFactory_Job
109*6777b538SAndroid Build Coastguard Worker        [arrowhead=odiamond, label="blocking_job_\nwaiting_job_"];
110*6777b538SAndroid Build Coastguard Worker
111*6777b538SAndroid Build Coastguard Worker    subgraph {
112*6777b538SAndroid Build Coastguard Worker	rank=same;
113*6777b538SAndroid Build Coastguard Worker	HttpStreamFactory -> HttpStreamRequest [arrowhead=veevee];
114*6777b538SAndroid Build Coastguard Worker    }
115*6777b538SAndroid Build Coastguard Worker    subgraph {
116*6777b538SAndroid Build Coastguard Worker	rank=same;
117*6777b538SAndroid Build Coastguard Worker	HttpStreamRequest -> HttpStream [arrowhead=veevee];
118*6777b538SAndroid Build Coastguard Worker    }
119*6777b538SAndroid Build Coastguard Worker
120*6777b538SAndroid Build Coastguard Worker    ## ClientSocketHandle and socket pools.
121*6777b538SAndroid Build Coastguard Worker    ClientSocketPool [style=dashed];
122*6777b538SAndroid Build Coastguard Worker    TransportClientSocketPool;
123*6777b538SAndroid Build Coastguard Worker    SSLClientSocketPool;
124*6777b538SAndroid Build Coastguard Worker    ClientSocketPool_Others [label="...others..."];
125*6777b538SAndroid Build Coastguard Worker    ClientSocketPoolBase [label="ClientSocketPoolBase", shape=diamond];
126*6777b538SAndroid Build Coastguard Worker    ClientSocketPoolBaseHelper;
127*6777b538SAndroid Build Coastguard Worker
128*6777b538SAndroid Build Coastguard Worker    ConnectJobFactory;
129*6777b538SAndroid Build Coastguard Worker    ConnectJob [style=dashed];
130*6777b538SAndroid Build Coastguard Worker    TransportConnectJob;
131*6777b538SAndroid Build Coastguard Worker    SSLConnectJob;
132*6777b538SAndroid Build Coastguard Worker    ConnectJob_Others [label="...other connect job types..."];
133*6777b538SAndroid Build Coastguard Worker    ConnectJob_Delegate [label="ConnectJob::Delegate",style=dashed];
134*6777b538SAndroid Build Coastguard Worker
135*6777b538SAndroid Build Coastguard Worker    StreamSocket [style=dashed];
136*6777b538SAndroid Build Coastguard Worker    TransportClientSocket [style=dashed];
137*6777b538SAndroid Build Coastguard Worker    TCPClientSocket;
138*6777b538SAndroid Build Coastguard Worker    StreamSocket_Others [label="...other socket types..."];
139*6777b538SAndroid Build Coastguard Worker
140*6777b538SAndroid Build Coastguard Worker    TransportConnectJobHelper;
141*6777b538SAndroid Build Coastguard Worker    SingleRequestHostResolver;
142*6777b538SAndroid Build Coastguard Worker
143*6777b538SAndroid Build Coastguard Worker    { SSLClientSocketPool, TransportClientSocketPool,
144*6777b538SAndroid Build Coastguard Worker      ClientSocketPool_Others} -> ClientSocketPool
145*6777b538SAndroid Build Coastguard Worker	[style=dashed, arrowhead=empty];
146*6777b538SAndroid Build Coastguard Worker    ClientSocketPoolBaseHelper -> ConnectJob_Delegate
147*6777b538SAndroid Build Coastguard Worker	[arrowhead=empty, style=dashed];
148*6777b538SAndroid Build Coastguard Worker    StreamSocket -> Socket [arrowhead=empty, style=dashed];
149*6777b538SAndroid Build Coastguard Worker    TCPClientSocket -> TransportClientSocket
150*6777b538SAndroid Build Coastguard Worker        [arrowhead=empty, style=dashed];
151*6777b538SAndroid Build Coastguard Worker    TransportClientSocket -> StreamSocket
152*6777b538SAndroid Build Coastguard Worker        [arrowhead=empty, style=dashed];
153*6777b538SAndroid Build Coastguard Worker    StreamSocket_Others -> StreamSocket
154*6777b538SAndroid Build Coastguard Worker	[arrowhead=empty, style=dashed];
155*6777b538SAndroid Build Coastguard Worker    {SSLConnectJob, TransportConnectJob, ConnectJob_Others} -> ConnectJob
156*6777b538SAndroid Build Coastguard Worker	[style=dashed, arrowhead=empty];
157*6777b538SAndroid Build Coastguard Worker
158*6777b538SAndroid Build Coastguard Worker    ClientSocketHandle -> HttpStreamFactory_Job [arrowhead="diamond"];
159*6777b538SAndroid Build Coastguard Worker    ClientSocketHandle -> HttpBasicState [arrowhead="diamond"];
160*6777b538SAndroid Build Coastguard Worker    ClientSocketPoolBaseHelper -> ClientSocketPoolBase [arrowhead=diamond];
161*6777b538SAndroid Build Coastguard Worker    ClientSocketPoolBase -> TransportClientSocketPool
162*6777b538SAndroid Build Coastguard Worker	[arrowhead=diamond, label=TransportSocketParams];
163*6777b538SAndroid Build Coastguard Worker    ClientSocketPoolBase -> SSLClientSocketPool
164*6777b538SAndroid Build Coastguard Worker	[arrowhead=diamond, label=SSLSocketParams];
165*6777b538SAndroid Build Coastguard Worker
166*6777b538SAndroid Build Coastguard Worker    StreamSocket -> ClientSocketHandle [arrowhead=diamond];
167*6777b538SAndroid Build Coastguard Worker    ConnectJobFactory -> ClientSocketPoolBase [arrowhead=diamond];
168*6777b538SAndroid Build Coastguard Worker    StreamSocket -> ConnectJob [arrowhead=diamond];
169*6777b538SAndroid Build Coastguard Worker    SingleRequestHostResolver -> TransportConnectJobHelper
170*6777b538SAndroid Build Coastguard Worker	[arrowhead=diamond];
171*6777b538SAndroid Build Coastguard Worker    TransportConnectJobHelper -> TransportConnectJob [arrowhead=diamond];
172*6777b538SAndroid Build Coastguard Worker
173*6777b538SAndroid Build Coastguard Worker    ClientSocketPool -> ClientSocketHandle  [arrowhead=odiamond];
174*6777b538SAndroid Build Coastguard Worker    ConnectJob_Delegate -> ConnectJob  [arrowhead=odiamond];
175*6777b538SAndroid Build Coastguard Worker
176*6777b538SAndroid Build Coastguard Worker    subgraph {
177*6777b538SAndroid Build Coastguard Worker	rank=same;
178*6777b538SAndroid Build Coastguard Worker	ConnectJobFactory -> ConnectJob [arrowhead=veevee];
179*6777b538SAndroid Build Coastguard Worker    }
180*6777b538SAndroid Build Coastguard Worker    subgraph {
181*6777b538SAndroid Build Coastguard Worker	rank=same;
182*6777b538SAndroid Build Coastguard Worker	HttpStreamFactory_Job -> ClientSocketHandle [arrowhead=veevee];
183*6777b538SAndroid Build Coastguard Worker    }
184*6777b538SAndroid Build Coastguard Worker    subgraph {
185*6777b538SAndroid Build Coastguard Worker        rank=same;
186*6777b538SAndroid Build Coastguard Worker	TransportConnectJob -> StreamSocket [arrowhead=veevee];
187*6777b538SAndroid Build Coastguard Worker    }
188*6777b538SAndroid Build Coastguard Worker}
189