Provided by: libpcp3-dev_3.10.8build1_amd64 bug


       QmcSource  - manages contexts created by all groups


       #include <QmcSource.h>

       CC ... -lqmc -lpcp


       The  QmcSource  class maintains a unique list of all metric sources in use to minimize the
       creation of new contexts (see pmNewContext(3)) when the context could have been duplicated
       (see pmDupContext(3)).  This also reduces the duplication of descriptions of each source.

       In  general,  QMC  users  should  only  need  to access QmcSource methods to obtain source
       descriptions for a QmcContext(3) object.  All context  creation  by  the  user  should  be
       handled through QmcGroup(3).




       static QmcSource* getSource(int type, const char* source,
           bool matchHosts)

           This  method  will  return  a  QmcSource  object  that represents a context of type to
           source.  The QmcSource object may  be  a  new  object  if  the  source  has  not  been
           previously  requested.  Memory  management  of  the  QmcSource  objects  is handled by
           QmcSource.  If all QmcContext(3)s to the QmcSource have been  deleted,  the  QmcSource
           object will also be deleted.

           The  matchHosts  flag  controls the algorithm that is used to match hosts to archives.
           If matchHosts is equal to false then no attempt will be made by this method to match a
           host context to an existing source context. A QmcSource object will always be returned
           in this case, although the QmcSource::status method may indicate  that  a  context  to
           source failed.

           If matchHosts is equal to true, host contexts will be matched to a pre-defined archive
           source collected from that source.  If no archive sources for  the  source  have  been
           previous specified, getSource will return a NULL pointer.


       PMAPI(3), QMC(3), QmcContext(3), QmcGroup(3), pmDupContext(3), pmflush(3), pmNewContext(3)
       and pmprintf(3).


       Error  messages  are  generated  using  pmprintf(3)  but  are  not  flushed.  It  is   the
       responsibility of the user to call pmflush(3) to output any messages.

       Additional diagnostics may be activated by adding DBG_TRACE_PMC to the global pmDebug.