Provided by: libpcp3-dev_5.3.7-1_amd64 bug


       pmSeriesSetup,     pmSeriesSetSlots,    pmSeriesSetEventLoop,    pmSeriesSetConfiguration,
       pmSeriesSetMetricRegistry, pmSeriesClose - fast, scalable time series services


       #include <pcp/pmwebapi.h>

       int pmSeriesSetup(pmSeriesModule *module, pmSeriesCallBacks *callbacks, void *arg);

       int pmSeriesSetSlots(pmSeriesModule *module, void *slots);
       int pmSeriesSetEventLoop(pmSeriesModule *module, void *uvloop);
       int pmSeriesSetConfiguration(pmSeriesModule *module, struct dict *config);
       int pmSeriesSetMetricRegistry(pmSeriesModule *module, struct mmv_registry *registry);

       int pmSeriesClose(pmSeriesModule *module);

       cc ... -lpcp_web


       The pmSeriesSetup and related API functions prepare an application for accessing the fast,
       scalable time series querying functionality of the Performance Co-Pilot (PCP).

       This  functionality  is  provided  through  asynchronous APIs, which function in an event-
       driven fashion.  The interfaces described here prepare a given time  series  module  which
       associates  callback  routines  with  certain  asynchronous  events  that occur as part of
       servicing time series requests.

       As a general pattern, all interfaces in these APIs that need to invoke callbacks  provided
       by  the calling program will take an opaque (void * pointer) parameter, arg.  This pointer
       will be passed through unchanged  and  is  typically  used  to  access  a  data  structure
       maintaining state within the calling program.

       Where  asynchronous  setup  is  required by pmSeriesSetup its completion will be indicated
       through use of the on_setup callback, which  is  part  of  the  passed  in  pmSeriesModule
       structure.   This  structure  also  provides  for custom diagnostics handling, through the
       on_info callback.  These are self-explanatory,  see  <pcp/pmwebapi.h>  for  exact  calling

       The callbacks registered by pmSeriesSetup to handle events are as follows:

       pmSeriesMatchCallBack on_match
            When  a time series query discovers time series identifiers that match the query, the
            on_match callback will be called once for every series identifier (SID).  The SID  is
            a unique 40-byte ASCII representation of a SHA hash.

       pmSeriesDescCallBack on_desc
            Metric  descriptor  requests from pmSeriesDescs(1) will invoke this callback once for
            each series identifier.

       pmSeriesInstCallBack on_inst
            Instance identification callback - internal (numeric) and external (string)  instance
            IDs, as well as time series and source (host) SHA1 identifiers.  Called once for each
            instance.  The associated series identifier is also provided to the callback.

       pmSeriesLabelCallBack on_labelmap
            Provides metric labels (name and value mappings) for each series identifier passed to

       pmSeriesStringCallBack on_instance
            Provides  an instance name for a call to pmSeriesInstances(1)- the callback is called
            once for each instance name.  The associated series identifier is  also  provided  to
            the callback.

       pmSeriesStringCallBack on_context
            Provides a context name for a call to pmSeriesSources(1)- the callback is called once
            for each source (hostname or archive).  The  associated  source  identifier  is  also
            provided to the callback.

       pmSeriesStringCallBack on_metric
            Provides  a metric name for a call to pmSeriesMetrics(1)- the callback is called once
            for each metric name.  The associated series  identifier  is  also  provided  to  the

       pmSeriesStringCallBack on_label
            Provides  a  label  name for a call to pmSeriesLabels(1)- the callback is called once
            for each label name.  The associated  series  identifier  is  also  provided  to  the

       pmSeriesValueCallBack on_value
            Calls  to the pmSeriesQuery interface that provide a time window may result in values
            being found for matching time series.  The on_value callback will be invoked once for
            each  time  series  value,  also  providing  the sample timestamp (in both string and
            binary form, as a time in  nanoseconds  since  the  epoch).   The  associated  series
            identifier is also provided to the callback.

       pmSeriesDoneCallBack on_done
            On  completion of all asynchronous interfaces that return success (zero return code),
            this callback will be called.  It provides a status code indicating  overall  success
            (zero) or failure (negative PMAPI code) of the operation.

       The    helper    functions   pmSeriesSetSlots   (redis),   pmSeriesSetEventLoop   (libuv),
       pmSeriesSetConfiguration   (configuration   file)   and   pmSeriesSetMetricRegistry   (MMV
       instrumentation)  interfaces  provide  a  mechanism  for  passing in state for each of the
       associated subsystems.

       Finally, a call to pmSeriesClose is used to end services available from  a  series  module
       previously established through pmSeriesSetup.

       Within  PCP,  the  pmproxy(1)  and  pmseries(1)  utilities  are the primary users of these
       interfaces, providing REST API and command line time series query services respectively.


       Where these functions return a status code, this is always zero on success.  On failure  a
       negative PMAPI error code is returned.


       pmproxy(1),     pmlogger(1),    pmseries(1),    redis-server(1),    mmv_stats_registry(3),
       pmSeriesDescs(3), pmSeriesQuery(3), PMAPI(3) and PMWEBAPI(3).