Provided by: libpcp3-dev_4.0.1-1_amd64 bug

NAME

       QmcGroup - container representing a single fetch group of metrics from multiple sources

C++ SYNOPSIS

       #include <QmcGroup.h>

       CC ... -lqmc -lpcp

DESCRIPTION

       A  QmcGroup  object  is a container for contexts and metrics that should be fetched at the
       same time.  The class manages the QmcContext(3) objects, timezones and  bounds  for  every
       context created with QmcGroup::use and QmcGroup::addMetric.

CONSTRUCTORS & DESTRUCTOR

       ~QmcGroup();
           Destructor which destroys all metrics and contexts created by this group.

       QmcGroup(bool restrictArchives = false);
           Construct  a new fetch group.  restrictArchives will restrict the creating of multiple
           archive contexts created from the same host.

CONTEXTS

       The  default  context  of  the  group  is  defined  as  the  first  context  created  with
       QmcGroup::use  before  the  first  call  to QmcGroup::addMetric.  If no context is created
       before the first  metric  is  added,  the  localhost  is  used  as  the  default  context.
       Therefore,  if  any metrics specifications contain archive sources, an archive source must
       have been created with QmcGroup::use to avoid an error for mixing context types.

       uint_t numContexts() const;
           The number of valid contexts created in this group.

       QmcContext const& context(uint_t index) const
           Return a handle to a context.

       QmcContext& context(uint_t index);
           Return a modifiable handle to a context.

       int mode() const;
           Return  the   type   of   context,   either   PM_CONTEXT_LOCAL,   PM_CONTEXT_HOST   or
           PM_CONTEXT_ARCHIVE.

       QmcContext* which() const;
           Return   a  handle  to  the  current  context  of  this  group.  This  does  not  call
           pmUseContext(3) so it may not be the current PMAPI(3) context.

       uint_t whichIndex() const
           The index to the current group context.

       int use(int type, char const* source);
           Use the context of type from source.  If a context to this source  already  exists  in
           this  group,  that  context will become the current PMAPI(3) context.  Otherwise a new
           context will  be  created.   The  result  is  the  PMAPI(3)  context  handle  for  the
           QmcGroup::context or a PMAPI(3) error code if the context failed.

       bool defaultDefined() const;
           Returns true if a default context has been determined.

       int useDefault();
           Use the default context. If a default context has not been created, the context to the
           local host will be attempted.  A result less  than  zero  indicates  that  the  method
           failed with the PMAPI(3) error encoded in the result.

       void createLocalContext();
           Create  and  use  a context to the local host.  A result less than zero indicates that
           the method failed with the PMAPI(3) error encoded in the result.

METRICS

       These addMetric methods should be used to create new metrics as the QmcMetric constructors
       are private. These methods will always return a pointer to a QmcMetric object, however the
       QmcMetric::status() field should be checked to ensure the metric is valid.

       QmcMetric* addMetric(char const* str, double theScale = 0.0,
           bool active = false);

           Add the metric str to the group, with a scaling factor of scale.  If active is set the
           metric will use only active instances (see QmcMetric(3)).

       QmcMetric* addMetric(pmMetricSpec* theMetric, double theScale
           = 0.0, bool active);

           Add  the  metric theMetric to the group, with a scaling factor of scale.  If active is
           set the metric will use only active instances (see QmcMetric(3)).

       int fetch(bool update = true);
           Fetch all the metrics in all the contexts in this group.  If update is equal to  true,
           all counter metrics will be automatically converted to rates (see QmcMetric(3)).

       int setArchiveMode(int mode, const struct timeval *when,
           int interval);

           Set  the mode and time to access all archive contexts in this group.  See pmSetmode(3)
           for more details.

TIMEZONES

       These methods assist in the management of multiple  timezones  and  help  to  control  the
       current timezone.

       enum TimeZoneFlag { localTZ, userTZ, groupTZ, unknownTZ };
           Enumeration  used to describe the origin of the default timezone.  localTZ, userTZ and
           groupTZ   indicate   that   the   timezone   was   set   with    QmcGroup::useLocalTZ,
           QmcGroup::useTZ(QString   const&)   and   QmcGroup::useTZ()  respectively.   unknownTZ
           indicates that a timezone has not been set.  userTZ indicates that the timezone was

       int useTZ();
           Use the timezone of the current group context as the default.

       int useTZ(const QString &tz);
           Add and use tz as the default timezone of this group.

       int useLocalTZ();
           Use the timezone of the localhost as the default for this group.

       void defaultTZ(QString &label, QString &tz);
           Return the label and tz string of the default timezone of this group.

       TimeZoneFlag defaultTZ() const
           Return the origin of the default timezone.

       int useDefaultTZ();
           Set the timezone to be  the  default  timezone  as  defined  in  a  previous  call  to
           QmcGroup::useTZ or QmcGroup::useLocalTZ.

       struct timeval const& logStart() const;
           Return  the  earliest  starting  time  of  any  archives  in this group.  Assumes that
           QmcGroup::updateBounds has been called.

       struct timeval const& logEnd() const;
           Return  the  latest  finish  time  of  any  archives  in  this  group.   Assumes  that
           QmcGroup::updateBounds has been called.

       void updateBounds();
           Determine the earliest start and latest finish times of all archives in this group.

       int sendTimezones();
           Send the current timezones to kmtime (3).

DEBUGGING

       void dump(ostream &os);
           Dump state information about this group to os.

SEE ALSO

       PMAPI(3), QMC(3), QmcContext(3), QmcMetric(3), pmflush(3), pmprintf(3) and pmSetMode(3).

DIAGNOSTICS

       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 the option pmc to the  global  debugging
       specification, as described in pmSetDebug(3).