----- Original Message -----
> doc: convert TSTrafficServerVersionGet(3) to sphinx

Reminder: https://issues.apache.org/jira/browse/TS-1953


> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e0a2dd5d/doc/conf.py
> ----------------------------------------------------------------------
> diff --git a/doc/conf.py b/doc/conf.py
> index e2067b0..d7c9f2b 100644
> --- a/doc/conf.py
> +++ b/doc/conf.py
> @@ -223,6 +223,7 @@ man_pages = [
>     ('reference/api/TSmalloc.en', 'TSmalloc', u'Traffic Server memory
>     allocation API', None, u'3ts'),
>     ('reference/api/TSPluginInit.en', 'TSPluginInit', u'Traffic
>     Server plugin loading and registration', None, u'3ts'),
>     ('reference/api/TSRemap.en', 'TSRemap', u'Traffic Server remap
>     plugin entry points ', None, u'3ts'),
> +   ('reference/api/TSTrafficServerVersionGet.en',
> 'TSTrafficServerVersionGet', u'return Traffic Server version
> information', None, u'3ts'),
>  
>     ('reference/commands/traffic_cop.en', 'traffic_cop', u'Traffic
>     Server watchdog', None, '8'),
>     ('reference/commands/traffic_line.en', 'traffic_line', u'Traffic
>     Server command line', None, '8'),
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e0a2dd5d/doc/reference/api/TSTrafficServerVersionGet.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/reference/api/TSTrafficServerVersionGet.en.rst
> b/doc/reference/api/TSTrafficServerVersionGet.en.rst
> new file mode 100644
> index 0000000..e450743
> --- /dev/null
> +++ b/doc/reference/api/TSTrafficServerVersionGet.en.rst
> @@ -0,0 +1,98 @@
> +.. 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.
> +
> +.. default-domain:: c
> +
> +=========================
> +TSTrafficServerVersionGet
> +=========================
> +
> +Synopsis
> +========
> +
> +`#include <ts/ts.h>`
> +
> +.. function:: const char * TSTrafficServerVersionGet(void)
> +.. function:: int TSTrafficServerVersionGetMajor(void)
> +.. function:: int TSTrafficServerVersionGetMinor(void)
> +.. function:: int TSTrafficServerVersionGetPatch(void)
> +
> +Description
> +===========
> +
> +:func:`TSTrafficServerVersionGet` returns a pointer to a string of
> characters
> +that indicates the Traffic Server release version. This string must
> not
> +be modified.
> +
> +The other APIs return an integer version number.
> +
> +Example
> +=======
> +
> +::
> +
> +    #include <stdio.h>
> +    #include <ts/ts.h>
> +
> +    int
> +    check_ts_version()
> +    {
> +        const char *ts_version = TSTrafficServerVersionGet();
> +        int result = 0;
> +
> +        if (ts_version) {
> +            int major_ts_version = 0;
> +            int minor_ts_version = 0;
> +            int patch_ts_version = 0;
> +
> +            if (sscanf(ts_version, "%d.%d.%d", &major_ts_version,
> +                    &minor_ts_version, &patch_ts_version) != 3) {
> +                return 0;
> +            }
> +
> +            /* We need at least Traffic Server 3.0 */
> +            if (major_ts_version >= 3) {
> +                result = 1;
> +            }
> +        }

no, seriously, we need to get rid of this boiler plate code.

    https://issues.apache.org/jira/browse/TS-1953

TSVersionGE(int major, int minor = -1, int patch = -1) {
  if ( !(TSTrafficServerVersionGetMajor >= major)) {
     return false;
  } else if (minor != -1) {
     if ( !(TSTrafficServerVersionGetMinor >= minor)) {
        return false;
     } else if (patch != -1 ) {
        if ( !(TSTrafficServerVersionGetPatch >= patch)) {
           return false;
        }
     }
  }
  return true;
}

This, and equivalent functions could be written as macros.

> +
> +        return result;
> +    }
> +
> +    void
> +    TSPluginInit (int argc, const char *argv[])
> +    {
> +        TSPluginRegistrationInfo info;
> +        info.plugin_name = "hello-world";
> +        info.vendor_name = "MyCompany";
> +        info.support_email = "ts-api-supp...@mycompany.com";
> +
> +        if (TSPluginRegister(TS_SDK_VERSION_3_0 , &info) !=
> TS_SUCCESS) {
> +            TSError("Plugin registration failed. 0);
> +        }
> +
  -        if (!check_ts_version()) {
  +        if (!TSVersionGE(3,0)) {
> +            TSError("Plugin requires Traffic Server 3.0 or later0);
> +            return;
> +        }
> +
> +        TSDebug("debug-hello", "Hello World!0);
> +    }
> +
> +See also
> +========
> +
> +:manpage:`TSAPI(3ts)`
> 
> 

-- 
Igor Galić

Tel: +43 (0) 664 886 22 883
Mail: i.ga...@brainsware.org
URL: http://brainsware.org/
GPG: 6880 4155 74BD FD7C B515  2EA5 4B1D 9E08 A097 C9AE

Reply via email to