Skip to content

Commit

Permalink
Revert of Include class relationship diagrams in network stack docume…
Browse files Browse the repository at this point in the history
…ntation. (patchset chromium#6 id:100001 of https://codereview.chromium.org/1859793002/ )

Reason for revert:
Something is still using the net_docs target, which was removed; builds are failing on the bots (but didn't fail on any try jobs above--see green).

Original issue's description:
> Include class relationship diagrams in network stack documentation.
>
> This CL includes class relationship diagrams for most of the
> classes mentioned in life_of_a_url_request.md and a sketch of the
> object relationships inside socket pools.  It also removes the net_docs
> target (which wasn't really being used) and adds information for debugging
> markdown changes and updating SVG files from dot source.
>
> BUG=None
> R=eroman@chromium.org
> R=mmenke@chromium.org
>
> Committed: https://crrev.com/fb2fd16bec430431971d14658ef3800b23f0ab3f
> Cr-Commit-Position: refs/heads/master@{#385934}

TBR=eroman@chromium.org,mmenke@chromium.org,scottmg@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=None

Review URL: https://codereview.chromium.org/1875583002

Cr-Commit-Position: refs/heads/master@{#385941}
  • Loading branch information
rdsmith authored and Commit bot committed Apr 8, 2016
1 parent e8e08b3 commit 88c6adb
Show file tree
Hide file tree
Showing 10 changed files with 165 additions and 1,281 deletions.
2 changes: 2 additions & 0 deletions build/gn_migration.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -696,6 +696,7 @@
['OS=="linux" or OS=="win"', {
'dependencies': [
# TODO(GYP): Figure out which of these run on android/mac/win/ios/etc.
'../net/net.gyp:net_docs',
'../remoting/remoting.gyp:ar_sample_test_driver',

# TODO(GYP): in progress - see tfarina.
Expand Down Expand Up @@ -723,6 +724,7 @@
'../content/content_shell_and_tests.gyp:content_shell_crash_service',
'../gpu/gpu.gyp:angle_end2end_tests',
'../gpu/gpu.gyp:angle_perftests',
'../net/net.gyp:net_docs',
'../ppapi/ppapi_internal.gyp:ppapi_perftests',
'../remoting/remoting.gyp:ar_sample_test_driver',
'../remoting/remoting.gyp:remoting_breakpad_tester',
Expand Down
20 changes: 0 additions & 20 deletions net/docs/README.txt

This file was deleted.

45 changes: 0 additions & 45 deletions net/docs/life-of-a-url-request.md
Original file line number Diff line number Diff line change
Expand Up @@ -293,24 +293,6 @@ Either way, the ClientSocketHandle returns the socket is then returned to the
socket pool, either for reuse or so the socket pool knows it has another free
socket slot.

### Object Relationships and Ownership

A sample of the object relationships involved in the above process is
diagramed here:

![Object Relationship Diagram for URLRequest lifetime](url_request.svg)

There are a couple of points in the above diagram that do not come
clear visually:

* The method that generates the filter chain that is hung off the
URLRequestJob is declared on URLRequestJob, but the only current
implementation of it is on URLRequestHttpJob, so the generation is
shown as happening from that class.
* HttpTransactions of different types are layered; i.e. a
HttpCache::Transaction contains a pointer to an HttpTransaction, but
that pointed-to HttpTransaction generally is an
HttpNetworkTransaction.

# Additional Topics

Expand Down Expand Up @@ -436,33 +418,6 @@ pool, they must have their own distinct group name. This is needed so that, for
instance, SSL and HTTP connections won't be grouped together in the
TcpClientSocketPool, which the SSLClientSocketPool sits on top of.

### Socket Pool Class Relationships

The relationships between the important classes in the socket pools is
shown diagrammatically for the lowest layer socket pool
(TransportSocketPool) below.

![Object Relationship Diagram for Socket Pools](pools.svg)

The ClientSocketPoolBase is a template class templatized on the class
containing the parameters for the appropriate type of socket (in this
case TransportSocketParams). It contains a pointer to the
ClientSocketPoolBaseHelper, which contains all the type-independent
machinery of the socket pool.

When socket pools are initialized, they in turn initialize their
templatized ClientSocketPoolBase member with an object with which it
should create connect jobs. That object must derive from
ClientSocketPoolBase::ConnectJobFactory templatized by the same type
as the ClientSocketPoolBase. (In the case of the diagram above, that
object is a TransportConnectJobFactory, which derives from
ClientSocketPoolBase::ConnectJobFactory<TransportSocketParams>.)
Internally, that object is wrapped in a type-unsafe wrapper
(ClientSocketPoolBase::ConnectJobFactoryAdaptor) so that it can be
passed to the initialization of the ClientSocketPoolBaseHelper. This
allows the helper to create connect jobs while preserving a type-safe
API to the initialization of the socket pool.

### SSL

When an SSL connection is needed, the ClientSocketPoolManager assembles the
Expand Down
101 changes: 0 additions & 101 deletions net/docs/pools.dot

This file was deleted.

Loading

0 comments on commit 88c6adb

Please sign in to comment.