]> granicus.if.org Git - apache/commitdiff
Merge r1721973 from trunk:
authorEric Covener <covener@apache.org>
Mon, 28 Dec 2015 18:24:39 +0000 (18:24 +0000)
committerEric Covener <covener@apache.org>
Mon, 28 Dec 2015 18:24:39 +0000 (18:24 +0000)
PR58761: developer doc improvements.

Submitted By: Luca Toscano

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1721974 13f79535-47bb-0310-9956-ffa450edef68

docs/manual/developer/filters.html.en
docs/manual/developer/filters.xml
docs/manual/developer/hooks.html.en
docs/manual/developer/hooks.xml
docs/manual/developer/index.html.en
docs/manual/developer/index.xml
docs/manual/developer/request.html.en
docs/manual/developer/request.xml

index 7af339ba6434349d4a28c69bdb0c64cf137fc978..e5db22fc4f156e3f2e14f85f5c38a2659708200a 100644 (file)
     <p>This is actually rather simple in theory, but the code is
     complex.  First of all, it is important that everybody realize that
     there are three filter lists for each request, but they are all
-    concatenated together.  So, the first list is
-    <code>r-&gt;output_filters</code>, then <code>r-&gt;proto_output_filters</code>,
-    and finally <code>r-&gt;connection-&gt;output_filters</code>. These correspond
-    to the <code>RESOURCE</code>, <code>PROTOCOL</code>, and
-    <code>CONNECTION</code> filters respectively. The problem previously, was
-    that we used a singly linked list to create the filter stack, and we
+    concatenated together:</p>
+    <ul>
+        <li><code>r-&gt;output_filters</code> (corresponds to RESOURCE)</li>
+        <li><code>r-&gt;proto_output_filters</code> (corresponds to PROTOCOL)</li>
+        <li><code>r-&gt;connection-&gt;output_filters</code> (corresponds to CONNECTION)</li>
+    </ul> 
+    
+    <p>The problem previously, was that we used a singly linked list to create the filter stack, and we
     started from the "correct" location.  This means that if I had a
     <code>RESOURCE</code> filter on the stack, and I added a
     <code>CONNECTION</code> filter, the <code>CONNECTION</code> filter would
index 5e44ababc53e80ad060b2736c9e42ceaf2862f2c..e4b42253d055a3c873fd4ba21ddd8be697c0bb81 100644 (file)
     <p>This is actually rather simple in theory, but the code is
     complex.  First of all, it is important that everybody realize that
     there are three filter lists for each request, but they are all
-    concatenated together.  So, the first list is
-    <code>r->output_filters</code>, then <code>r->proto_output_filters</code>,
-    and finally <code>r->connection->output_filters</code>. These correspond
-    to the <code>RESOURCE</code>, <code>PROTOCOL</code>, and
-    <code>CONNECTION</code> filters respectively. The problem previously, was
-    that we used a singly linked list to create the filter stack, and we
+    concatenated together:</p>
+    <ul>
+        <li><code>r->output_filters</code> (corresponds to RESOURCE)</li>
+        <li><code>r->proto_output_filters</code> (corresponds to PROTOCOL)</li>
+        <li><code>r->connection->output_filters</code> (corresponds to CONNECTION)</li>
+    </ul> 
+    
+    <p>The problem previously, was that we used a singly linked list to create the filter stack, and we
     started from the "correct" location.  This means that if I had a
     <code>RESOURCE</code> filter on the stack, and I added a
     <code>CONNECTION</code> filter, the <code>CONNECTION</code> filter would
index c00af2ccd323ced6de3514af3031eaa60e7d4f14..7b1f133d5c9b965b83ebc3a8aee54bffc8815017 100644 (file)
     Modules can provide functions that are called, and specify when 
     they get called in comparison to other modules.</p>
 </div>
-<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#create">Creating a hook function</a></li>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#corehooks">Core Hooks</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#create">Creating a hook function</a></li>
 <li><img alt="" src="../images/down.gif" /> <a href="#hooking">Hooking the hook</a></li>
 </ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 <div class="section">
+<h2><a name="corehooks" id="corehooks">Core Hooks</a></h2>
+    <p>The httpd's core modules offer a predefinined list of hooks
+    used during the standard <a href="./request.html">request processing</a>
+    phase. Creating a new hook will expose a function that 
+    implements it (see sections below) but it is essential to undestand that you will not 
+    extend the httpd's core hooks. Their presence and order in the request processing is in fact 
+    a consequence of how they are called in <code>server/request.c</code> 
+    (check <a href="./modguide.html#hooking">this section</a> 
+    for an overview). The core hooks are listed in the 
+    <a href="https://ci.apache.org/projects/httpd/trunk/doxygen/group__hooks.html">doxygen documentation</a>.</p>
+
+    <p>Reading <a href="./modguide.html">guide for developing modules</a> and 
+    <a href="./request.html">request processing</a> before proceeding is 
+    highly recomended.
+    </p> 
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
 <h2><a name="create" id="create">Creating a hook function</a></h2>
     <p>In order to create a new hook, four things need to be
     done:</p>
@@ -172,7 +190,8 @@ mode MODULE_VAR_EXPORT my_module =
 
     <h3><a name="hooking-order" id="hooking-order">Controlling hook calling order</a></h3>
       <p>In the example above, we didn't use the three arguments in
-      the hook registration function that control calling order.
+      the hook registration function that control calling order of 
+      all the functions registered within the hook.
       There are two mechanisms for doing this. The first, rather
       crude, method, allows us to specify roughly where the hook is
       run relative to other modules. The final argument control this.
index e9a5c5f52e1a543406218c61e0353cc5a6039808..3f6651014f84b7d5a9190360e804d9ab12d4f129 100644 (file)
     they get called in comparison to other modules.</p>
 </summary>
 
+<section id="corehooks"><title>Core Hooks</title>
+    <p>The httpd's core modules offer a predefinined list of hooks
+    used during the standard <a href="./request.html">request processing</a>
+    phase. Creating a new hook will expose a function that 
+    implements it (see sections below) but it is essential to undestand that you will not 
+    extend the httpd's core hooks. Their presence and order in the request processing is in fact 
+    a consequence of how they are called in <code>server/request.c</code> 
+    (check <a href="./modguide.html#hooking">this section</a> 
+    for an overview). The core hooks are listed in the 
+    <a href="https://ci.apache.org/projects/httpd/trunk/doxygen/group__hooks.html">doxygen documentation</a>.</p>
+
+    <p>Reading <a href="./modguide.html">guide for developing modules</a> and 
+    <a href="./request.html">request processing</a> before proceeding is 
+    highly recomended.
+    </p> 
+</section>
+
 <section id="create"><title>Creating a hook function</title>
     <p>In order to create a new hook, four things need to be
     done:</p>
@@ -177,7 +194,8 @@ mode MODULE_VAR_EXPORT my_module =
 
     <section id="hooking-order"><title>Controlling hook calling order</title>
       <p>In the example above, we didn't use the three arguments in
-      the hook registration function that control calling order.
+      the hook registration function that control calling order of 
+      all the functions registered within the hook.
       There are two mechanisms for doing this. The first, rather
       crude, method, allows us to specify roughly where the hook is
       run relative to other modules. The final argument control this.
index 5a98852846d92a2a0fd91662fd206eae4b411355..98b5b26de90881723e5196878151979feb232384 100644 (file)
@@ -30,9 +30,8 @@
     <div class="warning"><h3>Warning</h3>
     <p>Many of the documents listed here are in need of update.
     They are in different stages of progress.
-    Please be patient, and point out any discrepancies or
-    errors on the developer/ pages directly to the
-    <a href="http://httpd.apache.org/lists.html#http-dev">dev@httpd.apache.org</a> mailing list.</p>
+    Please be patient and follow <a href="https://httpd.apache.org/docs-project/">this link</a>
+    to propose a fix or point out any error/discrepancy.</p>
     </div>
 </div>
 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#developing">2.4 development documents</a></li>
@@ -62,7 +61,9 @@
 <div class="section">
 <h2><a name="external" id="external">External Resources</a></h2>
     <ul>
-      <li><a href="http://ci.apache.org/projects/httpd/trunk/doxygen/">Autogenerated Apache HTTP Server (trunk) code documentation</a></li>
+      <li><a href="http://ci.apache.org/projects/httpd/trunk/doxygen/">Autogenerated Apache HTTP Server (trunk) code documentation</a> (the link is built by
+        this <a href="https://ci.apache.org/builders/httpd-doxygen-nightly">job</a>).
+      </li>
 
       <li>Developer articles at <a href="http://www.apachetutor.org/">apachetutor</a> include:
       <ul>
index e7cba4310593c62dd238e85393a9de5a65107b35..ccbba6f79287e34f948d37ebbc6d943e9fbc13e0 100644 (file)
     <note type="warning"><title>Warning</title>
     <p>Many of the documents listed here are in need of update.
     They are in different stages of progress.
-    Please be patient, and point out any discrepancies or
-    errors on the developer/ pages directly to the
-    <a href="http://httpd.apache.org/lists.html#http-dev"
-    >dev@httpd.apache.org</a> mailing list.</p>
+    Please be patient and follow <a href="https://httpd.apache.org/docs-project/">this link</a>
+    to propose a fix or point out any error/discrepancy.</p>
     </note>
 </summary>
 
@@ -59,7 +57,9 @@
     <ul>
       <li><a
         href="http://ci.apache.org/projects/httpd/trunk/doxygen/"
-        >Autogenerated Apache HTTP Server (trunk) code documentation</a></li>
+        >Autogenerated Apache HTTP Server (trunk) code documentation</a> (the link is built by
+        this <a href="https://ci.apache.org/builders/httpd-doxygen-nightly">job</a>).
+      </li>
 
       <li>Developer articles at <a href="http://www.apachetutor.org/">apachetutor</a> include:
       <ul>
index 75b8b7508eba68e22d35d03df8f82c220af4c481..e139f0f0a761af077c94f6dc86e6fe11c5377c66 100644 (file)
 <div class="section">
 <h2><a name="processing" id="processing">The Request Processing Cycle</a></h2>
     <p>All requests pass through <code>ap_process_request_internal()</code>
-    in <code>request.c</code>, including subrequests and redirects. If a module
+    in <code>server/request.c</code>, including subrequests and redirects. If a module
     doesn't pass generated requests through this code, the author is cautioned
     that the module may be broken by future changes to request
     processing.</p>
 
     <p>To streamline requests, the module author can take advantage
-    of the hooks offered to drop out of the request cycle early, or
-    to bypass core hooks which are irrelevant (and costly in
-    terms of CPU.)</p>
+    of the <a href="./modguide.html#hooking">hooks offered</a> to drop 
+    out of the request cycle early, or to bypass core hooks which are 
+    irrelevant (and costly in terms of CPU.)</p>
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 <div class="section">
 <h2><a name="parsing" id="parsing">The Request Parsing Phase</a></h2>
index b54e41e3d039da21a4a5a27f3a3619ec67a0ab09..8c329b4b2613c9f56dbe9128f3849d04991c688b 100644 (file)
 
 <section id="processing"><title>The Request Processing Cycle</title>
     <p>All requests pass through <code>ap_process_request_internal()</code>
-    in <code>request.c</code>, including subrequests and redirects. If a module
+    in <code>server/request.c</code>, including subrequests and redirects. If a module
     doesn't pass generated requests through this code, the author is cautioned
     that the module may be broken by future changes to request
     processing.</p>
 
     <p>To streamline requests, the module author can take advantage
-    of the hooks offered to drop out of the request cycle early, or
-    to bypass core hooks which are irrelevant (and costly in
-    terms of CPU.)</p>
+    of the <a href="./modguide.html#hooking">hooks offered</a> to drop 
+    out of the request cycle early, or to bypass core hooks which are 
+    irrelevant (and costly in terms of CPU.)</p>
 </section>
 
 <section id="parsing"><title>The Request Parsing Phase</title>