You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by an...@apache.org on 2009/10/30 00:23:36 UTC
svn commit: r831152 [11/37] - in /incubator/trafficserver/site/trunk/docs:
./ admin/ admin/images/ sdk/ sdk/css/ sdk/images/ sdk/images/docbook/ sdk/js/
Added: incubator/trafficserver/site/trunk/docs/sdk/ContinuationFunctions.html
URL: http://svn.apache.org/viewvc/incubator/trafficserver/site/trunk/docs/sdk/ContinuationFunctions.html?rev=831152&view=auto
==============================================================================
--- incubator/trafficserver/site/trunk/docs/sdk/ContinuationFunctions.html (added)
+++ incubator/trafficserver/site/trunk/docs/sdk/ContinuationFunctions.html Thu Oct 29 23:23:25 2009
@@ -0,0 +1,93 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Continuation Functions</title>
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/reset/reset-min.css" type="text/css">
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/fonts/fonts-min.css" type="text/css">
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/treeview/assets/tree.css" type="text/css">
+<link rel="stylesheet" href="css/ydoc.css" type="text/css">
+<link rel="stylesheet" href="css/ydoc-chunk.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="index.html" title="Traffic Server Software Developers Kit">
+<link rel="up" href="FunctionReference.html" title="Chapter 18. Function Reference">
+<link rel="prev" href="INKMutexUnlock.html" title="INKMutexUnlock">
+<link rel="next" href="INKContCreate.html" title="INKContCreate">
+<link rel="preface" href="Preface.html" title="Preface">
+<link rel="chapter" href="GetingStarted.html" title="Chapter 1. Getting Started">
+<link rel="chapter" href="CreatingTSPlugins.html" title="Chapter 2. How to Create Traffic Server Plugins">
+<link rel="index" href="CreatingTSPlugins.html#id372630" title="Index">
+<link rel="chapter" href="ch03.html" title="Chapter 3. Remap Plugin">
+<link rel="chapter" href="HeaderBasedPluginEx.html" title="Chapter 4. Header-Based Plugin Examples">
+<link rel="chapter" href="HTTPTransformationPlugins.html" title="Chapter 5. HTTP Transformation Plugins">
+<link rel="chapter" href="NewProtocolPlugins.html" title="Chapter 6. New Protocol Plugins">
+<link rel="chapter" href="ch07.html" title="Chapter 7. Cache Plugin">
+<link rel="chapter" href="HTTPHooksAndTransactions.html" title="Chapter 8. HTTP Hooks and Transactions">
+<link rel="chapter" href="MiscellaneousInterfaceGuide.html" title="Chapter 9. Miscellaneous Interface Guide">
+<link rel="chapter" href="HTTPHeaders.html" title="Chapter 10. HTTP Headers">
+<link rel="chapter" href="MutexGuide.html" title="Chapter 11. Mutex Guide">
+<link rel="chapter" href="Continuations.html" title="Chapter 12. Continuations">
+<link rel="chapter" href="PluginConfigurations.html" title="Chapter 13. Plugin Configurations">
+<link rel="chapter" href="ActionsGuide.html" title="Chapter 14. Actions Guide">
+<link rel="chapter" href="IOGuide.html" title="Chapter 15. IO Guide">
+<link rel="chapter" href="PluginManagement.html" title="Chapter 16. Plugin Management">
+<link rel="chapter" href="AddingStatistics.html" title="Chapter 17. Adding Statistics">
+<link rel="chapter" href="FunctionReference.html" title="Chapter 18. Function Reference">
+<link rel="appendix" href="App_SampleSourceCode.html" title="Appendix A. Sample Source Code">
+<link rel="appendix" href="App_DeprecatedFunctions.html" title="Appendix B. Deprecated Functions">
+<link rel="appendix" href="App_Troubleshooting.html" title="Appendix C. Troubleshooting Tips">
+<link rel="appendix" href="FunctionIndex.html" title="Appendix D. Function Index">
+<link rel="appendix" href="TypeIndex.html" title="Appendix E. Type Index">
+<link rel="index" href="ConceptIndex.html" title="Index">
+<link rel="subsection" href="ContinuationFunctions.html#INKContCall" title="INKContCall">
+<link rel="subsection" href="INKContCreate.html" title="INKContCreate">
+<link rel="subsection" href="INKContDataGet.html" title="INKContDataGet">
+<link rel="subsection" href="INKContDataSet.html" title="INKContDataSet">
+<link rel="subsection" href="INKContDestroy.html" title="INKContDestroy">
+<link rel="subsection" href="INKContMutexGet.html" title="INKContMutexGet">
+<link rel="subsection" href="INKContSchedule.html" title="INKContSchedule">
+<script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/yahoo/yahoo-min.js"></script><script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/event/event-min.js"></script><script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/treeview/treeview-min.js"></script><script type="text/javascript" src="js/tocnodes.js"></script><script type="text/javascript" src="js/toc.js"></script><script type="text/javascript">
+ document.write("<style> div.toc {display: none} </style>");
+ </script>
+</head>
+<body>
+<div class="doctitle">
+<a href="index.html">Home</a>
+<img src="images/docbook/ts75.png"><h1 class="doctitle">Traffic Server Software Developers Kit</h1>
+</div>
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="INKMutexUnlock.html">Prev</a> â INKMutexUnlock</div>
+<div class="navnext">INKContCreate â <a accesskey="n" href="INKContCreate.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="ContinuationFunctions"></a>Continuation Functions</h2></div></div></div>
+<p></p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="INKContCall"></a>INKContCall</h3></div></div></div>
+<p>Calls a continuation.</p>
+<div class="variablelist"><dl>
+<dt><span class="term">Prototype</span></dt>
+<dd><p><code class="code">int INKContCall (INKCont
+ <em class="replaceable"><code>contp</code></em>, INKEvent
+ <em class="replaceable"><code>event</code></em>, void
+ *<em class="replaceable"><code>edata</code></em>)</code></p></dd>
+<dt><span class="term">Description</span></dt>
+<dd><p>Sends <code class="code"><em class="replaceable"><code>event</code></em></code> and
+ <code class="code"><em class="replaceable"><code>edata</code></em></code> to the
+ <code class="code"><em class="replaceable"><code>contp</code></em></code>âs handler
+ function. It is an error to call a continuation without holding
+ the continuationâs lock.</p></dd>
+<dt><span class="term">Returns</span></dt>
+<dd><p>The values returned by the continuation contp event
+ handler.</p></dd>
+<dt><span class="term">First release</span></dt>
+<dd><p>Traffic Server 3.0</p></dd>
+</dl></div>
+</div>
+</div>
+</body>
+</html>
Propchange: incubator/trafficserver/site/trunk/docs/sdk/ContinuationFunctions.html
------------------------------------------------------------------------------
svn:keywords = Id
Added: incubator/trafficserver/site/trunk/docs/sdk/Continuations.html
URL: http://svn.apache.org/viewvc/incubator/trafficserver/site/trunk/docs/sdk/Continuations.html?rev=831152&view=auto
==============================================================================
--- incubator/trafficserver/site/trunk/docs/sdk/Continuations.html (added)
+++ incubator/trafficserver/site/trunk/docs/sdk/Continuations.html Thu Oct 29 23:23:25 2009
@@ -0,0 +1,169 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Chapter 12. Continuations</title>
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/reset/reset-min.css" type="text/css">
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/fonts/fonts-min.css" type="text/css">
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/treeview/assets/tree.css" type="text/css">
+<link rel="stylesheet" href="css/ydoc.css" type="text/css">
+<link rel="stylesheet" href="css/ydoc-chunk.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="index.html" title="Traffic Server Software Developers Kit">
+<link rel="up" href="index.html" title="Traffic Server Software Developers Kit">
+<link rel="prev" href="MutexGuide.html" title="Chapter 11. Mutex Guide">
+<link rel="next" href="ActivateContinuations.html" title="How to Activate Continuations">
+<link rel="preface" href="Preface.html" title="Preface">
+<link rel="chapter" href="GetingStarted.html" title="Chapter 1. Getting Started">
+<link rel="chapter" href="CreatingTSPlugins.html" title="Chapter 2. How to Create Traffic Server Plugins">
+<link rel="index" href="CreatingTSPlugins.html#id372630" title="Index">
+<link rel="chapter" href="ch03.html" title="Chapter 3. Remap Plugin">
+<link rel="chapter" href="HeaderBasedPluginEx.html" title="Chapter 4. Header-Based Plugin Examples">
+<link rel="chapter" href="HTTPTransformationPlugins.html" title="Chapter 5. HTTP Transformation Plugins">
+<link rel="chapter" href="NewProtocolPlugins.html" title="Chapter 6. New Protocol Plugins">
+<link rel="chapter" href="ch07.html" title="Chapter 7. Cache Plugin">
+<link rel="chapter" href="HTTPHooksAndTransactions.html" title="Chapter 8. HTTP Hooks and Transactions">
+<link rel="chapter" href="MiscellaneousInterfaceGuide.html" title="Chapter 9. Miscellaneous Interface Guide">
+<link rel="chapter" href="HTTPHeaders.html" title="Chapter 10. HTTP Headers">
+<link rel="chapter" href="MutexGuide.html" title="Chapter 11. Mutex Guide">
+<link rel="chapter" href="Continuations.html" title="Chapter 12. Continuations">
+<link rel="chapter" href="PluginConfigurations.html" title="Chapter 13. Plugin Configurations">
+<link rel="chapter" href="ActionsGuide.html" title="Chapter 14. Actions Guide">
+<link rel="chapter" href="IOGuide.html" title="Chapter 15. IO Guide">
+<link rel="chapter" href="PluginManagement.html" title="Chapter 16. Plugin Management">
+<link rel="chapter" href="AddingStatistics.html" title="Chapter 17. Adding Statistics">
+<link rel="chapter" href="FunctionReference.html" title="Chapter 18. Function Reference">
+<link rel="appendix" href="App_SampleSourceCode.html" title="Appendix A. Sample Source Code">
+<link rel="appendix" href="App_DeprecatedFunctions.html" title="Appendix B. Deprecated Functions">
+<link rel="appendix" href="App_Troubleshooting.html" title="Appendix C. Troubleshooting Tips">
+<link rel="appendix" href="FunctionIndex.html" title="Appendix D. Function Index">
+<link rel="appendix" href="TypeIndex.html" title="Appendix E. Type Index">
+<link rel="index" href="ConceptIndex.html" title="Index">
+<link rel="section" href="Continuations.html#MutexesAndData" title="Mutexes and Data">
+<link rel="section" href="ActivateContinuations.html" title="How to Activate Continuations">
+<link rel="section" href="WritingHandlerFunctions.html" title="Writing Handler Functions">
+<script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/yahoo/yahoo-min.js"></script><script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/event/event-min.js"></script><script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/treeview/treeview-min.js"></script><script type="text/javascript" src="js/tocnodes.js"></script><script type="text/javascript" src="js/toc.js"></script><script type="text/javascript">
+ document.write("<style> div.toc {display: none} </style>");
+ </script>
+</head>
+<body>
+<div class="doctitle">
+<a href="index.html">Home</a>
+<img src="images/docbook/ts75.png"><h1 class="doctitle">Traffic Server Software Developers Kit</h1>
+</div>
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="MutexGuide.html">Prev</a> â Chapter 11. Mutex Guide</div>
+<div class="navnext">How to Activate Continuations â <a accesskey="n" href="ActivateContinuations.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="Continuations"></a>Chapter 12. Continuations</h2></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"><a href="Continuations.html#MutexesAndData">Mutexes and Data</a></span></dt>
+<dt><span class="section"><a href="ActivateContinuations.html">How to Activate Continuations</a></span></dt>
+<dt><span class="section"><a href="WritingHandlerFunctions.html">Writing Handler Functions</a></span></dt>
+</dl>
+</div>
+<p>The continuation interface is Traffic Serverâs basic callback
+ mechanism. Continuations are instances of the opaque data type INKCont. In
+ its basic form a continuation represents a handler function and a mutex.
+ This chapter contains:</p>
+<div class="itemizedlist"><ul type="disc">
+<li><p><a href="Continuations.html#MutexesAndData" title="Mutexes and Data">âMutexes and Dataâ</a></p></li>
+<li><p><a href="ActivateContinuations.html" title="How to Activate Continuations">âHow to Activate Continuationsâ</a></p></li>
+</ul></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="MutexesAndData"></a>Mutexes and Data</h2></div></div></div>
+<p>A continuation must be created with a mutex if your continuation
+ does one of the following:</p>
+<div class="itemizedlist"><ul type="disc">
+<li><p>is registered globally (<code class="function">INKHttpHookAdd</code> or
+ <code class="function">INKHttpSsnHookAdd</code>) to an HTTP hook and uses
+ <code class="function">INKContDataSet/Get</code>.</p></li>
+<li><p>is registered locally (<code class="function">INKHttpTxnHookAdd</code>)
+ but for multiple transactions and uses
+ <code class="function">INKContDataSet/Get</code>.</p></li>
+<li><p>uses <code class="function">INKCacheXXX</code>,
+ <code class="function">INKNetXXX</code>, <code class="function">INKHostLookup</code>
+ or <code class="function">INKContSchedule</code> APIs.</p></li>
+</ul></div>
+<p>Before being activated, a caller must grab the continuationâs
+ mutex. This requirement makes it possible for a continuationâs handler
+ function to safely access its data and to prevent it from being run by
+ multiple callers at the same time. See the sample Protocol plugin for
+ usage. The data protected by the mutex is: any global or continuation
+ data associated to the continuation by
+ <code class="function">INKContDataSet</code>. This does not include the local
+ data created by the continuation handler function. A typical example of
+ continuations created with associated data structures and mutexes is the
+ transaction state machine created in the sample Protocol plugin. See
+ <a href="NewProtocolPlugins.html#ImplementTransStMachine" title="One Way to Implement a Transaction State Machine">âOne Way to Implement a Transaction State Machineâ</a></p>
+<p>A reentrant call occurs when the continuation passed as an
+ argument to the API can be called in the same stack trace as the
+ function calling the API. For instance, if you call INKCacheRead
+ (<code class="code">contp, mykey</code>), it is possible that contpâs handler will be
+ called directly and then <code class="function">INKCacheRead</code> returns.
+ Caveats that could cause a possible issues if:</p>
+<div class="itemizedlist"><ul type="disc">
+<li><p>a continuation has data associated with it
+ (<code class="function">INKContDataGet</code>).</p></li>
+<li><p>the reentrant call passes itself as a continuation to the
+ reentrant API. In this case, the continuation should not try to
+ access its data after having called the reentrant API. The reason
+ for this is that data may be modified by the section of code of the
+ continuationâs handler that handles the event sent by the API. It is
+ recommended that you always return after a reentrant call to avoid
+ accessing something that has been deallocated.</p></li>
+</ul></div>
+<p>Below is an example with an explaination.</p>
+<pre class="programlisting">continuation_handler (INKCont contp, INKEvent event, void *edata) {
+ switch (event) {
+ case event1:
+ INKReentrantCall (contp);
+ /* Return right away after this call */
+ break;
+ case event2:
+ INKContDestroy (contp);
+ break;
+ }
+}</pre>
+<p>The above example first assumes that the continuation is called
+ back with <code class="code">event1</code> and does the first reentrant call which
+ schedules the continuation to receive <code class="code">event2</code>. Because the
+ call is reentrant, the processor calls back the continuation right away
+ with <code class="code">event2</code> and the continuation is destroyed. If you try
+ to access the continuation, or one of its members after the reentrant
+ call, you might access something that has been deallocated. To avoid
+ accessing something that has been deallocated, never access the
+ continuation or any of its members after a reentrant call, just exit the
+ handler.</p>
+<p>Note that most HTTP transaction plugin continuations do not need
+ non-null mutexes, because they are called within the processing of an
+ HTTP transaction and thus have the transactionâs mutex.</p>
+<p>It is also possible to specify a continuationâs mutex as
+ <code class="code">NULL</code>. This should be done only when registering a
+ continuation to a global hook, by a call to
+ <code class="function">INKHttpHookAdd</code>. In this case, the continuation can
+ be called simultaneously by different instances of HTTP SM running on
+ different threads. Having a mutex here would slow down Traffic Server
+ performance since all the threads will try to lock the same mutex. The
+ drawback of not having a mutex is that such a continuation cannot have
+ data associated with it (<code class="function">INKContDataGet</code>/Set can not
+ be used).</p>
+<p>When using a <code class="code">NULL</code> mutex, it is dangerous to access
+ the continuationâs data, but it is usually the case that continuations
+ with <code class="code">NULL</code> mutexes have no data associated with them. An
+ example of such a continuation would be one that gets called back every
+ time an HTTP request is read and determines from the request alone
+ whether to let the request through or whether to reject it. An HTTP
+ transaction gives its continuation data to the
+ <code class="code">contp</code>.</p>
+</div>
+</div>
+</body>
+</html>
Propchange: incubator/trafficserver/site/trunk/docs/sdk/Continuations.html
------------------------------------------------------------------------------
svn:keywords = Id
Added: incubator/trafficserver/site/trunk/docs/sdk/Conventions.html
URL: http://svn.apache.org/viewvc/incubator/trafficserver/site/trunk/docs/sdk/Conventions.html?rev=831152&view=auto
==============================================================================
--- incubator/trafficserver/site/trunk/docs/sdk/Conventions.html (added)
+++ incubator/trafficserver/site/trunk/docs/sdk/Conventions.html Thu Oct 29 23:23:25 2009
@@ -0,0 +1,99 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Typographical Conventions</title>
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/reset/reset-min.css" type="text/css">
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/fonts/fonts-min.css" type="text/css">
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/treeview/assets/tree.css" type="text/css">
+<link rel="stylesheet" href="css/ydoc.css" type="text/css">
+<link rel="stylesheet" href="css/ydoc-chunk.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="index.html" title="Traffic Server Software Developers Kit">
+<link rel="up" href="Preface.html" title="Preface">
+<link rel="prev" href="pr01s02.html" title="How to Use This Book">
+<link rel="next" href="GetingStarted.html" title="Chapter 1. Getting Started">
+<link rel="preface" href="Preface.html" title="Preface">
+<link rel="chapter" href="GetingStarted.html" title="Chapter 1. Getting Started">
+<link rel="chapter" href="CreatingTSPlugins.html" title="Chapter 2. How to Create Traffic Server Plugins">
+<link rel="index" href="CreatingTSPlugins.html#id372630" title="Index">
+<link rel="chapter" href="ch03.html" title="Chapter 3. Remap Plugin">
+<link rel="chapter" href="HeaderBasedPluginEx.html" title="Chapter 4. Header-Based Plugin Examples">
+<link rel="chapter" href="HTTPTransformationPlugins.html" title="Chapter 5. HTTP Transformation Plugins">
+<link rel="chapter" href="NewProtocolPlugins.html" title="Chapter 6. New Protocol Plugins">
+<link rel="chapter" href="ch07.html" title="Chapter 7. Cache Plugin">
+<link rel="chapter" href="HTTPHooksAndTransactions.html" title="Chapter 8. HTTP Hooks and Transactions">
+<link rel="chapter" href="MiscellaneousInterfaceGuide.html" title="Chapter 9. Miscellaneous Interface Guide">
+<link rel="chapter" href="HTTPHeaders.html" title="Chapter 10. HTTP Headers">
+<link rel="chapter" href="MutexGuide.html" title="Chapter 11. Mutex Guide">
+<link rel="chapter" href="Continuations.html" title="Chapter 12. Continuations">
+<link rel="chapter" href="PluginConfigurations.html" title="Chapter 13. Plugin Configurations">
+<link rel="chapter" href="ActionsGuide.html" title="Chapter 14. Actions Guide">
+<link rel="chapter" href="IOGuide.html" title="Chapter 15. IO Guide">
+<link rel="chapter" href="PluginManagement.html" title="Chapter 16. Plugin Management">
+<link rel="chapter" href="AddingStatistics.html" title="Chapter 17. Adding Statistics">
+<link rel="chapter" href="FunctionReference.html" title="Chapter 18. Function Reference">
+<link rel="appendix" href="App_SampleSourceCode.html" title="Appendix A. Sample Source Code">
+<link rel="appendix" href="App_DeprecatedFunctions.html" title="Appendix B. Deprecated Functions">
+<link rel="appendix" href="App_Troubleshooting.html" title="Appendix C. Troubleshooting Tips">
+<link rel="appendix" href="FunctionIndex.html" title="Appendix D. Function Index">
+<link rel="appendix" href="TypeIndex.html" title="Appendix E. Type Index">
+<link rel="index" href="ConceptIndex.html" title="Index">
+<script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/yahoo/yahoo-min.js"></script><script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/event/event-min.js"></script><script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/treeview/treeview-min.js"></script><script type="text/javascript" src="js/tocnodes.js"></script><script type="text/javascript" src="js/toc.js"></script><script type="text/javascript">
+ document.write("<style> div.toc {display: none} </style>");
+ </script>
+</head>
+<body>
+<div class="doctitle">
+<a href="index.html">Home</a>
+<img src="images/docbook/ts75.png"><h1 class="doctitle">Traffic Server Software Developers Kit</h1>
+</div>
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="pr01s02.html">Prev</a> â How to Use This Book</div>
+<div class="navnext">Chapter 1. Getting Started â <a accesskey="n" href="GetingStarted.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="Conventions"></a>Typographical Conventions</h2></div></div></div>
+<p>This document uses the following typographic conventions:</p>
+<div class="table">
+<a name="id305513"></a><p class="title"><b>Table 1. Typographical Conventions</b></p>
+<table summary="Typographical Conventions" border="1">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th align="center">Convention</th>
+<th align="center">Purpose</th>
+</tr></thead>
+<tbody>
+<tr>
+<td><span class="emphasis"><em>italics</em></span></td>
+<td>Italics introduce terms.</td>
+</tr>
+<tr>
+<td><code class="code">monospaced face</code></td>
+<td>Represents C language statements, commands, file content
+ and computer output.</td>
+</tr>
+<tr>
+<td><code class="code"><em class="replaceable"><code>monospaced
+ italic</code></em></code></td>
+<td>Represents variables for which you should substitute a
+ value, as in the example, âenter a filename.â</td>
+</tr>
+<tr>
+<td>ellipsis <code class="code">...</code>
+</td>
+<td>Indicates the omission of irrelevant or unimportant
+ information.</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</body>
+</html>
Propchange: incubator/trafficserver/site/trunk/docs/sdk/Conventions.html
------------------------------------------------------------------------------
svn:keywords = Id
Added: incubator/trafficserver/site/trunk/docs/sdk/CoupledStatistics.html
URL: http://svn.apache.org/viewvc/incubator/trafficserver/site/trunk/docs/sdk/CoupledStatistics.html?rev=831152&view=auto
==============================================================================
--- incubator/trafficserver/site/trunk/docs/sdk/CoupledStatistics.html (added)
+++ incubator/trafficserver/site/trunk/docs/sdk/CoupledStatistics.html Thu Oct 29 23:23:25 2009
@@ -0,0 +1,158 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Coupled Statistics</title>
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/reset/reset-min.css" type="text/css">
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/fonts/fonts-min.css" type="text/css">
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/treeview/assets/tree.css" type="text/css">
+<link rel="stylesheet" href="css/ydoc.css" type="text/css">
+<link rel="stylesheet" href="css/ydoc-chunk.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="index.html" title="Traffic Server Software Developers Kit">
+<link rel="up" href="AddingStatistics.html" title="Chapter 17. Adding Statistics">
+<link rel="prev" href="AddingStatistics.html" title="Chapter 17. Adding Statistics">
+<link rel="next" href="ViewStatsUsingTrafLine.html" title="Viewing Statistics Using Traffic Line">
+<link rel="preface" href="Preface.html" title="Preface">
+<link rel="chapter" href="GetingStarted.html" title="Chapter 1. Getting Started">
+<link rel="chapter" href="CreatingTSPlugins.html" title="Chapter 2. How to Create Traffic Server Plugins">
+<link rel="index" href="CreatingTSPlugins.html#id372630" title="Index">
+<link rel="chapter" href="ch03.html" title="Chapter 3. Remap Plugin">
+<link rel="chapter" href="HeaderBasedPluginEx.html" title="Chapter 4. Header-Based Plugin Examples">
+<link rel="chapter" href="HTTPTransformationPlugins.html" title="Chapter 5. HTTP Transformation Plugins">
+<link rel="chapter" href="NewProtocolPlugins.html" title="Chapter 6. New Protocol Plugins">
+<link rel="chapter" href="ch07.html" title="Chapter 7. Cache Plugin">
+<link rel="chapter" href="HTTPHooksAndTransactions.html" title="Chapter 8. HTTP Hooks and Transactions">
+<link rel="chapter" href="MiscellaneousInterfaceGuide.html" title="Chapter 9. Miscellaneous Interface Guide">
+<link rel="chapter" href="HTTPHeaders.html" title="Chapter 10. HTTP Headers">
+<link rel="chapter" href="MutexGuide.html" title="Chapter 11. Mutex Guide">
+<link rel="chapter" href="Continuations.html" title="Chapter 12. Continuations">
+<link rel="chapter" href="PluginConfigurations.html" title="Chapter 13. Plugin Configurations">
+<link rel="chapter" href="ActionsGuide.html" title="Chapter 14. Actions Guide">
+<link rel="chapter" href="IOGuide.html" title="Chapter 15. IO Guide">
+<link rel="chapter" href="PluginManagement.html" title="Chapter 16. Plugin Management">
+<link rel="chapter" href="AddingStatistics.html" title="Chapter 17. Adding Statistics">
+<link rel="chapter" href="FunctionReference.html" title="Chapter 18. Function Reference">
+<link rel="appendix" href="App_SampleSourceCode.html" title="Appendix A. Sample Source Code">
+<link rel="appendix" href="App_DeprecatedFunctions.html" title="Appendix B. Deprecated Functions">
+<link rel="appendix" href="App_Troubleshooting.html" title="Appendix C. Troubleshooting Tips">
+<link rel="appendix" href="FunctionIndex.html" title="Appendix D. Function Index">
+<link rel="appendix" href="TypeIndex.html" title="Appendix E. Type Index">
+<link rel="index" href="ConceptIndex.html" title="Index">
+<link rel="subsection" href="CoupledStatistics.html#Examp_redirect-1.c" title="Example Using the redirect-1.c Sample Plugin">
+<script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/yahoo/yahoo-min.js"></script><script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/event/event-min.js"></script><script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/treeview/treeview-min.js"></script><script type="text/javascript" src="js/tocnodes.js"></script><script type="text/javascript" src="js/toc.js"></script><script type="text/javascript">
+ document.write("<style> div.toc {display: none} </style>");
+ </script>
+</head>
+<body>
+<div class="doctitle">
+<a href="index.html">Home</a>
+<img src="images/docbook/ts75.png"><h1 class="doctitle">Traffic Server Software Developers Kit</h1>
+</div>
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="AddingStatistics.html">Prev</a> â Chapter 17. Adding Statistics</div>
+<div class="navnext">Viewing Statistics Using Traffic Line â <a accesskey="n" href="ViewStatsUsingTrafLine.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="CoupledStatistics"></a>Coupled Statistics</h2></div></div></div>
+<p>Use coupled statistics for quantities that are related and must be
+ updated jointly. As a very simple example, suppose that you have three
+ statistics: <code class="code">sum</code>, <code class="code">part_1</code> and
+ <code class="code">part_2</code>, and they must always preserve the relationship that
+ <code class="code">sum = part_1 + part_2</code>. If you update <code class="code">part_1</code>
+ without updating sum at the same time, the equation would be untrue. The
+ mechanism for updating coupled statistics jointly is to create local
+ copies of global coupled statistics in the routines that modifiy them.
+ When each local copy is updated appropriately, you do a global update
+ using <code class="code">INKStatsCoupledUpdate</code>. To specify which statistics
+ are related to one another, you establish a coupled statistic category,
+ and make sure that each coupled statistic belongs to the appropriate
+ category. When it is time to do the global update, you specify the
+ category to be updated.</p>
+<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/docbook/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>The local statistic copy must have a duplicate set of statistics
+ as that of the master copy. Local statistics must also be added to the
+ local statistic category in the same order as their master copy
+ counterparts were added originally.</p></td></tr>
+</table></div>
+<p>Here are the steps you needed, followed by an example of code that
+ is taken from the <code class="filename">redirect-1.c</code> sample
+ plugin.</p>
+<h3>
+<a name="AddCoupledStats"></a>To add coupled statistics:</h3>
+<div class="orderedlist"><ol type="1">
+<li><p>Declare the global category for your coupled statistics as a
+ global <code class="code">INKCoupledStat</code> variable in your plugin.</p></li>
+<li><p>Declare your coupled statistics as global <code class="code">INKStat</code>
+ variables in your plugin.</p></li>
+<li><p>In <code class="code">INKPluginInit</code>, create a new global coupled
+ category using
+ <code class="code">INKStatCoupledGlobalCategoryCreate</code>.</p></li>
+<li>
+<p>In <code class="code">INKPluginInit</code>, create new global coupled
+ statistics using <code class="code">INKStatCoupledGlobalAdd</code>.</p>
+<p>When you create a new statistic, you need to give it an
+ âexternalâ name that the Traffic Server command line interface
+ (Traffic Line) uses to access the statistic.</p>
+</li>
+<li><p>In any routine where you want to modify (increment, decrement,
+ or other modification) your coupled statistics, declare local copies
+ of the coupled category and coupled statistics.</p></li>
+<li><p>Then create local copies using
+ <code class="code">INKStatCoupledLocalCopyCreate</code> and
+ <code class="code">INKStatCoupledLocalAdd</code>.</p></li>
+<li><p>Modify the local copies of your statistics. Then to update the
+ global copies jointly, call
+ <code class="code">INKStatsCoupledUpdate</code>.</p></li>
+<li><p>When you are done, you must destroy the all of the local
+ copies in the category using
+ <code class="code">INKStatCoupledLocalCopyDestroy</code>.</p></li>
+</ol></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="Examp_redirect-1.c"></a>Example Using the redirect-1.c Sample Plugin</h3></div></div></div>
+<pre class="programlisting">static INKCoupledStat request_outcomes;
+
+static INKStat requests_all;
+static INKStat requests_redirects;
+static INKStat requests_unchanged;
+
+request_outcomes = INKStatCoupledGlobalCategoryCreate ("request_outcomes");
+
+requests_all = INKStatCoupledGlobalAdd (request_outcomes, "requests.all", INKSTAT_TYPE_FLOAT);
+requests_redirects = INKStatCoupledGlobalAdd (request_outcomes, "requests.redirects",
+ INKSTAT_TYPE_INT64);
+requests_unchanged = INKStatCoupledGlobalAdd (request_outcomes, "requests.unchanged",
+ INKSTAT_TYPE_INT64);
+
+INKCoupledStat local_request_outcomes;
+INKStat local_requests_all;
+INKStat local_requests_redirects;
+INKStat local_requests_unchanged;
+
+local_request_outcomes = INKStatCoupledLocalCopyCreate("local_request_outcomes",
+ request_outcomes);
+local_requests_all = INKStatCoupledLocalAdd(local_request_outcomes, "requests.all.local",
+ INKSTAT_TYPE_FLOAT);
+local_requests_redirects = INKStatCoupledLocalAdd(local_request_outcomes,
+ "requests.redirects.local", INKSTAT_TYPE_INT64);
+local_requests_unchanged = INKStatCoupledLocalAdd(local_request_outcomes,
+ "requests.unchanged.local", INKSTAT_TYPE_INT64);
+
+INKStatFloatAddTo( local_requests_all, 1.0 ) ;
+...
+INKStatIncrement (local_requests_unchanged);
+INKStatsCoupledUpdate(local_request_outcomes);
+
+INKStatCoupledLocalCopyDestroy(local_request_outcomes); </pre>
+</div>
+</div>
+</body>
+</html>
Propchange: incubator/trafficserver/site/trunk/docs/sdk/CoupledStatistics.html
------------------------------------------------------------------------------
svn:keywords = Id
Added: incubator/trafficserver/site/trunk/docs/sdk/CoupledStatsFunctions.html
URL: http://svn.apache.org/viewvc/incubator/trafficserver/site/trunk/docs/sdk/CoupledStatsFunctions.html?rev=831152&view=auto
==============================================================================
--- incubator/trafficserver/site/trunk/docs/sdk/CoupledStatsFunctions.html (added)
+++ incubator/trafficserver/site/trunk/docs/sdk/CoupledStatsFunctions.html Thu Oct 29 23:23:25 2009
@@ -0,0 +1,236 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Coupled Statistics</title>
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/reset/reset-min.css" type="text/css">
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/fonts/fonts-min.css" type="text/css">
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/treeview/assets/tree.css" type="text/css">
+<link rel="stylesheet" href="css/ydoc.css" type="text/css">
+<link rel="stylesheet" href="css/ydoc-chunk.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="index.html" title="Traffic Server Software Developers Kit">
+<link rel="up" href="StatisticsFunctions.html" title="Statistics Functions">
+<link rel="prev" href="StatisticsFunctions.html" title="Statistics Functions">
+<link rel="next" href="LoggingFunctions.html" title="Logging Functions">
+<link rel="preface" href="Preface.html" title="Preface">
+<link rel="chapter" href="GetingStarted.html" title="Chapter 1. Getting Started">
+<link rel="chapter" href="CreatingTSPlugins.html" title="Chapter 2. How to Create Traffic Server Plugins">
+<link rel="index" href="CreatingTSPlugins.html#id372630" title="Index">
+<link rel="chapter" href="ch03.html" title="Chapter 3. Remap Plugin">
+<link rel="chapter" href="HeaderBasedPluginEx.html" title="Chapter 4. Header-Based Plugin Examples">
+<link rel="chapter" href="HTTPTransformationPlugins.html" title="Chapter 5. HTTP Transformation Plugins">
+<link rel="chapter" href="NewProtocolPlugins.html" title="Chapter 6. New Protocol Plugins">
+<link rel="chapter" href="ch07.html" title="Chapter 7. Cache Plugin">
+<link rel="chapter" href="HTTPHooksAndTransactions.html" title="Chapter 8. HTTP Hooks and Transactions">
+<link rel="chapter" href="MiscellaneousInterfaceGuide.html" title="Chapter 9. Miscellaneous Interface Guide">
+<link rel="chapter" href="HTTPHeaders.html" title="Chapter 10. HTTP Headers">
+<link rel="chapter" href="MutexGuide.html" title="Chapter 11. Mutex Guide">
+<link rel="chapter" href="Continuations.html" title="Chapter 12. Continuations">
+<link rel="chapter" href="PluginConfigurations.html" title="Chapter 13. Plugin Configurations">
+<link rel="chapter" href="ActionsGuide.html" title="Chapter 14. Actions Guide">
+<link rel="chapter" href="IOGuide.html" title="Chapter 15. IO Guide">
+<link rel="chapter" href="PluginManagement.html" title="Chapter 16. Plugin Management">
+<link rel="chapter" href="AddingStatistics.html" title="Chapter 17. Adding Statistics">
+<link rel="chapter" href="FunctionReference.html" title="Chapter 18. Function Reference">
+<link rel="appendix" href="App_SampleSourceCode.html" title="Appendix A. Sample Source Code">
+<link rel="appendix" href="App_DeprecatedFunctions.html" title="Appendix B. Deprecated Functions">
+<link rel="appendix" href="App_Troubleshooting.html" title="Appendix C. Troubleshooting Tips">
+<link rel="appendix" href="FunctionIndex.html" title="Appendix D. Function Index">
+<link rel="appendix" href="TypeIndex.html" title="Appendix E. Type Index">
+<link rel="index" href="ConceptIndex.html" title="Index">
+<link rel="subsection" href="CoupledStatsFunctions.html#INKStatCoupledGlobalAdd" title="INKStatCoupledGlobalAdd">
+<link rel="subsection" href="CoupledStatsFunctions.html#INKStatCoupledLocalAdd" title="INKStatCoupledLocalAdd">
+<link rel="subsection" href="CoupledStatsFunctions.html#INKStatCoupledGlobalCategoryCreate" title="INKStatCoupledGlobalCategoryCreate">
+<link rel="subsection" href="CoupledStatsFunctions.html#INKStatCoupledLocalCopyCreate" title="INKStatCoupledLocalCopyCreate">
+<link rel="subsection" href="CoupledStatsFunctions.html#INKStatCoupledLocalCopyDestroy" title="INKStatCoupledLocalCopyDestroy">
+<link rel="subsection" href="CoupledStatsFunctions.html#INKStatsCoupledUpdate" title="INKStatsCoupledUpdate">
+<script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/yahoo/yahoo-min.js"></script><script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/event/event-min.js"></script><script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/treeview/treeview-min.js"></script><script type="text/javascript" src="js/tocnodes.js"></script><script type="text/javascript" src="js/toc.js"></script><script type="text/javascript">
+ document.write("<style> div.toc {display: none} </style>");
+ </script>
+</head>
+<body>
+<div class="doctitle">
+<a href="index.html">Home</a>
+<img src="images/docbook/ts75.png"><h1 class="doctitle">Traffic Server Software Developers Kit</h1>
+</div>
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="StatisticsFunctions.html">Prev</a> â Statistics Functions</div>
+<div class="navnext">Logging Functions â <a accesskey="n" href="LoggingFunctions.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="CoupledStatsFunctions"></a>Coupled Statistics</h3></div></div></div>
+<p></p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="INKStatCoupledGlobalAdd"></a>INKStatCoupledGlobalAdd</h4></div></div></div>
+<p>.Creates a global coupled stat.</p>
+<div class="variablelist"><dl>
+<dt><span class="term">Prototype</span></dt>
+<dd><p><code class="code">INKStat INKStatCoupledGlobalAdd (INKCoupledStat
+ <em class="replaceable"><code>global_copy</code></em> , const char *
+ <em class="replaceable"><code>the_name</code></em> , INKStatTypes
+ <em class="replaceable"><code>the_type</code></em> )</code></p></dd>
+<dt><span class="term">Description</span></dt>
+<dd>
+<p><code class="code"><em class="replaceable"><code>global_copy</code></em></code> is
+ the name of the global coupled stat category to which your new
+ coupled stat belongs.</p>
+<p><code class="code"><em class="replaceable"><code>the_name</code></em></code> is the
+ name you use to view the statistic using Traffic Line. See
+ <a href="ViewStatsUsingTrafLine.html" title="Viewing Statistics Using Traffic Line">âViewing Statistics Using Traffic Lineâ</a>. There are two
+ <code class="function">INKStatTypes</code>:
+ <code class="code">INKSTAT_TYPE_INT64</code>, and
+ <code class="code">INKSTAT_TYPE_FLOAT</code>.</p>
+<p>See <a href="CoupledStatistics.html#AddCoupledStats">âTo add coupled statistics:â</a>.</p>
+</dd>
+<dt><span class="term">Returns</span></dt>
+<dd>
+<p>A handle to the newly created global coupled
+ stat.</p>
+<p><code class="code">INK_ERROR_PTR</code> if an error occurs.</p>
+</dd>
+<dt><span class="term">First release</span></dt>
+<dd><p>Traffic Server 3.5</p></dd>
+</dl></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="INKStatCoupledLocalAdd"></a>INKStatCoupledLocalAdd</h4></div></div></div>
+<p>Creates a local copy of a global coupled stat.</p>
+<div class="variablelist"><dl>
+<dt><span class="term">Prototype</span></dt>
+<dd><p><code class="code">INKStat INKStatCoupledLocalAdd (INKCoupledStat
+ <em class="replaceable"><code>local_copy</code></em> , const char *
+ <em class="replaceable"><code>the_name</code></em> , INKStatTypes
+ <em class="replaceable"><code>the_type</code></em> )</code></p></dd>
+<dt><span class="term">Description</span></dt>
+<dd>
+<p><code class="code"><em class="replaceable"><code>local_copy</code></em></code> is
+ the name of the local coupled stat category to which your new
+ coupled stat belongs.</p>
+<p><code class="code"><em class="replaceable"><code>the_name</code></em></code> is the
+ name you use to view the statistic using Traffic Line. See
+ <a href="ViewStatsUsingTrafLine.html" title="Viewing Statistics Using Traffic Line">âViewing Statistics Using Traffic Lineâ</a>. There are two
+ <code class="function">INKStatTypes</code>:
+ <code class="code">INKSTAT_TYPE_INT64</code>, and
+ <code class="code">INKSTAT_TYPE_FLOAT</code>.</p>
+<p>See <a href="CoupledStatistics.html#AddCoupledStats">âTo add coupled statistics:â</a>.</p>
+</dd>
+<dt><span class="term">Returns</span></dt>
+<dd>
+<p>A handle to a local copy of the global coupled
+ stat.</p>
+<p><code class="code">INK_ERROR_PTR</code> if an error occurs.</p>
+</dd>
+<dt><span class="term">First release</span></dt>
+<dd><p>Traffic Server 3.5</p></dd>
+</dl></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="INKStatCoupledGlobalCategoryCreate"></a>INKStatCoupledGlobalCategoryCreate</h4></div></div></div>
+<p>Creates a global coupled stat category.</p>
+<div class="variablelist"><dl>
+<dt><span class="term">Prototype</span></dt>
+<dd><p><code class="code">INKCoupledStat INKStatCoupledGlobalCategoryCreate
+ ( const char * <em class="replaceable"><code>the_name</code></em>
+ )</code></p></dd>
+<dt><span class="term">Description</span></dt>
+<dd>
+<p>Returns a new global coupled stat category. Use this
+ function in <code class="function">INKPluginInit</code>. The name
+ argument is the name you use to access this stat in Traffic
+ Line. See <a href="ViewStatsUsingTrafLine.html" title="Viewing Statistics Using Traffic Line">âViewing Statistics Using Traffic Lineâ</a>.</p>
+<p>See <a href="CoupledStatistics.html#AddCoupledStats">âTo add coupled statistics:â</a>.</p>
+</dd>
+<dt><span class="term">Returns</span></dt>
+<dd>
+<p>A handle to a the newly created global coupled stat
+ category.</p>
+<p><code class="code">INK_ERROR_PTR</code> if an error occurs.</p>
+</dd>
+<dt><span class="term">First release</span></dt>
+<dd><p>Traffic Server 3.5</p></dd>
+</dl></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="INKStatCoupledLocalCopyCreate"></a>INKStatCoupledLocalCopyCreate</h4></div></div></div>
+<p>.Creates a local copy of a global coupled stat
+ category.</p>
+<div class="variablelist"><dl>
+<dt><span class="term">Prototype</span></dt>
+<dd><p><code class="code">INKCoupledStat INKStatCoupledLocalCopyCreate (
+ const char * <em class="replaceable"><code>the_name</code></em> ,
+ INKCoupledStat
+ <em class="replaceable"><code>global_copy</code></em>)</code></p></dd>
+<dt><span class="term">Description</span></dt>
+<dd>
+<p>Returns a new local coupled stat category. Use this
+ function in any routine where you need to modify local copies
+ of global statistics. The name argument is the name you use to
+ access this stat in Traffic Line. See <a href="ViewStatsUsingTrafLine.html" title="Viewing Statistics Using Traffic Line">âViewing Statistics Using Traffic Lineâ</a>.</p>
+<p>See <a href="CoupledStatistics.html#AddCoupledStats">âTo add coupled statistics:â</a>.</p>
+</dd>
+<dt><span class="term">Returns</span></dt>
+<dd>
+<p>A handle to the local copy of the global coupled stat
+ category.</p>
+<p><code class="code">INK_ERROR_PTR</code></p>
+</dd>
+<dt><span class="term">First release</span></dt>
+<dd><p>Traffic Server 3.5</p></dd>
+</dl></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="INKStatCoupledLocalCopyDestroy"></a>INKStatCoupledLocalCopyDestroy</h4></div></div></div>
+<p>.Destroys a local category of statistics.</p>
+<div class="variablelist"><dl>
+<dt><span class="term">Prototype</span></dt>
+<dd><p><code class="code">INKReturnCode INKStatCoupledLocalCopyDestroy
+ (INKCoupledStat
+ <em class="replaceable"><code>local_copy</code></em>)</code></p></dd>
+<dt><span class="term">Description</span></dt>
+<dd><p>Destroys a local statistics category. Always destroy the
+ local category when you are done with it. See <a href="CoupledStatistics.html#AddCoupledStats">âTo add coupled statistics:â</a>.</p></dd>
+<dt><span class="term">Returns</span></dt>
+<dd>
+<p><code class="code">INK_SUCCESS</code> if the operation completes
+ successfully.</p>
+<p><code class="code">INK_ERROR</code> if an error occurs.</p>
+</dd>
+<dt><span class="term">First release</span></dt>
+<dd><p>Traffic Server 3.5</p></dd>
+</dl></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="INKStatsCoupledUpdate"></a>INKStatsCoupledUpdate</h4></div></div></div>
+<p>Updates a category of coupled statistics.</p>
+<div class="variablelist"><dl>
+<dt><span class="term">Prototype</span></dt>
+<dd><p><code class="code">INKReturnCode INKStatsCoupledUpdate
+ (INKCoupledStat
+ <em class="replaceable"><code>local_copy</code></em>)</code></p></dd>
+<dt><span class="term">Description</span></dt>
+<dd><p>Updates all of the coupled stats belonging to the
+ category <code class="code"><em class="replaceable"><code>local_copy</code></em></code>.
+ See <a href="CoupledStatistics.html#AddCoupledStats">âTo add coupled statistics:â</a>.</p></dd>
+<dt><span class="term">Returns</span></dt>
+<dd>
+<p><code class="code">INK_SUCCESS</code> if the operation completes
+ successfully.</p>
+<p><code class="code">INK_ERROR</code> if an error occurs.</p>
+</dd>
+<dt><span class="term">First release</span></dt>
+<dd><p>Traffic Server 3.5</p></dd>
+</dl></div>
+</div>
+</div>
+</body>
+</html>
Propchange: incubator/trafficserver/site/trunk/docs/sdk/CoupledStatsFunctions.html
------------------------------------------------------------------------------
svn:keywords = Id
Added: incubator/trafficserver/site/trunk/docs/sdk/CreatingTSPlugins.html
URL: http://svn.apache.org/viewvc/incubator/trafficserver/site/trunk/docs/sdk/CreatingTSPlugins.html?rev=831152&view=auto
==============================================================================
--- incubator/trafficserver/site/trunk/docs/sdk/CreatingTSPlugins.html (added)
+++ incubator/trafficserver/site/trunk/docs/sdk/CreatingTSPlugins.html Thu Oct 29 23:23:25 2009
@@ -0,0 +1,459 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Chapter 2. How to Create Traffic Server Plugins</title>
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/reset/reset-min.css" type="text/css">
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/fonts/fonts-min.css" type="text/css">
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/treeview/assets/tree.css" type="text/css">
+<link rel="stylesheet" href="css/ydoc.css" type="text/css">
+<link rel="stylesheet" href="css/ydoc-chunk.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="index.html" title="Traffic Server Software Developers Kit">
+<link rel="up" href="index.html" title="Traffic Server Software Developers Kit">
+<link rel="prev" href="NamingConventions.html" title="Naming Conventions">
+<link rel="next" href="Roadmap_CreatingPlugins.html" title="Roadmap for Creating Plugins">
+<link rel="preface" href="Preface.html" title="Preface">
+<link rel="chapter" href="GetingStarted.html" title="Chapter 1. Getting Started">
+<link rel="chapter" href="CreatingTSPlugins.html" title="Chapter 2. How to Create Traffic Server Plugins">
+<link rel="index" href="CreatingTSPlugins.html#id372630" title="Index">
+<link rel="chapter" href="ch03.html" title="Chapter 3. Remap Plugin">
+<link rel="chapter" href="HeaderBasedPluginEx.html" title="Chapter 4. Header-Based Plugin Examples">
+<link rel="chapter" href="HTTPTransformationPlugins.html" title="Chapter 5. HTTP Transformation Plugins">
+<link rel="chapter" href="NewProtocolPlugins.html" title="Chapter 6. New Protocol Plugins">
+<link rel="chapter" href="ch07.html" title="Chapter 7. Cache Plugin">
+<link rel="chapter" href="HTTPHooksAndTransactions.html" title="Chapter 8. HTTP Hooks and Transactions">
+<link rel="chapter" href="MiscellaneousInterfaceGuide.html" title="Chapter 9. Miscellaneous Interface Guide">
+<link rel="chapter" href="HTTPHeaders.html" title="Chapter 10. HTTP Headers">
+<link rel="chapter" href="MutexGuide.html" title="Chapter 11. Mutex Guide">
+<link rel="chapter" href="Continuations.html" title="Chapter 12. Continuations">
+<link rel="chapter" href="PluginConfigurations.html" title="Chapter 13. Plugin Configurations">
+<link rel="chapter" href="ActionsGuide.html" title="Chapter 14. Actions Guide">
+<link rel="chapter" href="IOGuide.html" title="Chapter 15. IO Guide">
+<link rel="chapter" href="PluginManagement.html" title="Chapter 16. Plugin Management">
+<link rel="chapter" href="AddingStatistics.html" title="Chapter 17. Adding Statistics">
+<link rel="chapter" href="FunctionReference.html" title="Chapter 18. Function Reference">
+<link rel="appendix" href="App_SampleSourceCode.html" title="Appendix A. Sample Source Code">
+<link rel="appendix" href="App_DeprecatedFunctions.html" title="Appendix B. Deprecated Functions">
+<link rel="appendix" href="App_Troubleshooting.html" title="Appendix C. Troubleshooting Tips">
+<link rel="appendix" href="FunctionIndex.html" title="Appendix D. Function Index">
+<link rel="appendix" href="TypeIndex.html" title="Appendix E. Type Index">
+<link rel="index" href="ConceptIndex.html" title="Index">
+<link rel="section" href="CreatingTSPlugins.html#AsynchronousEventModel" title="The Asynchronous Event Model">
+<link rel="section" href="Roadmap_CreatingPlugins.html" title="Roadmap for Creating Plugins">
+<script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/yahoo/yahoo-min.js"></script><script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/event/event-min.js"></script><script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/treeview/treeview-min.js"></script><script type="text/javascript" src="js/tocnodes.js"></script><script type="text/javascript" src="js/toc.js"></script><script type="text/javascript">
+ document.write("<style> div.toc {display: none} </style>");
+ </script>
+</head>
+<body>
+<div class="doctitle">
+<a href="index.html">Home</a>
+<img src="images/docbook/ts75.png"><h1 class="doctitle">Traffic Server Software Developers Kit</h1>
+</div>
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="NamingConventions.html">Prev</a> â Naming Conventions</div>
+<div class="navnext">Roadmap for Creating Plugins â <a accesskey="n" href="Roadmap_CreatingPlugins.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="CreatingTSPlugins"></a>Chapter 2. How to Create Traffic Server Plugins</h2></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"><a href="CreatingTSPlugins.html#AsynchronousEventModel">The Asynchronous Event Model</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="CreatingTSPlugins.html#TSHTTPStateMachine">Traffic Server HTTP State Machine</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="CreatingTSPlugins.html#HTTPTransaction_WhatIs">HTTP Transaction</a></span></dt>
+<dt><span class="section"><a href="CreatingTSPlugins.html#TypesOfHooks">Types of Hooks</a></span></dt>
+</dl></dd>
+</dl></dd>
+<dt><span class="section"><a href="Roadmap_CreatingPlugins.html">Roadmap for Creating Plugins</a></span></dt>
+<dt><span class="index"><a href="CreatingTSPlugins.html#id372630">Index</a></span></dt>
+</dl>
+</div>
+<p>This chapter provides a foundation for designing and writing
+ plugins. Reading this chapter will help you understand:</p>
+<div class="itemizedlist"><ul type="disc">
+<li><p>The asynchronous event model, which is the design paradigm used
+ throughout Traffic Server. Plugins must also follow this design. It
+ includes the callback mechanism for Traffic Server to âwake upâ your
+ plugin and put it to work.</p></li>
+<li><p>Traffic Serverâs HTTP processingâan overview of the HTTP state
+ machine.</p></li>
+<li><p>How plugins can hook onto and modify/extend Traffic Serverâs
+ HTTP processing.</p></li>
+<li><p>A roadmap for writing plugins and an overview of the
+ functionality provided by the Traffic Server API.</p></li>
+</ul></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="AsynchronousEventModel"></a>The Asynchronous Event Model</h2></div></div></div>
+<p>Traffic Server is a multi-threaded process. There are two main
+ reasons why a server might use multiple threads:</p>
+<div class="itemizedlist"><ul type="disc">
+<li><p>To take advantage of the concurrency available with multiple
+ CPUs and multiple I/O devices.</p></li>
+<li><p>To manage concurrency from having many simultaneous client
+ connections. For example, a server could create one thread for each
+ connection, allowing the operating system (OS) to control switching
+ between threads.</p></li>
+</ul></div>
+<p>Traffic Server uses multiple threads for the first reason. But
+ Traffic Server does not use a separate OS thread per transaction because
+ it would not be efficient when handling thousands of simultaneous
+ connections.</p>
+<p>Instead, Traffic Server provides special event-driven mechanisms
+ for efficiently scheduling work: the event system and continuations. The
+ <span class="bold"><strong><em class="glossterm">event system</em></strong></span> is
+ used to schedule work to be done on threads. A <span class="bold"><strong><em class="glossterm">continuation</em></strong></span> is a passive,
+ event-driven state machine that can do some work until it reaches a
+ waiting point; it then sleeps until it receives notification that
+ conditions are right for doing more work. For instance, HTTP state
+ machines (which handle HTTP transactions) are implemented as
+ continuations.</p>
+<p>Continuation objects are used throughout Traffic Server. Some
+ might live for the duration of the Traffic Server process; others are
+ created (perhaps by other continuations) for specific needs and then
+ destroyed. <a href="CreatingTSPlugins.html#Fig_TSInternals" title="Figure 2.1. Traffic Server Internals">Figure 2.1, âTraffic Server Internalsâ</a> shows how the major
+ components of Traffic Server interact. Traffic Server has several
+ <span class="bold"><strong><em class="glossterm">processors</em></strong></span>, such
+ as cache processor and net processor, which consolidate cache or network
+ I/O tasks. Processors talk to the event system and schedule work on
+ threads. An executing thread calls back a continuation by sending it an
+ event. When a continuation receives an event, it wakes up, does some
+ work, and either destroys itself or goes back to sleep waiting for the
+ next event.</p>
+<div class="figure">
+<a name="Fig_TSInternals"></a><p class="title"><b>Figure 2.1. Traffic Server Internals</b></p>
+<div class="mediaobject"><img src="images/event_sys80.jpg" alt="Traffic Server Internals"></div>
+</div>
+<p>Plugins are typically implemented as continuations. All of the
+ sample code plugins (except <code class="filename">hello-world</code>) are
+ continuations that are created when Traffic Server starts up; they wait
+ for events that trigger them into activity.</p>
+<div class="figure">
+<a name="Fig_TSwithPlugins"></a><p class="title"><b>Figure 2.2. Traffic Server with Plugins</b></p>
+<div class="mediaobject"><img src="images/evt_plugin120.jpg" alt="Traffic Server with Plugins"></div>
+</div>
+<p>A plugin may consist of just one static continuation that is
+ called whenever certain events happen.<code class="filename"> Examples of such
+ plugins include blacklist-1.c</code>,
+ <code class="filename">basic-auth.c</code>, and
+ <code class="filename">redirect-1.c</code>. Alternatively, a plugin could
+ dynamically create other continuations as needed. Transform plugins are
+ built in this manner: a static parent continuation checks all
+ transactions to see if any are transformable; when a transaction is
+ transformable, the static continuation creates a type of continuation
+ called a <span class="bold"><strong><em class="glossterm">vconnection</em></strong></span>. The
+ vconnection lives as long as it takes to complete the transform, and
+ then destroys itself. You can see this design in all of the sample
+ transform plugins. Plugins that support new protocols also have this
+ architecture: a static continuation listens for incoming client
+ connections, and creates transaction state machines to handle each
+ protocol transaction.</p>
+<p>When you write plugins, there are several ways to send events to
+ continuations. For HTTP plugins, there is a âhookâ mechanism that
+ enables the Traffic Server HTTP state machine to send your plugin wakeup
+ calls when needed. Additionally, several Traffic Server API functions
+ trigger Traffic Server sub-processes to send events to plugins:
+ <code class="code">INKContCall</code>, <code class="code">INKVConnRead</code>,
+ <code class="code">INKCacheWrite</code>, and <code class="code">INKMgmtUpdateRegister</code>, to
+ name a few.</p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="TSHTTPStateMachine"></a>Traffic Server HTTP State Machine</h3></div></div></div>
+<p>Traffic Server does sophisticated HTTP caching and proxying. Its
+ features include checking for alternates and document freshness,
+ filtering, supporting cache hierarchies, and hosting. Traffic Server
+ handles thousands of client requests at a time and each request is
+ handled by an HTTP state machine. These machines follow a complex
+ state diagram that includes all of the states required to support
+ Traffic Serverâs features. The Traffic Server API provides hooks to a
+ subset of these states, chosen for their relevance to plugins. You can
+ view the API hooks and corresponding HTTP states in <a href="HTTPHooksAndTransactions.html#Fig_HHTTPTxStateDiag" title="Figure 8.1. HTTP Transaction State Diagram">Figure 8.1, âHTTP Transaction State Diagramâ</a>.</p>
+<p>The example in this section explains how a plugin typically
+ intervenes and extends Traffic Serverâs processing of an HTTP
+ transaction. Complete details about hooking on to Traffic Server
+ processes are provided in <a href="HTTPHooksAndTransactions.html" title="Chapter 8. HTTP Hooks and Transactions">Chapter 8, <i>HTTP Hooks and Transactions</i></a>.</p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="HTTPTransaction_WhatIs"></a>HTTP Transaction</h4></div></div></div>
+<p>An HTTP transaction consists of a client request for a web
+ document and Traffic Serverâs response. The response could be the
+ requested web server content or it could be an error message. The
+ content could come from the Traffic Server cache or Traffic Server
+ might fetch it from the origin server. The following diagram shows
+ some states in a typical transaction - specifically, the scenario
+ wherein content is served from cache:</p>
+<div class="figure">
+<a name="Fig_HTTPTransaction"></a><p class="title"><b>Figure 2.3. Simplified HTTP Transaction</b></p>
+<div class="mediaobject"><img src="images/transact75.jpg" alt="Simplified HTTP Transaction"></div>
+</div>
+<p>In the diagram above, Traffic Server accepts the client
+ connection, reads the request headers, looks up the origin serverâs
+ IP address, and looks for the requested content in the cache. If
+ itâs not in the cache (a "miss"), then Traffic Server opens a
+ connection to the origin server and issues a request for the
+ content. If the content is in the cache (a "hit"), then Traffic
+ Server checks it for freshness.</p>
+<p>If the content is fresh, then Traffic Server sends a reply
+ header to the client. If the content is stale, then Traffic Server
+ opens a connection to the origin server and requests the content.
+ What <a href="CreatingTSPlugins.html#Fig_HTTPTransaction" title="Figure 2.3. Simplified HTTP Transaction">Figure 2.3, âSimplified HTTP Transactionâ</a> does
+ <span class="emphasis"><em>not</em></span> show is that if there is an error at a any
+ stage, then the HTTP state machine jumps to the âsend reply headerâ
+ state and sends a reply. If the reply is an error, then the
+ transaction closes. If the reply is not an error, then Traffic
+ Server first sends the response content before closing the
+ transaction.</p>
+<div class="figure">
+<a name="Fig_APIHooks_States"></a><p class="title"><b>Figure 2.4. API Hooks Corresponding to States Listed in <a href="CreatingTSPlugins.html#Fig_HTTPTransaction" title="Figure 2.3. Simplified HTTP Transaction">Figure 2.3, âSimplified HTTP Transactionâ</a></b></p>
+<div class="mediaobject"><img src="images/transact_hook75.jpg" alt="API Hooks Corresponding to States Listed in"></div>
+</div>
+<p>You use hooks as triggers to start your plugin. The name of a
+ hook reflects the Traffic Server state that was <span class="emphasis"><em>just
+ completed</em></span>. For example, the âOS DNS lookupâ hook would
+ wake up a plugin right <span class="emphasis"><em>after</em></span> the origin server
+ DNS lookup. For a plugin that requires the IP address of the
+ requested origin server, this hook is the right one to use. The
+ Blacklist plugin works in this manner, as shown in <a href="CreatingTSPlugins.html#Fig_BlacklistPlugin" title="Figure 2.5. Blacklist Plugin">Figure 2.5, âBlacklist Pluginâ</a>.</p>
+<div class="figure">
+<a name="Fig_BlacklistPlugin"></a><p class="title"><b>Figure 2.5. Blacklist Plugin</b></p>
+<div class="mediaobject"><img src="images/blacklist75.jpg" alt="Blacklist Plugin"></div>
+</div>
+<p>Traffic Server calls the Blacklist plugin right after the
+ origin server DNS lookup. The plugin checks the requested host
+ against a list of blacklisted servers; if the request is allowed,
+ then the transaction proceeds. If the host is forbidden, then the
+ Blacklist plugin sends the transaction into an error state. When the
+ HTTP state machine gets to the âsend reply headerâ state, it then
+ calls the Blacklist plugin to provide an error message that's sent
+ to the client.</p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="TypesOfHooks"></a>Types of Hooks</h4></div></div></div>
+<p>The Blacklist pluginâs hook to the âorigin server DNS lookupâ
+ state is a <em class="glossterm"><em class="glossterm"><span class="bold"><strong><em class="glossterm">global
+ hook</em></strong></span></em></em>, meaning that
+ the plugin is called every time there's an HTTP transaction with a
+ DNS lookup event. The pluginâs hook to the âsend reply headerâ state
+ is a <em class="glossterm"><span class="bold"><strong><em class="glossterm">transaction
+ hook</em></strong></span></em>, meaning that this hook is
+ only invoked for specified transactions (in the Blacklist example,
+ it's only used for requests to blacklisted servers). Several
+ examples of setting up hooks are provided in the code example
+ chapters, <a href="HeaderBasedPluginEx.html" title="Chapter 4. Header-Based Plugin Examples">Chapter 4, <i>Header-Based Plugin Examples</i></a>, and <a href="HTTPTransformationPlugins.html" title="Chapter 5. HTTP Transformation Plugins">Chapter 5, <i>HTTP Transformation Plugins</i></a>.</p>
+<p><span class="bold"><strong><em class="glossterm">Header manipulation
+ plugins</em></strong></span>, such as filtering, basic
+ authorization, or redirects, usually have a global hook to the DNS
+ lookup or the read request header states. If specific actions need
+ to be done to the transaction further on, then the plugin adds
+ itself to a transaction hook. <span class="bold"><strong><em class="glossterm">Transformation plugins</em></strong></span>
+ require a global hook to check all transactions for transformability
+ followed by a transform hook, which is a type of transaction hook
+ specifically used for transforms.</p>
+</div>
+</div>
+</div>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="id372630"></a>Index</h2></div></div></div>
+<div class="index">
+<div class="indexdiv">
+<h3>C</h3>
+<dl>
+<dt>compiling on HPUX, <a href="ASimplePlugin.html#Compiling_HPUX">HPUX Example</a>
+</dt>
+<dt>compiling on UNIX, <a href="ASimplePlugin.html#Compiling_Unix">Unix Example</a>
+</dt>
+<dt>compiling on Windows NT, <a href="ASimplePlugin.html#Compiling_Windows">Compiling for Windows NT</a>
+</dt>
+<dt>compiling plugins, examples, <a href="ASimplePlugin.html#CompilingYourPlugin">Compile Your Plugin</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>D</h3>
+<dl>
+<dt>deprecated functions, <a href="DeprecatedMarshBufFuncs.html">Deprecated Functions</a>
+</dt>
+<dt>duplicate MIME fields, <a href="DuplicateMIMEFlds.html">Duplicate MIME Fields Are Not Coalesced</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>G</h3>
+<dl>
+<dt>global hook, <a href="SettingGlobalHook.html">Setting a Global Hook</a>
+</dt>
+<dt>global HTTP hooks, <a href="AddingHooks.html">Adding Hooks</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>H</h3>
+<dl>
+<dt>hello-world example, <a href="ASimplePlugin.html">A Simple Plugin</a>
+</dt>
+<dt>HTTP header, <a href="MIMEHeaders.html">MIME Headers</a>
+</dt>
+<dt>HTTP session, <a href="HTTPSessions.html">HTTP Sessions</a>
+</dt>
+<dt>HTTP transaction, <a href="HTTPSessions.html">HTTP Sessions</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>I</h3>
+<dl>
+<dt>INKEventFunc, <a href="AccessingTransactionProc.html">Accessing the Transaction Being Processed</a>
+</dt>
+<dt>INKHttpAltInfo, <a href="HTTPAlternateSelection.html">HTTP Alternate Selection</a>
+</dt>
+<dt>INKHttpTxn, <a href="AccessingTransactionProc.html">Accessing the Transaction Being Processed</a>, <a href="HTTP_Transactions.html">HTTP Transactions</a>
+</dt>
+<dt>INKMBufferCreate, <a href="HTTPHeaders2.html">HTTP Headers</a>
+</dt>
+<dt>INKVIO, <a href="HTTPTransformationPlugins.html#VIOs">VIOs</a>
+</dt>
+<dt>INK_HTTP_RESPONSE_TRANSFORM_HOOK, <a href="AppendTransformPlugin.html">The Append-Transform Plugin</a>
+</dt>
+<dt>INK_HTTP_SSN_CLOSE_HOOK, <a href="HTTPSessions.html">HTTP Sessions</a>
+</dt>
+<dt>INK_HTTP_SSN_START_HOOK, <a href="HTTPSessions.html">HTTP Sessions</a>
+</dt>
+<dt>INK_LOG_MODE_ADD_TIMESTAMP, <a href="App_SampleSourceCode.html#Sample_blacklist-1.c">blacklist-1.c</a>
+</dt>
+<dt>INT_MAX, <a href="IOGuide.html#VconnectionUsersView">The vconnection userâs view</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>L</h3>
+<dl><dt>lock, <a href="MutexGuide.html#Mutexes">Mutexes</a>
+</dt></dl>
+</div>
+<div class="indexdiv">
+<h3>M</h3>
+<dl>
+<dt>memory leak</dt>
+<dd><dl><dt>in transformation plugins, <a href="Transformations_IO.html#TransformVconnection">Transformation VConnection</a>
+</dt></dl></dd>
+<dt>method(HTTP), <a href="HTTPHeaders.html#AboutHTTPHeaders">About HTTP Headers</a>
+</dt>
+<dt>MIME field, <a href="HTTPHeaders.html#AboutHTTPHeaders">About HTTP Headers</a>, <a href="MIMEHeaders.html">MIME Headers</a>
+</dt>
+<dt>MIME field name, <a href="MIMEHeaders.html">MIME Headers</a>
+</dt>
+<dt>MIME field value, <a href="MIMEHeaders.html">MIME Headers</a>
+</dt>
+<dt>MIME fields, <a href="MIMEFldsBelongAssocMIMEHdr.html">MIME Fields Always Belong to an Associated MIME
+ Header</a>
+</dt>
+<dt>MIME header, <a href="HTTPHeaders.html#AboutHTTPHeaders">About HTTP Headers</a>, <a href="MIMEHeaders.html">MIME Headers</a>
+</dt>
+<dd><dl><dt>Backus-Naur form, <a href="MIMEHeaders.html">MIME Headers</a>
+</dt></dl></dd>
+<dt>multiple plugins, <a href="Updatingplugin.configFile.html">Update the plugin.config File</a>
+</dt>
+<dt>mutexes, <a href="MutexGuide.html#Mutexes">Mutexes</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>N</h3>
+<dl>
+<dt>new MIME field functions, <a href="MIMEFldsBelongAssocMIMEHdr.html">MIME Fields Always Belong to an Associated MIME
+ Header</a>
+</dt>
+<dt>NT</dt>
+<dd><dl><dt>compiling plugins, <a href="ASimplePlugin.html#Compiling_Windows">Compiling for Windows NT</a>
+</dt></dl></dd>
+<dt>null-terminated strings, <a href="GuideTSHTTPHdrSyst.html#NoNullTerminatedStrings">No Null-Terminated Strings</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>P</h3>
+<dl>
+<dt>parent continuation, <a href="BlacklistPlugin.html#CreatingParentContinuation">Creating the Parent Continuation</a>
+</dt>
+<dt>parent INKMLoc, <a href="RlsMarshalBufHandles.html">Release Marshal Buffer Handles</a>
+</dt>
+<dt>parent MIME header, <a href="MIMEFldsBelongAssocMIMEHdr.html">MIME Fields Always Belong to an Associated MIME
+ Header</a>
+</dt>
+<dt>plugin.config, <a href="GetingStarted.html#PluginConfiguration">Plugin Configuration</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>R</h3>
+<dl>
+<dt>read VIO, <a href="HTTPTransformationPlugins.html#WritingContentTransformPlugins">Writing Content Transform Plugins</a>
+</dt>
+<dt>releasing mbuffer handles, <a href="RlsMarshalBufHandles.html">Release Marshal Buffer Handles</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>S</h3>
+<dl>
+<dt>sample code</dt>
+<dd><dl>
+<dt>INKPluginRegister, <a href="PlusingRegisAndVersionCkg.html">Plugin Registration and Version Checking</a>
+</dt>
+<dt>version check, <a href="PlusingRegisAndVersionCkg.html">Plugin Registration and Version Checking</a>
+</dt>
+</dl></dd>
+<dt>statistics</dt>
+<dd><dl><dt>viewing, <a href="ViewStatsUsingTrafLine.html">Viewing Statistics Using Traffic Line</a>
+</dt></dl></dd>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>T</h3>
+<dl>
+<dt>thread locking, <a href="MutexGuide.html#Mutexes">Mutexes</a>
+</dt>
+<dt>Traffic Edge, <a href="PlusingRegisAndVersionCkg.html">Plugin Registration and Version Checking</a>
+</dt>
+<dt>Traffic Line, <a href="ViewStatsUsingTrafLine.html">Viewing Statistics Using Traffic Line</a>
+</dt>
+<dt>Traffic Server, <a href="PlusingRegisAndVersionCkg.html">Plugin Registration and Version Checking</a>
+</dt>
+<dt>transaction, <a href="AccessingTransactionProc.html">Accessing the Transaction Being Processed</a>
+</dt>
+<dd><dl><dt>getting a handle to, <a href="AccessingTransactionProc.html">Accessing the Transaction Being Processed</a>
+</dt></dl></dd>
+<dt>transaction hook, <a href="SettingUpTransacHook.html">Setting Up a Transaction Hook</a>
+</dt>
+<dt>transformation, <a href="HTTPTransformationPlugins.html#WritingContentTransformPlugins">Writing Content Transform Plugins</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>V</h3>
+<dl>
+<dt>vconnection, <a href="HTTPTransformationPlugins.html#WritingContentTransformPlugins">Writing Content Transform Plugins</a>
+</dt>
+<dt>version checking, <a href="PlusingRegisAndVersionCkg.html">Plugin Registration and Version Checking</a>
+</dt>
+<dt>VIO, <a href="HTTPTransformationPlugins.html#WritingContentTransformPlugins">Writing Content Transform Plugins</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>W</h3>
+<dl><dt>write VIO, <a href="HTTPTransformationPlugins.html#WritingContentTransformPlugins">Writing Content Transform Plugins</a>
+</dt></dl>
+</div>
+</div>
+</div>
+</div>
+</body>
+</html>
Propchange: incubator/trafficserver/site/trunk/docs/sdk/CreatingTSPlugins.html
------------------------------------------------------------------------------
svn:keywords = Id
Added: incubator/trafficserver/site/trunk/docs/sdk/CustInstallLicenseFunctions.html
URL: http://svn.apache.org/viewvc/incubator/trafficserver/site/trunk/docs/sdk/CustInstallLicenseFunctions.html?rev=831152&view=auto
==============================================================================
--- incubator/trafficserver/site/trunk/docs/sdk/CustInstallLicenseFunctions.html (added)
+++ incubator/trafficserver/site/trunk/docs/sdk/CustInstallLicenseFunctions.html Thu Oct 29 23:23:25 2009
@@ -0,0 +1,82 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Customer Installation and Licensing Functions</title>
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/reset/reset-min.css" type="text/css">
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/fonts/fonts-min.css" type="text/css">
+<link rel="stylesheet" href="http://yui.yahooapis.com/2.2.2/build/treeview/assets/tree.css" type="text/css">
+<link rel="stylesheet" href="css/ydoc.css" type="text/css">
+<link rel="stylesheet" href="css/ydoc-chunk.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
+<link rel="start" href="index.html" title="Traffic Server Software Developers Kit">
+<link rel="up" href="FunctionReference.html" title="Chapter 18. Function Reference">
+<link rel="prev" href="INKMgmtStringGet.html" title="INKMgmtStringGet">
+<link rel="next" href="INKPluginDirGet.html" title="INKPluginDirGet">
+<link rel="preface" href="Preface.html" title="Preface">
+<link rel="chapter" href="GetingStarted.html" title="Chapter 1. Getting Started">
+<link rel="chapter" href="CreatingTSPlugins.html" title="Chapter 2. How to Create Traffic Server Plugins">
+<link rel="index" href="CreatingTSPlugins.html#id372630" title="Index">
+<link rel="chapter" href="ch03.html" title="Chapter 3. Remap Plugin">
+<link rel="chapter" href="HeaderBasedPluginEx.html" title="Chapter 4. Header-Based Plugin Examples">
+<link rel="chapter" href="HTTPTransformationPlugins.html" title="Chapter 5. HTTP Transformation Plugins">
+<link rel="chapter" href="NewProtocolPlugins.html" title="Chapter 6. New Protocol Plugins">
+<link rel="chapter" href="ch07.html" title="Chapter 7. Cache Plugin">
+<link rel="chapter" href="HTTPHooksAndTransactions.html" title="Chapter 8. HTTP Hooks and Transactions">
+<link rel="chapter" href="MiscellaneousInterfaceGuide.html" title="Chapter 9. Miscellaneous Interface Guide">
+<link rel="chapter" href="HTTPHeaders.html" title="Chapter 10. HTTP Headers">
+<link rel="chapter" href="MutexGuide.html" title="Chapter 11. Mutex Guide">
+<link rel="chapter" href="Continuations.html" title="Chapter 12. Continuations">
+<link rel="chapter" href="PluginConfigurations.html" title="Chapter 13. Plugin Configurations">
+<link rel="chapter" href="ActionsGuide.html" title="Chapter 14. Actions Guide">
+<link rel="chapter" href="IOGuide.html" title="Chapter 15. IO Guide">
+<link rel="chapter" href="PluginManagement.html" title="Chapter 16. Plugin Management">
+<link rel="chapter" href="AddingStatistics.html" title="Chapter 17. Adding Statistics">
+<link rel="chapter" href="FunctionReference.html" title="Chapter 18. Function Reference">
+<link rel="appendix" href="App_SampleSourceCode.html" title="Appendix A. Sample Source Code">
+<link rel="appendix" href="App_DeprecatedFunctions.html" title="Appendix B. Deprecated Functions">
+<link rel="appendix" href="App_Troubleshooting.html" title="Appendix C. Troubleshooting Tips">
+<link rel="appendix" href="FunctionIndex.html" title="Appendix D. Function Index">
+<link rel="appendix" href="TypeIndex.html" title="Appendix E. Type Index">
+<link rel="index" href="ConceptIndex.html" title="Index">
+<link rel="subsection" href="CustInstallLicenseFunctions.html#INKInstallDirGet" title="INKInstallDirGet">
+<link rel="subsection" href="INKPluginDirGet.html" title="INKPluginDirGet">
+<link rel="subsection" href="INKPluginLicenseRequired.html" title="INKPluginLicenseRequired">
+<script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/yahoo/yahoo-min.js"></script><script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/event/event-min.js"></script><script type="text/javascript" src="http://yui.yahooapis.com/2.2.2/build/treeview/treeview-min.js"></script><script type="text/javascript" src="js/tocnodes.js"></script><script type="text/javascript" src="js/toc.js"></script><script type="text/javascript">
+ document.write("<style> div.toc {display: none} </style>");
+ </script>
+</head>
+<body>
+<div class="doctitle">
+<a href="index.html">Home</a>
+<img src="images/docbook/ts75.png"><h1 class="doctitle">Traffic Server Software Developers Kit</h1>
+</div>
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="INKMgmtStringGet.html">Prev</a> â INKMgmtStringGet</div>
+<div class="navnext">INKPluginDirGet â <a accesskey="n" href="INKPluginDirGet.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="CustInstallLicenseFunctions"></a>Customer Installation and Licensing Functions</h2></div></div></div>
+<p></p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="INKInstallDirGet"></a>INKInstallDirGet</h3></div></div></div>
+<p>Gets Traffic Serverâs install directory.</p>
+<div class="variablelist"><dl>
+<dt><span class="term">Prototype</span></dt>
+<dd><p><code class="code">const char * INKInstallDirGet(void)</code></p></dd>
+<dt><span class="term">Description</span></dt>
+<dd><p>Get Traffic Serverâs installation directory.</p></dd>
+<dt><span class="term">Returns</span></dt>
+<dd><p>A pointer to a string containing the Traffic Serverâs
+ installation directory.</p></dd>
+<dt><span class="term">First release</span></dt>
+<dd><p>Traffic Server 3.5</p></dd>
+</dl></div>
+</div>
+</div>
+</body>
+</html>
Propchange: incubator/trafficserver/site/trunk/docs/sdk/CustInstallLicenseFunctions.html
------------------------------------------------------------------------------
svn:keywords = Id