Provided by: libpcp-pmda3-dev_6.2.0-1.1build4_amd64 bug

NAME

       pmdaConnect - establish a connection between a daemon PMDA and PMCD

C SYNOPSIS

       #include <pcp/pmapi.h>
       #include <pcp/pmda.h>

       void pmdaConnect(pmdaInterface *dispatch);

       cc ... -lpcp_pmda -lpcp

DESCRIPTION

       pmdaConnect  initializes an IPC channel between a PMDA(3) and the pmcd(1) process on the local host.  The
       type of the connection is dependent on the e_io field of the pmdaExt structure:

       pmdaPipe       Use stdin/stdout to communicate; assumes this is a pipe created by pmcd before the PMDA(3)
                      was launched.

       pmdaInet       Assume pmcd(1) will establish a connection to an IPv4 internet domain socket set up by the
                      PMDA(3).  The name or number of the port must be specified in  the  e_sockname  or  e_port
                      fields of the pmdaExt structure, respectively.

       pmdaIPv6       Assume pmcd(1) will establish a connection to an IPv6 internet domain socket set up by the
                      PMDA(3).  The name or number of the port must be specified in  the  e_sockname  or  e_port
                      fields of the pmdaExt structure, respectively.

       pmdaUnix       Assume  pmcd(1) will establish a connection to a unix domain socket set up by the PMDA(3).
                      The port number must be specified in the e_port field of the pmdaExt structure.

       pmdaUnknown    The initial value of e_io which defaults to using stdin/stdout.

       The  relevant  pmdaExt  fields  are  initialized  by  pmdaDaemon(3)   and   set   by   pmdaGetOpt(3)   or
       pmdaGetOptions(3) so most PMDAs should not need to access or modify them.

       Traditionally  most  PMDAs  have  called  pmdaConnect after calls to pmdaDaemon(3), pmdaGetOptions(3) (or
       pmdaGetOpt(3)) and pmdaInit(3).  If the PMDA requires significant processing at startup to  identify  the
       available  metrics  and/or  instance  domains  before pmdaInit(3) can be called, then it risks timing out
       during the handshake protocol that starts as soon as pmcd(1) launches the  PMDA  and  does  not  conclude
       until  pmdaConnect  is  called.   In  this case, it is advisable to move the pmdaConnect call, so that it
       comes after the call to pmdaGetOptions(3) (or pmdaGetOpt(3)) and before the call to pmdaInit(3).

CAVEAT

       The PMDA must be using PMDA_INTERFACE_2 or later, as specified in the call to pmdaDaemon(3).

DIAGNOSTICS

       pmdaConnect will log the type of connection made to pmcd(1) if the PMAPI(3) debugging option libpmda  has
       been set in the global debugging specification, as described in pmSetDebug(3).

       If an error occurs that is unrecoverable, dispatch->status is set to a value less than 0, otherwise it is
       zero or positive.

SEE ALSO

       pmcd(1), pipe(2), socket(2),  PMAPI(3),  PMDA(3),  pmdaDaemon(3),  pmdaGetOpt(3),  pmdaGetOptions(3)  and
       pmdaInit(3).