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

Unified 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: 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 side-by-side diff with in-line comments
Download patch
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..7c8621c9ecd47835000d26b150dd44893c083761
--- /dev/null
+++ b/net/docs/url_request.dot
@@ -0,0 +1,124 @@
+digraph URLRequestRoot {
+ subgraph cluster_legend {
+ label="Legend";
+
+ ## UML
+ 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"];
+ Interface [label="Interface / ABC", style=dashed];
+ template_class [shape=diamond]; # Link will name parameter(s)
+
+
+ Factory -> object [arrowhead=veevee];
+ SubClass [label="Derived Class"];
+ };
+
+ URLRequest; // Non-threadsafe, SupportsUserData
+ URLRequestContext;
+ URLRequestJob [style=dashed]; // RC, base::PowerObserver
+ // Many subclasses
+ HttpCache_Transaction [label="HttpCache::Transaction"];
+ HttpStreamFactoryImpl_Request [label="HttpStreamFactoryImpl::Request"];
+ HttpStreamFactoryImpl_Job [label="HttpStreamFactoryImpl::Job"];
+ HttpStreamRequest_Delegate [label="HttpStreamRequest::Delegate",style=dashed];
+ Filter;
+
+ URLRequestContext -> URLRequest [arrowhead=veevee];
+ Filter -> URLRequestJob [arrowhead="diamond"];
+ Filter -> Filter [arrowhead="diamond", taillabel="0..1"];
+ URLRequestHttpJob -> Filter [arrowhead=veevee];
+
+ URLRequestJob -> URLRequest [arrowhead="diamond"];
+
+ URLRequestHttpJob -> URLRequestJob [arrowhead="empty"];
+ // Handles both http & https
+
+ URLRequestJobOthers [label="...others..."];
+ URLRequestJobOthers -> URLRequestJob [arrowhead="empty"];
+
+ // Indirects to network delegate.
+
+ HttpCache;
+ HttpNetworkLayer;
+ HttpTransactionFactory;
+ HttpTransaction [style=dashed];
+ HttpTransaction_Others [label="...others..."];
+ HttpTransaction -> URLRequestHttpJob [arrowhead="diamond"]
+
+ HttpNetworkLayer -> HttpTransactionFactory [arrowhead=empty, style=dashed];
+
+ HttpStreamFactoryImpl_Job -> HttpStreamFactoryImpl_Request [arrowhead="diamond",taillabel="1..*"];
+
+ ClientSocketHandle -> {HttpStreamFactoryImpl_Job,HttpBasicState} [arrowhead="diamond"];
+ ClientSocketPool [style=dashed];
+ ClientSocketPool -> ClientSocketHandle [arrowhead=odiamond];
+
+ {SSLClientSocketPool, TransportClientSocketPool, ClientSocketPool_Others} -> ClientSocketPool [style=dashed, arrowhead=empty];
+ ClientSocketPool_Others [label="...others..."];
+
+ ClientSocketPoolBase -> TransportClientSocketPool [arrowhead=diamond, label=TransportSocketParams];
+ ClientSocketPoolBase [label="ClientSocketPoolBase", shape=diamond];
+
+ ClientSocketPoolBaseHelper -> ConnectJob_Delegate [arrowhead=empty, style=dashed];
+ ConnectJob [style=dashed];
+ ConnectJob_Delegate [label="ConnectJob::Delegate",style=dashed];
+
+ StreamSocket [style=dashed];
+ StreamSocket -> Socket [arrowhead=empty, style=dashed];
+ TCPClientSocket -> StreamSocket [arrowhead=empty, style=dashed];
+ StreamSocket_others -> StreamSocket [arrowhead=empty, style=dashed];
+ StreamSocket_others [label="...others..."];
+ StreamSocket -> ClientSocketHandle [arrowhead=diamond];
+ ConnectJobFactory -> ClientSocketPoolBase [arrowhead=diamond];
+ subgraph { rank=same; ConnectJobFactory -> ConnectJob [arrowhead=veevee];}
+ StreamSocket -> ConnectJob [arrowhead=diamond];
+
+ TransportConnectJob;
+ TransportConnectJobHelper;
+ SingleRequestHostResolver;
+
+ SingleRequestHostResolver -> TransportConnectJobHelper ->
+ TransportConnectJob [arrowhead=diamond];
+
+ {SSLConnectJob, TransportConnectJob, ConnectJob_Others} -> ConnectJob [style=dashed, arrowhead=empty];
+ ConnectJob_Others [label="...others..."];
+
+ ConnectJob_Delegate -> ConnectJob [arrowhead=odiamond];
+ ClientSocketPoolBaseHelper -> ClientSocketPoolBase [arrowhead=diamond];
+
+ subgraph {
+ rank=same;
+ URLRequestJobManager -> URLRequestJob [arrowhead=veevee];
+ }
+
+ TransportClientSocketPool -> ClientSocketHandle [arrowhead=veevee];
+
+ HttpTransactionFactory [style=dashed];
+ HttpCache -> HttpTransactionFactory [arrowhead=empty, style=dashed];
+ HttpTransactionFactory -> HttpTransaction [arrowhead=veevee];
+ HttpNetworkLayer -> HttpNetworkTransaction [arrowhead=veevee];
+ HttpCache -> HttpCache_Transaction [arrowhead=veevee];
+
+ HttpStreamRequest_Delegate -> HttpStreamFactoryImpl_Request [arrowhead=odiamond];
+ subgraph { rank=same; HttpStreamFactoryImpl -> HttpStreamRequest -> HttpStream [arrowhead=veevee];}
+
+ HttpTransaction_Others -> HttpTransaction [style=dashed, arrowhead="empty"];
+ HttpCache_Transaction -> HttpTransaction [style=dashed, arrowhead="empty"];
+ HttpTransaction -> HttpCache_Transaction [arrowhead=diamond];
+ HttpNetworkTransaction -> HttpTransaction [style=dashed, arrowhead="empty"];
+
+ HttpStreamRequest [style=dashed];
+ HttpStreamRequest -> HttpNetworkTransaction [arrowhead="diamond"];
+ HttpStream -> HttpNetworkTransaction [arrowhead="diamond"];
+ HttpNetworkTransaction -> HttpStreamRequest_Delegate [style=dashed, arrowhead="empty"];
+ HttpStreamFactoryImpl_Request -> HttpStreamRequest [style=dashed, arrowhead="empty"];
+ HttpStream [style=dashed];
+ HttpBasicState -> HttpBasicStream [arrowhead=diamond];
+ HttpBasicStream -> HttpStream [style=dashed, arrowhead="empty"];
+ QuicHttpStream -> HttpStream [style=dashed, arrowhead="empty"];
+ SpdyHttpStream -> HttpStream [style=dashed, arrowhead="empty"];
+}

Powered by Google App Engine
This is Rietveld 408576698