trafficserver-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jpe...@apache.org
Subject [27/51] trafficserver git commit: Documentation reorganization
Date Tue, 03 Nov 2015 06:10:03 GMT
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/arch/cache/tier-storage.en.rst
----------------------------------------------------------------------
diff --git a/doc/arch/cache/tier-storage.en.rst b/doc/arch/cache/tier-storage.en.rst
deleted file mode 100644
index 88c147d..0000000
--- a/doc/arch/cache/tier-storage.en.rst
+++ /dev/null
@@ -1,143 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-   or more contributor license agreements.  See the NOTICE file
-   distributed with this work for additional information
-   regarding copyright ownership.  The ASF licenses this file
-   to you under the Apache License, Version 2.0 (the
-   "License"); you may not use this file except in compliance
-   with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing,
-   software distributed under the License is distributed on an
-   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-   KIND, either express or implied.  See the License for the
-   specific language governing permissions and limitations
-   under the License.
-
-Tiered Storage Design
-==============================
-
-.. include:: common.defs
-
-Introduction
---------------
-
-Tiered storage is an attempt to allow |TS| to take advantage of physical storage
-with different properties. This design concerns only mechanism. Policies to take
-advantage of these are outside of the scope of this document. Instead we will
-presume an *oracle* which implements this policy and describe the queries that
-must be answered by the oracle and the effects of the answers.
-
-Beyond avoiding question of tier policy, the design is also intended to be
-effectively identical to current operations for the case where there is only
-one tier.
-
-The most common case for tiers is an ordered list of tiers, where higher tiers
-are presumed faster but more expensive (or more limited in capacity). This is
-not required. It might be that different tiers are differentiated by other
-properties (such as expected persistence). The design here is intended to
-handle both cases.
-
-The design presumes that if a user has multiple tiers of storage and an ordering
-for those tiers, they will usually want content stored at one tier level to also
-be stored at every other lower level as well, so that it does not have to be
-copied if evicted from a higher tier.
-
-Configuration
--------------
-
-Each :term:`storage unit` in :file:`storage.config` can be marked with a
-*quality* value which is 32 bit number. Storage units that are not marked are
-all assigned the same value which is guaranteed to be distinct from all explicit
-values. The quality value is arbitrary from the point of view of this design,
-serving as a tag rather than a numeric value. The user (via the oracle) can
-impose what ever additional meaning is useful on this value (rating, bit
-slicing, etc.).
-
-In such cases, all :term:`volumes <cache volume>` should be explicitly assigned
-a value, as the default (unmarked) value is not guaranteed to have any
-relationship to explicit values. The unmarked value is intended to be useful in
-situations where the user has no interest in tiered storage and so wants to let
-|TS| automatically handle all volumes as a single tier.
-
-Operations
-----------
-
-After a client request is received and processed, volume assignment is done. For
-each tier, the oracle would return one of four values along with a volume
-pointer:
-
-``READ``
-    The tier appears to have the object and can serve it.
-
-``WRITE``
-    The object is not in this tier and should be written to this tier if
-    possible.
-
-``RW``
-    Treat as ``READ`` if possible, but if the object turns out to not in the
-    cache treat as ``WRITE``.
-
-``NO_SALE``
-    Do not interact with this tier for this object.
-
-The :term:`volume <cache volume>` returned for the tier must be a volume with
-the corresponding tier quality value. In effect, the current style of volume
-assignment is done for each tier, by assigning one volume out of all of the
-volumes of the same quality and returning one of ``RW`` or ``WRITE``, depending
-on whether the initial volume directory lookup succeeds. Note that as with
-current volume assignment, it is presumed this can be done from in memory
-structures (no disk I/O required).
-
-If the oracle returns ``READ`` or ``RW`` for more than one tier, it must also
-return an ordering for those tiers (it may return an ordering for all tiers,
-ones that are not readable will be ignored). For each tier, in that order, a
-read of cache storage is attempted for the object. A successful read locks that
-tier as the provider of cached content. If no tier has a successful read, or no
-tier is marked ``READ`` or ``RW`` then it is a cache miss. Any tier marked
-``RW`` that fails the read test is demoted to ``WRITE``.
-
-If the object is cached, every tier that returns ``WRITE`` receives the object
-to store in the selected volume (this includes ``RW`` returns that are demoted
-to ``WRITE``). This is a cache to cache copy, not from the :term:`origin server`.
-In this case, tiers marked ``RW`` that are not tested for read will not receive
-any data and will not be further involved in the request processing.
-
-For a cache miss, all tiers marked ``WRITE`` will receive data from the origin
-server connection (if successful).
-
-This means, among other things, that if there is a tier with the object all
-other tiers that are written will get a local copy of the object, and the origin
-server will not be used. In terms of implementation, currently a cache write to
-a volume is done via the construction of an instance of :cpp:class:`CacheVC`
-which recieves the object stream. For tiered storage, the same thing is done
-for each target volume.
-
-For cache volume overrides (via :file:`hosting.config`) this same process is
-used except with only the volumes stripes contained within the specified cache
-volume.
-
-Copying
--------
-
-It may be necessary to provide a mechanism to copy objects between tiers outside
-of a client originated transaction. In terms of implementation, this is straight
-forward using :cpp:class:`HttpTunnel` as if in a transaction, only using a
-:cpp:class:`CacheVC` instance for both the producer and consumer. The more
-difficult question is what event would trigger a possible copy. A signal could
-be provided whenever a volume directory entry is deleted, although it should be
-noted that the object in question may have already been evicted when this event
-happens.
-
-Additional Notes
-----------------
-
-As an example use, it would be possible to have only one cache volume that uses
-tiered storage for a particular set of domains using volume tagging.
-:file:`hosting.config` would be used to direct those domains to the selected
-cache volume. The oracle would check the URL in parallel and return ``NO_SALE``
-for the tiers in the target cache volume for other domains. For the other tier
-(that of the unmarked storage units), the oracle would return ``RW`` for the
-tier in all cases as that tier would not be queried for the target domains.
-

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/arch/hacking/config-var-impl.en.rst
----------------------------------------------------------------------
diff --git a/doc/arch/hacking/config-var-impl.en.rst b/doc/arch/hacking/config-var-impl.en.rst
deleted file mode 100644
index e4b0235..0000000
--- a/doc/arch/hacking/config-var-impl.en.rst
+++ /dev/null
@@ -1,335 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-   or more contributor license agreements.  See the NOTICE file
-   distributed with this work for additional information
-   regarding copyright ownership.  The ASF licenses this file
-   to you under the Apache License, Version 2.0 (the
-   "License"); you may not use this file except in compliance
-   with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing,
-   software distributed under the License is distributed on an
-   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-   KIND, either express or implied.  See the License for the
-   specific language governing permissions and limitations
-   under the License.
-
-.. Referenced source files
-
-.. |RecCore.cc| replace:: ``RecCore.cc``
-
-.. _RecCore.cc: https://github.com/apache/trafficserver/blob/master/lib/records/RecCore.cc
-
-.. |RecordsConfig.cc| replace:: ``RecordsConfig.cc``
-
-.. _RecordsConfig.cc: https://github.com/apache/trafficserver/blob/master/mgmt/RecordsConfig.cc
-
-.. |apidefs.h.in| replace:: ``apidefs.h.in``
-
-.. _apidefs.h.in: https://github.com/apache/trafficserver/blob/master/lib/ts/apidefs.h.in
-
-.. |InkAPI.cc| replace:: ``InkAPI.cc``
-
-.. _InkAPI.cc: https://github.com/apache/trafficserver/blob/master/proxy/api/InkAPI.cc
-
-.. |InkAPITest.cc| replace:: ``InkAPITest.cc``
-
-.. _InkAPITest.cc: https://github.com/apache/trafficserver/blob/master/proxy/api/InkAPITest.cc
-
-.. |ts_lua_http_config.c| replace:: ``ts_lua_http_config.c``
-
-.. _ts_lua_http_config.c: https://github.com/apache/trafficserver/blob/master/plugins/experimental/ts_lua/ts_lua_http_config.c
-
-.. |TSHttpOverridableConfig.en.rst| replace:: ``TSHttpOverridableConfig.en.rst``
-
-.. _TSHttpOverridableConfig.en.rst: https://github.com/apache/trafficserver/blob/master/doc/reference/api/TSHttpOverridableConfig.en.rst
-
-.. Referenced enumeration values
-
-.. |RECU_DYNAMIC| replace:: ``RECU_DYNAMIC``
-
-.. _RECU_DYNAMIC: recu-dynamic_
-
-
-Configuration Variable Implementation
-=====================================
-
-Adding a new configuration variable in :file:`records.config` requires a number
-of steps which are mostly documented here.
-
-Before adding a new configuration variable, please discuss it on the mailing
-list. It will commonly be the case that a better name, or a more general
-approach to the problem which solves several different issues, may be suggested.
-
-Defining the Variable
-=====================
-
-To begin, the new configuration variables must be added to |RecordsConfig.cc|_.
-This contains a long array of configuration variable records. The fields for
-each record are:
-
-type:``RecT``
-   Type of record. The valid values are:
-
-   ``RECT_NULL``
-      Undefined record.
-
-   ``RECT_CONFIG``
-      General configuration variable.
-
-   ``RECT_PROCESS``
-      Process related statistic.
-
-   ``RECT_NODE``
-      Local statistic.
-
-   ``RECT_CLUSTER``
-      Cluster statistic.
-
-   ``RECT_LOCAL``
-      Configuration variable that is explicitly not shared across a cluster.
-
-   ``RECT_PLUGIN``
-      Plugin created statistic.
-
-   In general, ``RECT_CONFIG`` should be used unless it is required that the
-   value not be shared among members of a cluster, in which case ``RECT_LOCAL``
-   should be used. If you use ``RECT_LOCAL``, you must also start the line with
-   ``LOCAL`` instead of ``CONFIG`` and the name should use ``.local.`` instead
-   of ``.config.``.
-
-name:``char const*``
-   The fully qualified name of the configuration variable. Although there
-   appears to be a hierarchial naming scheme, that's just a convention, and it
-   is not actually used by the code. Nonetheless, new variables should adhere
-   to the hierarchial scheme.
-
-value_type:``RecDataT``
-   The data type of the value. It should be one of ``RECD_INT``,
-   ``RECD_STRING``, ``RECD_FLOAT`` as appropriate.
-
-default:``char const*``
-   The default value for the variable. This is always a string regardless of
-   the *value_type*.
-
-update:``RecUpdateT``
-   Information about how the variable is updated. The valid values are:
-
-   ``RECU_NULL``
-      Behavior is unknown or unspecified.
-
-.. _recu-dynamic:
-
-   ``RECU_DYNAMIC``
-      This can be updated via command line tools.
-
-   ``RECD_RESTART_TS``
-      The :program:`traffic_server` process must be restarted for a new value to take effect.
-
-   ``RECD_RESTART_TM``
-      The :program:`traffic_manager` process must be restarted for a new value to take effect.
-
-   ``RECD_RESTART_TC``
-      The :program:`traffic_cop` process must be restarted for a new value to take effect.
-
-required:``RecordRequiredType``
-   Effectively a boolean that specifies if the record is required to be present,
-   with ``RR_NULL`` meaning not required and ``RR_REQUIRED`` indicating that it
-   is required. Given that using ``RR_REQUIRED`` would be a major
-   incompatibility, ``RR_NULL`` is generally the better choice.
-
-check:``RecCheckT``
-   Additional type checking. It is unclear if this is actually implemented. The
-   valid values are:
-
-   ``RECC_NULL``
-      No additional checking.
-
-   ``RECC_STR``
-      Verify the value is a string.
-
-   ``RECC_INT``
-      Verify the value is an integer.
-
-   ``RECC_IP``
-      Verify the value is an IP address. Unknown if this checks for IPv6.
-
-.. XXX confirm RECC_IP & IPv6 behavior
-
-pattern:``char const*``
-   This provides a regular expressions (PCRE format) for validating the value,
-   beyond the basic type validation performed by ``RecCheckT``. This can be
-   ``NULL`` if there is no regular expression to use.
-
-access:``RecAccessT``
-   Access control. The valid values are:
-
-   ``RECA_NULL``
-      The value is read / write.
-
-   ``RECA_READ_ONLY``
-      The value is read only.
-
-   ``RECA_NO_ACCESS``
-      No access to the value; only privileged level parts of ATS can access the
-      value.
-
-Variable Infrastructure
-=======================
-
-The primary effort in defining a configuration variable is handling updates,
-generally via :option:`traffic_ctl config reload`. This is handled in a generic way, as
-described in the next section, or in a :ref:`more specialized way <http-config-var-impl>`
-(built on top of the generic mechanism) for HTTP related configuration
-variables. This is only needed if the variable is marked as dynamically
-updateable (|RECU_DYNAMIC|_) although HTTP configuration variables should be
-dynamic if possible.
-
-Documentation and Defaults
---------------------------
-
-A configuration variable should be documented in :file:`records.config`. There
-are many examples in the file already that can be used for guidance. The general
-format is to use the tag ::
-
-   .. ts:cv:`variable.name.here`
-
-The arguments to this are the same as for the configuration file. The
-documentation generator will pick out key bits and use them to decorate the
-entry. In particular if a value is present it will be removed and used as the
-default value. You can attach some additional options to the variable. These
-are:
-
-reloadable
-   The variable can be reloaded via command line on a running Traffic Server.
-
-metric
-   Specify the units for the value. This is critical for variables that use unexpected or non-obvious metrics, such as minutes instead of seconds, or disk sectors instead of bytes.
-
-deprecated
-   Mark a variable as deprecated.
-
-.. topic:: Example
-
-   \:ts\:cv\:\`custom.variable\`
-      :reloadable:
-      :metric: minutes
-      :deprecated:
-
-If you need to refer to another configuration variable in the documentation, you
-can use the form ::
-
-   :ts:cv:`the.full.name.of.the.variable`
-
-This will display the name as a link to the full definition.
-
-In general, a new configuration variable should not be present in the default
-:file:`records.config`. If it is added, such defaults should be added to the
-file ``proxy/config/records.config.default.in``. This is used to generate the
-default :file:`records.config`. Just add the variable to the file in an
-appropriate place with a proper default as this will now override whatever
-default you put in the code for new installs.
-
-Handling Updates
-----------------
-
-The simplest mechanism for handling updates is the ``REC_EstablishStaticConfigXXX``
-family of functions. This mechanism will cause the value in the indicated
-instance to be updated in place when an update to :file:`records.config` occurs.
-This is done asynchronously using atomic operations. Use of these variables must
-keep that in mind.
-
-If a variable requires additional handling when updated a callback can be
-registered which is called when the variable is updated. This is what the
-``REC_EstablishStaticConfigXXX`` calls do internally with a callback that simply
-reads the new value and writes it to storage indicated by the call parameters.
-The functions used are the ``link_XXX`` static functions in |RecCore.cc|_.
-
-To register a configuration variable callback, call ``RecRegisterConfigUpdateCb``
-with the arguments:
-
-``char const*`` *name*
-   The variable name.
-
-*callback*
-   A function with the signature ``<int (char const* name, RecDataT type, RecData data, void* cookie)>``.
-   The :arg:`name` value passed is the same as the :arg:`name` passed to the
-   registration function as is the :arg:`cookie` argument. The :arg:`type` and
-   :arg:`data` are the new value for the variable. The return value is currently
-   ignored. For future compatibility return ``REC_ERR_OKAY``.
-
-``void*`` *cookie*
-   A value passed to the *callback*. This is only for the callback, the
-   internals simply store it and pass it on.
-
-*callback* is called under lock so it should be quick and not block. If that is
-necessary a :term:`continuation` should be scheduled to handle the required
-action.
-
-.. note::
-
-   The callback occurs asynchronously. For HTTP variables as described in the
-   next section, this is handled by the more specialized HTTP update mechanisms.
-   Otherwise it is the implementor's responsibility to avoid race conditions.
-
-.. _http-config-var-impl:
-
-HTTP Configuation Values
-------------------------
-
-Variables used for HTTP processing should be declared as members of the
-``HTTPConfigParams`` structure (but see :ref:`overridable-config-vars` for
-further details) and use the specialized HTTP update mechanisms which handle
-synchronization and initialization issues.
-
-The configuration logic maintains two copies of the ``HTTPConfigParams``
-structure, the master copy and the current copy. The master copy is kept in the
-``m_master`` member of the ``HttpConfig`` singleton. The current copy is kept in
-the ConfigProcessor. The goal is to provide a (somewhat) atomic update for
-configuration variables which are loaded individually in to the master copy as
-updates are received and then bulk copied to a new instance which is then
-swapped in as the current copy. The HTTP state machine interacts with this
-mechanism to avoid race conditions.
-
-For each variable, a mapping between the variable name and the appropriate
-member in the master copy should be established between in the ``HTTPConfig::startup``
-method. The ``HttpEstablishStaticConfigXXX`` functions should be used unless
-there is a strong, explicit reason to not do so.
-
-The ``HTTPConfig::reconfigure`` method handles the current copy of the HTTP
-configuration variables. Logic should be added here to copy the value from the
-master copy to the current copy. Generally this will be a simple assignment. If
-there are dependencies between variables, those should be checked and enforced
-in this method.
-
-.. _overridable-config-vars:
-
-Overridable Variables
----------------------
-
-HTTP related variables that are changeable per transaction are stored in the
-``OverridableHttpConfigParams`` structure, an instance of which is the ``oride``
-member of ``HTTPConfigParams`` and therefore the points in the previous section
-still apply. The only difference for that is the further ``.oride`` member specifier in the structure references.
-
-The variable is required to be accessible from the transaction API. In addition
-to any custom API functions used to access the value, the following items are
-required for generic access:
-
-#. Add a value to the ``TSOverridableConfigKey`` enumeration in |apidefs.h.in|_.
-
-#. Augment the ``TSHttpTxnConfigFind`` function to return this enumeration value
-   when given the name of the configuration variable. Be sure to count the
-   charaters very carefully.
-
-#. Augment the ``_conf_to_memberp`` function in |InkAPI.cc|_ to return a pointer
-   to the appropriate member of ``OverridableHttpConfigParams`` and set the type
-   if not a byte value.
-
-#. Update the testing logic in |InkAPITest.cc|_ by adding the string name of the
-   configuration variable to the ``SDK_Overridable_Configs`` array.
-
-#. Update the Lua plugin enumeration ``TSLuaOverridableConfigKey`` in |ts_lua_http_config.c|_.
-
-#. Update the documentation of :ref:`ts-overridable-config` in |TSHttpOverridableConfig.en.rst|_.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/arch/hacking/index.en.rst
----------------------------------------------------------------------
diff --git a/doc/arch/hacking/index.en.rst b/doc/arch/hacking/index.en.rst
deleted file mode 100644
index 2fbb17c..0000000
--- a/doc/arch/hacking/index.en.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-Hacking
-*******
-
-.. Licensed to the Apache Software Foundation (ASF) under one
-   or more contributor license agreements.  See the NOTICE file
-   distributed with this work for additional information
-   regarding copyright ownership.  The ASF licenses this file
-   to you under the Apache License, Version 2.0 (the
-   "License"); you may not use this file except in compliance
-   with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing,
-   software distributed under the License is distributed on an
-   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-   KIND, either express or implied.  See the License for the
-   specific language governing permissions and limitations
-   under the License.
-
-Introduction
-------------
-
-This is a documentation stub on how to hack Apache Traffic Server. Here we try
-to document things such as how to write and run unit or regression tests or how
-to inspect the state of the core with a debugger.
-
-.. toctree::
-   :maxdepth: 2
-
-   config-var-impl.en
-   release-process.en

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/arch/hacking/release-process.en.rst
----------------------------------------------------------------------
diff --git a/doc/arch/hacking/release-process.en.rst b/doc/arch/hacking/release-process.en.rst
deleted file mode 100644
index 5ef784e..0000000
--- a/doc/arch/hacking/release-process.en.rst
+++ /dev/null
@@ -1,171 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-   or more contributor license agreements.  See the NOTICE file
-   distributed with this work for additional information
-   regarding copyright ownership.  The ASF licenses this file
-   to you under the Apache License, Version 2.0 (the
-   "License"); you may not use this file except in compliance
-   with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing,
-   software distributed under the License is distributed on an
-   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-   KIND, either express or implied.  See the License for the
-   specific language governing permissions and limitations
-   under the License.
-
-
-Traffic Server Release Process
-==============================
-
-Managing a release is easiest in an environment that is as clean as possible.
-For this reason, cloning the code base in to a new directory for the release
-process is recommended.
-
-Requirements
-------------
-
-* A system for git and building.
-
-* A cryptographic key that has been signed by at least two other PMC members.
-  This should be preferentially associated with your ``apache.org`` email
-  address but that is not required.
-
-.. _release-management-release-candidate:
-
-Release Candidate
------------------
-
-The first step in a release is making a release candidate. This is distributed
-to the community for validation before the actual release.
-
-Document
---------
-
-Gather up information about the changes for the release. The ``CHANGES`` file
-is a good starting point. You may also want to check the commits since the last
-release. The primary purpose of this is to generate a list of the important
-changes since the last release.
-
-Create or update a page on the Wiki for the release. If it is a major or minor
-release it should have its own page. Use the previous release page as a
-template. Point releases should get a section at the end of the corresponding
-release page.
-
-Write an announcement for the release. This will contain much of the same
-information that is on the Wiki page but more concisely. Check the
-`mailing list archives <http://mail-archives.apache.org/mod_mbox/trafficserver-dev/>`_
-for examples to use as a base.
-
-Build
------
-
-#. Go to the top level source directory.
-
-#. Check the version in ``configure.ac``. There are two values near the top that
-   need to be set, ``TS_VERSION_S`` and ``TS_VERSION_N``. These are the release
-   version number in different encodings.
-
-#. Check the variable ``RC`` in the top level ``Makefile.am``. This should be
-   the point release value. This needs to be changed for every release
-   candidate. The first release candidate is ``0`` (zero).
-
-#. Execute the following commands to make the distribution files. ::
-
-      autoreconf -i
-      ./configure
-      make rel-candidate
-
-These steps will create the distribution files and sign them using your key.
-Expect to be prompted twice for your passphrase unless you use an ssh key agent.
-If you have multiple keys you will need to set the default appropriately
-beforehand, as no option will be provided to select the signing key. The files
-should have names that start with ``trafficserver-X.Y.Z-rcA.tar.bz2`` where
-``X.Y.Z`` is the version and ``A`` is the release candidate counter. There
-should be four such files, one with no extension and three others with the
-extensions ``asc``, ``md5``, and ``sha1``. This will also create a signed git
-tag of the form ``X.Y.Z-rcA``.
-
-Distribute
-----------
-
-The release candidate files should be uploaded to some public storage. Your
-personal storage on *people.apach.org* is a reasonable location to use.
-
-Send the release candiate announcement to the *users* and *dev* mailinging
-lists, noting that it is a release *candidate* and providing a link to the
-distribution files you uploaded. This announcement should also call for a vote
-on the candidate, generally with a 72 hours time limit.
-
-If the voting was successful (at least three "+1" votes and no "-1" votes),
-proceed to :ref:`release-management-official-release`. Otherwise, repeat the
-:ref:`release-management-release-candidate` process.
-
-.. _release-management-official-release:
-
-Official Release
-----------------
-
-Build the distribution files with the command ::
-
-   make release
-
-Be sure to not have changed anything since the release candidate was built so
-the checksums are identical. This will create a signed git tag of the form
-``X.Y.Z`` and produce the distribution files. Push the tag to the ASF repository
-with the command ::
-
-   git push origin X.Y.Z
-
-This presumes ``origin`` is the name for the ASF remote repository which is
-correct if you originally clone from the ASF repository.
-
-The distribution files must be added to an SVN repository. This can be accessed
-with the command::
-
-   svn co https://dist.apache.org/repos/dist/release/trafficserver <local-directory>
-
-All four of the distribution files go here. If you are making a point release
-then you should also remove the distribution files for the previous release.
-Allow 24 hours for the files to be distributed through the ASF infrastructure.
-
-The Traffic Server website must be updated. This is an SVN repository which you
-can access with ::
-
-   svn co https://svn.apache.org/repos/asf/trafficserver/site/trunk <local-directory>
-
-The files of interest are in the ``content`` directory.
-
-``index.html``
-   This is the front page. The places to edit here are any security
-   announcements at the top and the "News" section.
-
-``downloads.en.mdtext``
-   Update the downloads page to point to the new download objects.
-
-After making changes, commit them and then run ::
-
-   publish.pl trafficserver <apache-id>
-
-On the ``people.apache.org`` host.
-
-If needed, update the Wiki page for the release to point at the release
-distribution files.
-
-Update the announcement, if needed, to refer to the release distribution files
-and remove the comments concerning the release candidate. This announcement
-should be sent to the *users* and *dev* mailing lists. It should also be sent
-to the ASF announcement list, which must be done using an ``apache.org`` email
-address.
-
-Finally, update various files after the release:
-
-* The ``STATUS`` file for master and for the release branch to include this version.
-
-* The ``CHANGES`` file to have a header for the next version.
-
-* ``configure.ac`` to be set to the next version.
-
-* In the top level ``Makefile.am`` change ``RC`` to have the value ``0``.
-

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/arch/index.en.rst
----------------------------------------------------------------------
diff --git a/doc/arch/index.en.rst b/doc/arch/index.en.rst
deleted file mode 100644
index 2ed51dc..0000000
--- a/doc/arch/index.en.rst
+++ /dev/null
@@ -1,40 +0,0 @@
-Architecture and Hacking
-************************
-
-.. Licensed to the Apache Software Foundation (ASF) under one
-   or more contributor license agreements.  See the NOTICE file
-   distributed with this work for additional information
-   regarding copyright ownership.  The ASF licenses this file
-   to you under the Apache License, Version 2.0 (the
-   "License"); you may not use this file except in compliance
-   with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing,
-   software distributed under the License is distributed on an
-   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-   KIND, either express or implied.  See the License for the
-   specific language governing permissions and limitations
-   under the License.
-
-Introduction
-------------
-
-The original architectural documents for Traffic Server were lost in the
-transition to an open source project. The documents in this section are
-provisional and were written based on the existing code. The purpose is to have
-a high level description of aspects of Traffic Server to better inform ongoing
-work.
-
-In the final section on "hacking" we try to document our approaches to
-understanding and modifying the source.
-
-Contents:
-
-.. toctree::
-   :maxdepth: 2
-
-   cache/cache.en
-   proposals/hostdb.en
-   hacking/index.en

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/arch/proposals/hostdb.en.rst
----------------------------------------------------------------------
diff --git a/doc/arch/proposals/hostdb.en.rst b/doc/arch/proposals/hostdb.en.rst
deleted file mode 100644
index 16a6b4e..0000000
--- a/doc/arch/proposals/hostdb.en.rst
+++ /dev/null
@@ -1,168 +0,0 @@
-Host Resolution
-******************
-
-.. Licensed to the Apache Software Foundation (ASF) under one
-   or more contributor license agreements.  See the NOTICE file
-   distributed with this work for additional information
-   regarding copyright ownership.  The ASF licenses this file
-   to you under the Apache License, Version 2.0 (the
-   "License"); you may not use this file except in compliance
-   with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing,
-   software distributed under the License is distributed on an
-   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-   KIND, either express or implied.  See the License for the
-   specific language governing permissions and limitations
-   under the License.
-
-Introduction
---------------
-
-The current mechanism for resolving host names to IP addresses for Traffic Server is contained the HostDB and DNS
-libraries. These take hostnames and provide IP addresses for them.
-
-The current implementation is generally considered inadequate, both from a functionality point of view and difficulty in
-working with it in other parts of Traffic Server. As Traffic Server is used in more complex situtations this inadequacy
-presents increasing problems.
-
-Goals
------
-
-Updating the host name resolution (currently referred to as "HostDB") has several functions goals
-
-*  Enable additional processing layers to be easily added.
-*  Enable plugins to directly access the name resolution logic
-*  Enable plugins to provide name resolution
-*  Asynchronous (immediate resolve or callback on block)
-*  Minimize allocations -- in particular no allocations for cached resolutions
-*  Simplify interactions with the resolution, particularly with regard to nameservers, origin server failover, and
-   address family handling.
-
-It is also necessary to support a number of specific features that are either currently available or strongly desired.
-
-*  SplitDNS or its equivalent
-*  Use of a hosts file (e.g. ``/etc/hosts``)
-*  Simultaneous IPv4 and IPv6 queries
-*  IP family control
-*  Negative caching
-   *  Server connection failures
-   *  Query failures
-   *  Nameserver failures.
-*  Address validity time out control
-*  Address round robin support
-*  SRV record support (weighted records)
-*  Nameserver round robin
-*  Plugin access to nameserver data (add, remove, enumerate)
-*  Plugin provision of resolvers.
-*  Hooks for plugin detection / recovery from resolution events.
-
-One issue is persistence of the cached resolutions. This creates problems for the current implementation (because of
-size limits it imposes on the cached data) but also allows for quicker restarts in a busy environment.
-
-Basics
-------
-
-The basic design is to separate the functionality into chainable layers so that a resolver with the desired attributes
-can be assembled from those layers. The core interface is that of a lazy iterator. This object returns one of four
-results when asked for an address
-
-* An IP address
-* Done(no more addresses are available)
-* Wait(an address may be available in the future)
-* Fail (no address is available and none will be so in the future)
-
-Each layer (except the bottom) uses this API and also provides it. This enables higher level logic such as the state
-machine to simply use the resolver as a list without having to backtrack states in the case of failures, or have special
-cases for different resolution sources.
-
-To perform a resolution, a client creates a query object (potentially on the stack), initializes it with the required
-data (at least the hostname) and then starts the resolution. Methods on the query object allow its state and IP address
-data to be accessed.
-
-Required Resolvers
-------------------------
-
-Nameserver
-   A bottom level resolver that directly queries a nameserver for DNS data. This contains much of the functionality
-   currently in the ``iocore/dns`` directory.
-
-SplitDNS
-   A resolver that directs requests to one of several resolvers. To emulate current behavior these would be Nameserver
-   instances.
-
-NameserverGroup
-   A grouping mechanism for Nameserver instances that provides failover, round robin, and ordering capabilities. It may be
-   reasonable to merge this with the SplitDNS resolver.
-
-HostFile
-   A resolver that uses a local file to resolve names.
-
-AddressCache
-   A resolver that also has a cache for resolution results. It requires another resolver instance to perform the actual
-   resolution.
-
-Preloaded
-   A resolver that can contain one or more explicitly set IP addresses which are returned. When those are exhausted it
-   falls back to another resolver.
-
-Configuration
--------------
-
-To configuration the resolution, each resolver would be assigned a tag. It is not, however, sufficient to simply provide
-the list of resolver tags because some resolvers require additional configuration. Unfortunately this will likely
-require a separate configuration file outside of :file:`records.config`, although we would be able to remove
-:file:`splitdns.config`. In this case we would need chain start / end markers around a list of resolver tags. Each tag
-would the be able to take additional resolver configuration data. For instance, for a SplitDNS resolver the nameservers.
-
-Examples
---------
-
-Transparent operations would benefit from the *Preloaded* resolver. This would be loaded with the origin host address
-provided by the client connection. This could be done early in processing and then no more logic would be required to
-skip DNS processing as it would happen without additional action by the state machine. It would handle the problem of de
-facto denial of service if an origin server becomes unavailable in that configuration, as *Preloaded* would switch to
-alternate addresses automatically.
-
-Adding host file access would be easier as well, as it could be done in a much more modular fashion and then added to
-the stack at configuration time. Whether such addresses were cached would be controlled by chain arrangement rather yet
-more configuration knobs.
-
-The default configuration would be *Preloaded* : *AddressCache* : *Nameserver*.
-
-In all cases the state machine makes requests against the request object to get IP addresses as needed.
-
-Issues
-------
-
-Request object allocation
-=========================
-
-The biggest hurdle is being able to unwind a resolver chain when a block is encountered. There are some ways to deal with this.
-
-1) Set a maximum resolver chain length and declare the request instance so that there is storage for state for that many
-resolvers. If needed and additional value of maximum storage per chain could be set as well. The expected number of
-elements in a chain is expected to be limited, 10 would likely be a reaosnable limit. If settable at source
-configuration time this should be sufficient.
-
-2) Embed class allocators in resolver chains and mark the top / outermost / first resolver. The maximum state size for a
-resolution can be calculated when the chain is created and then the top level resolver can use an allocation pool to
-efficiently allocate request objects. This has an advantage that with a wrapper class the request object can be passed
-along cheaply. Whether that's an advantage in practice is unclear.
-
-Plugin resolvers
-================
-
-If plugins can provide resolvers, how can these can integrated in to existing resolver chains for use by the HTTP SM for
-instance?
-
-Feedback
-========
-
-It should be possible for a client to provide feedback about addresses (e.g., the origin server at this address is not
-available). Not all resolvers will handle feedback but some will and that must be possible.
-
-Related to this is that caching resolvers (such as *AddressCache*) must be able to iterator over all resolved addresses
-even if their client does not ask for them. In effect they must background fill the address data.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/common.defs
----------------------------------------------------------------------
diff --git a/doc/common.defs b/doc/common.defs
index 4cb5c38..80f2117 100644
--- a/doc/common.defs
+++ b/doc/common.defs
@@ -15,10 +15,41 @@
    specific language governing permissions and limitations
    under the License.
 
-.. Global definitions
+.. |ASF| replace:: Apache Software Foundation
 
 .. |ATS| replace:: Apache Traffic Serverâ„¢
 
+.. |AW| replace:: Acme Widgets
+
+.. |RTD| replace:: Read the Docs
+
 .. |TS| replace:: Traffic Server
 
-.. |AW| replace:: Acme Widgets
+.. |RST| replace:: reStructuredText
+
+.. Files in github.
+.. TODO: Should write a custom domain so we can do :ts:git:`iocore/cache/P_CacheDir.h`
+
+.. |HTTP.h| replace:: ``HTTP.h``
+
+.. _HTTP.h: https://github.com/apache/trafficserver/blob/master/proxy/hdrs/HTTP.h
+
+.. |HttpCacheSM.h| replace:: ``HttpCacheSM.h``
+
+.. _HttpCacheSM.h: https://github.com/apache/trafficserver/blob/master/proxy/http/HttpCacheSM.h
+
+.. |HttpCacheSM.cc| replace:: ``HttpCacheSM.cc``
+
+.. _HttpCacheSM.cc: https://github.com/apache/trafficserver/blob/master/proxy/http/HttpCacheSM.cc
+
+.. |P-CacheDir.h| replace:: ``P_CacheDir.h``
+
+.. _P-CacheDir.h: https://github.com/apache/trafficserver/blob/master/iocore/cache/P_CacheDir.h
+
+.. |P-CacheHttp.h| replace:: ``P_CacheHttp.h``
+
+.. _P-CacheHttp.h: https://github.com/apache/trafficserver/blob/master/iocore/cache/P_CacheHttp.h
+
+.. |P-CacheVol.h| replace:: ``P_CacheVol.h``
+
+.. _P-CacheVol.h: https://github.com/apache/trafficserver/blob/master/iocore/cache/P_CacheVol.h

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/conf.py
----------------------------------------------------------------------
diff --git a/doc/conf.py b/doc/conf.py
index 9abe9a4..500a0dd 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -112,6 +112,10 @@ if os.environ.get('READTHEDOCS') == 'True':
           po = polib.pofile(po_file)
           po.save_as_mofile(fpath=mo_file)
   print "done"
+else:
+  import sphinx_rtd_theme
+  html_theme = 'sphinx_rtd_theme'
+  html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
 ## End of HACK
 
 # There are two options for replacing |today|: either, you set today to some
@@ -221,6 +225,14 @@ html_favicon = 'static/images/favicon.ico'
 # so a file named "default.css" will overwrite the builtin "default.css".
 html_static_path = ['static']
 
+# Include a stylesheet that overrides default table styling, to provide
+# content wrapping.
+html_context = {
+  'css_files': [
+    '_static/override.css',  # overrides for wide tables in RTD theme
+  ],
+}
+
 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
 # using the given strftime format.
 #html_last_updated_fmt = '%b %d, %Y'

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSAPI.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSAPI.en.rst b/doc/developer-guide/api/functions/TSAPI.en.rst
new file mode 100644
index 0000000..1a9da2a
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSAPI.en.rst
@@ -0,0 +1,173 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+.. _developer-tsapi:
+
+TSAPI
+*****
+
+Introduction to the Apache Traffic Server API.
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+`#include <ts/remap.h>`
+
+Description
+===========
+
+The Apache Traffic Server API enables you to create plugins, using
+the C programming language, that customize the behavior of your
+Traffic Server installation.
+
+Traffic Server enables sophisticated caching and processing of
+web-related traffic, such as DNS and HTTP requests and responses.
+Traffic Server itself consists of an event-driven loop that can be
+simplified as follows::
+
+    for (;;) {
+        event = get_next_event();
+        handle_event (event);
+    }
+
+You compile your plugin source code to create a shared library that
+Traffic Server loads when it is started. Your plugin contains
+callback functions that are registered for specific Traffic Server
+events. When Traffic Server needs to process an event, it invokes
+any and all call-back functions you've registered for that event
+type.
+
+Possible uses for plugins include the following:
+
+* HTTP processing plugins can filter, blacklist, authorize users or transform content.
+
+* Protocol plugins can enable Traffic Server to proxy-cache new protocol content.
+
+* A blacklisting plugin denies attempts to access web sites that are off-limits.
+
+* Append transform plugins add data to HTTP response content.
+
+* An image conversion plugin transforms JPEG images to GIF images.
+
+* Compression plugins send response content to a compression server
+  that compresses the data (alternatively, a compression library local
+  to the Traffic Server host machine could do the compression).
+
+* Authorization plugins check a user's permissions to access
+  particular web sites. The plugin could consult a local authorization
+  program or send queries to an authorization server.
+
+* A plugin that gathers client information from request headers
+  and enters this information in a database.
+
+* A protocol plugin listen for specific protocol requests on a
+  designated port and then uses Traffic Server's proxy server and
+  cache to serve client requests.
+
+.. _developer-tsapi-naming-conventions:
+
+Naming Conventions
+==================
+
+The Traffic Server API adheres to the following naming conventions:
+
+* The TS prefix is used for all function and variable names defined
+  in the Traffic Server API. For example, :data:`TS_EVENT_NONE`, :type:`TSMutex`,
+  and :func:`TSContCreate`.
+
+* Enumerated values are always written in all uppercase letters.
+  For example, :data:`TS_EVENT_NONE` and :data:`TS_VC_CLOSE_ABORT`.
+
+* Constant values are all uppercase; enumerated values can be seen
+  as a subset of constants. For example, :data:`TS_URL_SCHEME_FILE` and
+  :data:`TS_MIME_FIELD_ACCEPT`.
+
+* The names of defined types are mixed-case. For example, :type:`TSHttpSsn`
+  and :func:`TSHttpTxn`. :func:`TSDebug`
+
+* Function names are mixed-case. For example, :func:`TSUrlCreate`
+  and :func:`TSContDestroy`.
+
+* Function names use the following subject-verb naming style:
+  TS-<subject>-<verb>, where <subject> goes from general to specific.
+  This makes it easier to determine what a function does by reading
+  its name. For example, the function to retrieve the password field
+  (the specific subject) from a URL (the general subject) is
+  :func:`TSUrlPasswordGet`.
+
+* Common verbs like Create, Destroy, Get, Set, Copy, Find, Retrieve,
+  Insert, Remove, and Delete are used only when appropriate.
+
+.. _developer-tsapi-plugin-loading:
+
+Plugin Loading and Configuration
+================================
+
+When Traffic Server is first started, it consults the plugin.config
+file to determine the names of all shared plugin libraries that
+need to be loaded. The plugin.config file also defines arguments
+that are to be passed to each plugin's initialization function,
+:func:`TSPluginInit`. The :file:`records.config` file defines the path to
+each plugin shared library.
+
+The sample :file:`plugin.config` file below contains a comment line, a blank
+line, and two plugin configurations::
+
+    # This is a comment line.
+    my-plugin.so www.junk.com www.trash.com www.garbage.com
+    some-plugin.so arg1 arg2 $proxy.config.http.cache.on
+
+Each plugin configuration in the :file:`plugin.config` file resembles
+a UNIX or DOS shell command; each line in :file:`plugin.config`
+cannot exceed 1023 characters.
+
+The first plugin configuration is for a plugin named my-plugin.so.
+It contains three arguments that are to be passed to that plugin's
+initialization routine. The second configuration is for a plugin
+named some-plugin.so; it contains three arguments. The last argument,
+$proxy.config.http.cache.on, is actually a configuration variable.
+Traffic Server will look up the specified configuration variable
+and substitute its value.
+
+Plugins are loaded and initialized by Traffic Server in the order
+they appear in the :file:`plugin.config` file.
+
+.. _developer-tsapi-plugin-init:
+
+Plugin Initialization
+=====================
+
+Each plugin must define an initialization function named
+:func:`TSPluginInit` that Traffic Server invokes when the
+plugin is loaded. :func:`TSPluginInit` is commonly used to
+read configuration information and register hooks for event
+notification.
+
+Files
+=====
+
+:file:`plugin.config`,
+:file:`records.config`
+
+See Also
+========
+
+:manpage:`TSPluginInit(3ts)`

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSActionCancel.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSActionCancel.en.rst b/doc/developer-guide/api/functions/TSActionCancel.en.rst
new file mode 100644
index 0000000..c15afae
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSActionCancel.en.rst
@@ -0,0 +1,32 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSActionCancel
+**************
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: void TSActionCancel(TSAction actionp)
+
+Description
+===========

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSActionDone.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSActionDone.en.rst b/doc/developer-guide/api/functions/TSActionDone.en.rst
new file mode 100644
index 0000000..d7190cc
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSActionDone.en.rst
@@ -0,0 +1,33 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSActionDone
+************
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: int TSActionDone(TSAction actionp)
+
+
+Description
+===========

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSCacheRead.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSCacheRead.en.rst b/doc/developer-guide/api/functions/TSCacheRead.en.rst
new file mode 100644
index 0000000..6642d24
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSCacheRead.en.rst
@@ -0,0 +1,46 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSCacheRead
+***********
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: TSAction TSCacheRead(TSCont contp, TSCacheKey key)
+
+Description
+===========
+
+Asks the Traffic Server cache if the object corresponding to :arg:`key` exists
+in the cache and can be read.
+
+If the object can be read, the Traffic Server cache calls the continuation
+:arg:`contp` back with the event :data:`TS_EVENT_CACHE_OPEN_READ`. In this case,
+the cache also passes :arg:`contp` a cache vconnection and :arg:`contp` can then
+initiate a read operation on that vconnection using :type:`TSVConnRead`.
+
+If the object cannot be read, the cache calls :arg:`contp` back with the event
+:data:`TS_EVENT_CACHE_OPEN_READ_FAILED`. The user (:arg:`contp`) has the option to
+cancel the action returned by :type:`TSCacheRead`. Note that reentrant calls
+are possible, i.e. the cache can call back the user (:arg:`contp`) in the same
+call.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSCacheRemove.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSCacheRemove.en.rst b/doc/developer-guide/api/functions/TSCacheRemove.en.rst
new file mode 100644
index 0000000..73cfd7d
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSCacheRemove.en.rst
@@ -0,0 +1,44 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSCacheRemove
+*************
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: TSAction TSCacheRemove(TSCont contp, TSCacheKey key)
+
+Description
+===========
+
+Removes the object corresponding to :arg:`key` from the cache.
+
+If the object was removed successfully, the cache calls :arg:`contp` back with the
+event :data:`TS_EVENT_CACHE_REMOVE`. If the object was not found in the cache,
+the cache calls :arg:`contp` back with the event
+:data:`TS_EVENT_CACHE_REMOVE_FAILED`.
+
+In both of these callbacks, the user (:arg:`contp`) does not have to do
+anything.  The user does not get any vconnection from the cache, since
+no data needs to be transferred.  When the cache calls :arg:`contp` back with
+:data:`TS_EVENT_CACHE_REMOVE`, the remove has already been commited.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSCacheWrite.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSCacheWrite.en.rst b/doc/developer-guide/api/functions/TSCacheWrite.en.rst
new file mode 100644
index 0000000..e00c841
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSCacheWrite.en.rst
@@ -0,0 +1,53 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSCacheWrite
+************
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: TSAction TSCacheWrite(TSCont contp, TSCacheKey key)
+
+Description
+===========
+
+Asks the Traffic Server cache if :arg:`contp` can start writing the object
+corresponding to :arg:`key` to the cache.
+
+If the object can be written, the cache calls :arg:`contp` back with the
+event :data:`TS_EVENT_CACHE_OPEN_WRITE`.  In this case, the cache
+also passes :arg:`contp` a cache vconnection and :arg:`contp` can then initiate a
+write operation on that vconnection using :type:`TSVConnWrite`.  The
+object is not committed to the cache until the vconnection is closed.
+When all data has been transferred, the user (:arg:`contp`) must do an
+:type:`TSVConnClose`.  In case of any errors, the user must do an
+``TSVConnAbort(contp, 0)``.
+
+If the object cannot be written, the cache calls :arg:`contp` back with the
+event :data:`TS_EVENT_CACHE_OPEN_WRITE_FAILED`.  This can happen,
+for example, if there is another object with the same :arg:`key` being
+written to the cache.  The user (:arg:`contp`) has the option to cancel the
+action returned by :type:`TSCacheWrite`.
+
+Note that reentrant calls are possible, i.e. the cache can call back
+the user (:arg:`contp`) in the same call.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSConfigDataGet.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSConfigDataGet.en.rst b/doc/developer-guide/api/functions/TSConfigDataGet.en.rst
new file mode 100644
index 0000000..3cff51f
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSConfigDataGet.en.rst
@@ -0,0 +1,32 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSConfigDataGet
+***************
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: void* TSConfigDataGet(TSConfig configp)
+
+Description
+===========

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSConfigGet.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSConfigGet.en.rst b/doc/developer-guide/api/functions/TSConfigGet.en.rst
new file mode 100644
index 0000000..f583081
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSConfigGet.en.rst
@@ -0,0 +1,32 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. defualt-domain:: c
+
+TSConfigGet
+***********
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: TSConfig TSConfigGet(unsigned int id)
+
+Description
+===========

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSConfigRelease.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSConfigRelease.en.rst b/doc/developer-guide/api/functions/TSConfigRelease.en.rst
new file mode 100644
index 0000000..b4b49db
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSConfigRelease.en.rst
@@ -0,0 +1,32 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSConfigRelease
+***************
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: void TSConfigRelease(unsigned int id, TSConfig configp)
+
+Description
+===========

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSConfigSet.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSConfigSet.en.rst b/doc/developer-guide/api/functions/TSConfigSet.en.rst
new file mode 100644
index 0000000..c0383b6
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSConfigSet.en.rst
@@ -0,0 +1,32 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSConfigSet
+***********
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: unsigned int TSConfigSet(unsigned int id, void * data, TSConfigDestroyFunc funcp)
+
+Description
+===========

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSContCall.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSContCall.en.rst b/doc/developer-guide/api/functions/TSContCall.en.rst
new file mode 100644
index 0000000..501f0ac
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSContCall.en.rst
@@ -0,0 +1,32 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSContCall
+**********
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: int TSContCall(TSCont contp, TSEvent event, void * edata)
+
+Description
+===========

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSContCreate.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSContCreate.en.rst b/doc/developer-guide/api/functions/TSContCreate.en.rst
new file mode 100644
index 0000000..8a02884
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSContCreate.en.rst
@@ -0,0 +1,32 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSContCreate
+************
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: TSCont TSContCreate(TSEventFunc funcp, TSMutex mutexp)
+
+Description
+===========

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSContDataGet.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSContDataGet.en.rst b/doc/developer-guide/api/functions/TSContDataGet.en.rst
new file mode 100644
index 0000000..79c6eb3
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSContDataGet.en.rst
@@ -0,0 +1,32 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSContDataGet
+*************
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: void* TSContDataGet(TSCont contp)
+
+Description
+===========

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSContDataSet.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSContDataSet.en.rst b/doc/developer-guide/api/functions/TSContDataSet.en.rst
new file mode 100644
index 0000000..349e724
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSContDataSet.en.rst
@@ -0,0 +1,32 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSContDataSet
+*************
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: void TSContDataSet(TSCont contp, void * data)
+
+Description
+===========

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSContDestroy.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSContDestroy.en.rst b/doc/developer-guide/api/functions/TSContDestroy.en.rst
new file mode 100644
index 0000000..53b6e1e
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSContDestroy.en.rst
@@ -0,0 +1,32 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSContDestroy
+*************
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: void TSContDestroy(TSCont contp)
+
+Description
+===========

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSContMutexGet.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSContMutexGet.en.rst b/doc/developer-guide/api/functions/TSContMutexGet.en.rst
new file mode 100644
index 0000000..fe2b8f3
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSContMutexGet.en.rst
@@ -0,0 +1,32 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSContMutexGet
+**************
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: TSMutex TSContMutexGet(TSCont contp)
+
+Description
+===========

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSContSchedule.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSContSchedule.en.rst b/doc/developer-guide/api/functions/TSContSchedule.en.rst
new file mode 100644
index 0000000..80409fb
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSContSchedule.en.rst
@@ -0,0 +1,32 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSContSchedule
+**************
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: TSAction TSContSchedule(TSCont contp, ink_hrtime timeout, TSThreadPool tp)
+
+Description
+===========

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSDebug.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSDebug.en.rst b/doc/developer-guide/api/functions/TSDebug.en.rst
new file mode 100644
index 0000000..414bea6
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSDebug.en.rst
@@ -0,0 +1,97 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSDebug
+*******
+
+Traffic Server Debugging APIs.
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: void TSDebug(const char * tag, const char * format, ...)
+.. function:: void TSError(const char * tag, const char * format, ...)
+.. function:: int TSIsDebugTagSet(const char * tag)
+.. function:: void TSDebugSpecific(int debug_flag, const char * tag, const char * format, ...)
+.. function:: void TSHttpTxnDebugSet(TSHttpTxn txnp, int on)
+.. function:: void TSHttpSsnDebugSet(TSHttpSsn ssn, int on)
+.. function:: int TSHttpTxnDebugGet(TSHttpTxn txnp)
+.. function:: int TSHttpSsnDebugGet(TSHttpSsn ssn)
+.. function:: const char* TSHttpServerStateNameLookup(TSServerState state)
+.. function:: const char* TSHttpHookNameLookup(TSHttpHookID hook)
+.. function:: const char* TSHttpEventNameLookup(TSEvent event)
+.. macro:: void TSAssert(expression)
+.. macro:: void TSReleaseAssert(expression)
+
+Description
+===========
+
+:func:`TSError` is similar to :func:`printf` except that instead
+of writing the output to the C standard output, it writes output
+to the Traffic Server error log.
+
+:func:`TSDebug` is the same as :func:`TSError` except that it only
+logs the debug message if the given debug :arg:`tag` is enabled. It writes
+output to the Traffic Server debug log.
+
+:func:`TSIsDebugTagSet` returns non-zero if the given debug :arg:`tag` is
+enabled.
+
+In debug mode, :macro:`TSAssert` Traffic Server to prints the file
+name, line number and expression, and then aborts. In release mode,
+the expression is not removed but the effects of printing an error
+message and aborting are. :macro:`TSReleaseAssert` prints an error
+message and aborts in both release and debug mode.
+
+:func:`TSDebugSpecific` emits a debug line even if the debug :arg:`tag`
+is turned off, as long as debug flag is enabled. This can be used
+in conjunction with :func:`TSHttpTxnDebugSet`, :func:`TSHttpSsnDebugSet`,
+:func:`TSHttpTxnDebugGet` and :func:`TSHttpSsnDebugGet` to enable
+debugging on specific session and transaction objects.
+
+:func:`TSHttpServerStateNameLookup`, :func:`TSHttpHookNameLookup` and
+:func:`TSHttpEventNameLookup` converts the respective internal state to a
+string representation. This can be useful in debugging (:func:`TSDebug`),
+logging and other types notifications.
+
+Examples
+========
+
+This example uses :func:`TSDebugSpecific` to log a message when a specific
+debugging flag is enabled::
+
+    #include <ts/ts.h>
+
+    // Produce information about a hook receiving an event
+    TSDebug(PLUGIN_NAME, "Entering hook=%s, event=%s",
+            TSHttpHookNameLookup(hook), TSHttpEventNameLookup(event));
+
+    // Emit debug message if "tag" is enabled or the txn debug
+    // flag is set.
+    TSDebugSpecifc(TSHttpTxnDebugGet(txn), "tag" ,
+            "Hello World from transaction %p", txn);
+
+See Also
+========
+
+:manpage:`TSAPI(3ts)`,
+:manpage:`printf(3)`

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSHostLookup.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSHostLookup.en.rst b/doc/developer-guide/api/functions/TSHostLookup.en.rst
new file mode 100644
index 0000000..41cf405
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSHostLookup.en.rst
@@ -0,0 +1,32 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSHostLookup
+************
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: TSAction TSHostLookup(TSCont contp, const char * hostname, size_t namelen)
+
+Description
+===========

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSHostLookupResultAddrGet.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSHostLookupResultAddrGet.en.rst b/doc/developer-guide/api/functions/TSHostLookupResultAddrGet.en.rst
new file mode 100644
index 0000000..d6e5759
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSHostLookupResultAddrGet.en.rst
@@ -0,0 +1,32 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSHostLookupResultAddrGet
+*************************
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: sockaddr const* TSHostLookupResultAddrGet(TSHostLookupResult lookup_result)
+
+Description
+===========

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSHttpConnect.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSHttpConnect.en.rst b/doc/developer-guide/api/functions/TSHttpConnect.en.rst
new file mode 100644
index 0000000..958346e
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSHttpConnect.en.rst
@@ -0,0 +1,43 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSHttpConnect
+*************
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: TSVConn TSHttpConnect(sockaddr const * addr)
+
+Description
+===========
+
+Allows the plugin to initiate an HTTP connection.
+
+The :c:type:`TSVConn` the plugin receives as the result of successful
+operates identically to one created through :c:type:`TSNetConnect`.
+Aside from allowing the plugin to set the client ip and port for
+logging, the functionality of :c:func:`TSHttpConnect` is identical to
+connecting to localhost on the proxy port with :c:func:`TSNetConnect`.
+:c:func:`TSHttpConnect` is more efficient than :c:func:`TSNetConnect`
+to localhost since it avoids the overhead of passing the data through
+the operating system.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ce162a6d/doc/developer-guide/api/functions/TSHttpConnectWithPluginId.en.rst
----------------------------------------------------------------------
diff --git a/doc/developer-guide/api/functions/TSHttpConnectWithPluginId.en.rst b/doc/developer-guide/api/functions/TSHttpConnectWithPluginId.en.rst
new file mode 100644
index 0000000..cba0e78
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSHttpConnectWithPluginId.en.rst
@@ -0,0 +1,103 @@
+.. Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed
+   with this work for additional information regarding copyright
+   ownership.  The ASF licenses this file to you under the Apache
+   License, Version 2.0 (the "License"); you may not use this file
+   except in compliance with the License.  You may obtain a copy of
+   the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied.  See the License for the specific language governing
+   permissions and limitations under the License.
+
+.. include:: ../../../common.defs
+
+.. default-domain:: c
+
+TSHttpConnectWithPluginId
+*************************
+
+Allows the plugin to initiate an http connection. This will tag the
+HTTP state machine with extra data that can be accessed by the
+logging interface. The connection is treated as an HTTP transaction
+as if it came from a client.
+
+Synopsis
+========
+
+`#include <ts/ts.h>`
+
+.. function:: TSVConn TSHttpConnectWithPluginId(sockaddr const * addr, char const * tag, int64_t id)
+
+Description
+===========
+
+This call attempts to create an HTTP state machine and a virtual
+connection to that state machine. This is more efficient than using
+:c:func:`TSNetConnect` because it avoids using the operating system
+stack via the loopback interface.
+
+:arg:`addr`
+   This is the network address of the target of the connection.
+   This includes the port which should be stored in the :c:type:`sockaddr`
+   structure pointed at by :arg:`addr`.
+
+:arg:`tag`
+   This is a tag that is passed through to the HTTP state machine.
+   It must be a persistent string that has a lifetime longer than
+   the connection. It is accessible via the log field :ref:`pitag
+   <pitag>`. This is intended as a class or type identifier that
+   is consistent across all connections for this plugin. In effect,
+   the name of the plugin. This can be :literal:`NULL`.
+
+:arg:`id`
+   This is a numeric identifier that is passed through to the HTTP
+   state machine. It is accessible via the log field :ref:`piid
+   <piid>`. This is intended as a connection identifier and should
+   be distinct for every call to :c:func:`TSHttpConnectWithPluginId`.
+   The easiest mechanism is to define a plugin global value and
+   increment it for each connection. The value :literal:`0` is
+   reserved to mean "not set" and can be used as a default if this
+   functionality is not needed.
+
+The virtual connection returned as the :c:type:`TSCVonn` is API
+equivalent to a network virtual connection both to the plugin and
+to internal mechanisms. Data is read and written to the connection
+(and thence to the target system) by reading and writing on this
+virtual connection.
+
+.. note::
+
+   This function only opens the connection. To drive the transaction an actual
+   HTTP request must be sent and the HTTP response handled. The transaction is
+   handled as a standard HTTP transaction and all of the standard configuration
+   options and plugins will operate on it.
+
+The combination of :arg:`tag` and :arg:`id` is intended to enable correlation
+in log post processing. The :arg:`tag` identifies the connection as related
+to the plugin and the :arg:`id` can be used in conjuction with plugin
+generated logs to correlate the log records.
+
+Notes
+=====
+
+The SPDY implementation uses this to correlate client sessions
+with SPDY streams. Each client connection is assigned a distinct
+numeric identifier. This is passed as the :arg:`id` to
+:c:func:`TSHttpConnectWithPluginId`. The :arg:`tag` is selected
+to be the NPN string for the client session protocol, e.g.
+"spdy/3" or "spdy/3.1". Log post processing can then count the
+number of connections for the various supported protocols and
+the number of SPDY virtual streams for each real client connection
+to Traffic Server.
+
+See Also
+========
+
+:manpage:`TSHttpConnect(3ts)`,
+:manpage:`TSNetConnect(3ts)`,
+:manpage:`TSAPI(3ts)`


Mime
View raw message