Provided by: libpcp3-dev_6.2.0-1.1build4_amd64 bug

NAME

       __pmParseHostSpec, __pmUnparseHostSpec, __pmFreeHostSpec - uniform host specification parser

C SYNOPSIS

       #include "pmapi.h"
       #include "libpcp.h"

       int __pmParseHostSpec(const char *string, pmHostSpec **hostsp, int *count, char **errmsg);
       int __pmUnparseHostSpec(pmHostSpec *hosts, int count, char *string, size_t size);
       void __pmFreeHostSpec(pmHostSpec *hosts, int count);

       cc ... -lpcp

CAVEAT

       This documentation is intended for internal Performance Co-Pilot (PCP) developer use.

       These  interfaces  are  not part of the PCP APIs that are guaranteed to remain fixed across releases, and
       they may not work, or may provide different semantics at some point in the future.

DESCRIPTION

       __pmParseHostSpec accepts a string specifying the location of a PCP performance metric collector  daemon.
       The  syntax  of the various formats of this string is described in PCPIntro(1) where several examples are
       also presented.

       The syntax allows the initial pmcd(1) hostname to be optionally followed by a list of port numbers, which
       will be tried in order when connecting to pmcd on that host.  The portlist is separated from the hostname
       using a colon, and each port in the list is comma-separated.

       In addition, one or more optional pmproxy(1) hosts can be specified (currently, only one  proxy  host  is
       supported  by  the PCP protocols).  These are separated from each other and from the pmcd component using
       the @ character.  These may also be followed by an optional port list,  using  the  same  comma-separated
       syntax as before.

       __pmParseHostSpec  takes  a  null-terminated host specification string and returns an array of pmHostSpec
       structures, where the array has count entries.

       These pmHostSpec structures that are returned via hostsp represent each individual host in the specifica‐
       tion string and has the following declaration:

           typedef struct {
               char    *name;       /* hostname (always valid) */
               int     *ports;      /* array of host port numbers */
               int     nports;      /* number of ports in host port array */
           } pmHostSpec;

       __pmUnparseHostSpec performs the inverse operation, creating a string representation  from  a  number  of
       hosts structures.  Where the count of structures indicated by hosts is greater than one, the proxy syntax
       is used to indicate a chain of proxied hosts.  The size of the supplied string buffer must be provided by
       the caller using the size parameter.

RETURN VALUE

       If  the  given  string  is  successfully parsed __pmParseHostSpec returns zero.  In this case the dynamic
       storage allocated by __pmParseHostSpec can be released by calling __pmFreeHostSpec using the address  re‐
       turned from __pmParseHostSpec via hosts.

       __pmParseHostSpec  returns  PM_ERR_GENERIC and a dynamically allocated error message string in errmsg, if
       the given string does not parse, and the user-supplied errmsg pointer is non-null.  Be  sure  to  free(3)
       the error message string in this situation.

       In the case of an error, hosts is undefined.  In the case of success, errmsg is undefined.

       On  success __pmUnparseHostSpec returns a positive value indicating the number of characters written into
       the supplied buffer.  However, if the supplied buffer was too small, a negative status code of -E2BIG  is
       returned.

SEE ALSO

       pmcd(1), pmproxy(1), pmchart(1), __pmParseHostAttrsSpec(3), PMAPI(3) and pmNewContext(3).

Performance Co-Pilot                                   PCP                                    PMPARSEHOSTSPEC(3)