PvaClientMonitor

NOTE: This is a work in progress.

Overview

This provides an easier way to create a monitor on a channel than to use pvAccessCPP itself. It provides two main ways to create a monitor:

The client first creates a PvaClientMonitorChannel and then creates a monitor

The client calls:
static PvaClientMonitorPtr create(
    PvaClientMonitorPtr const &PvaClientMonitor,
    PvaClientMonitorChannelPtr const & PvaClientMonitorChannel,
    epics::pvData::PVStructurePtr const &pvRequest
);

where

PvaClientMonitor
    The PvaClientMonitor.

PvaClientMonitorChannel
    The PvaClientMonitorChannel that has already been created by the client.

pvRequest
    The pvRequest for creating the monitor.
With this method the monitor is created and started. This method blocks while the monitor is created.

The client provides names for a channel and a provider

The client calls:
static PvaClientMonitorPtr create(
    PvaClientMonitorPtr const &PvaClientMonitor,
    std::string const & channelName,
    std::string const & providerName,
    std::string const & request,
    PvaClientMonitorChannelStateChangeRequesterPtr const & stateChangeRequester,
    PvaClientMonitorRequesterPtr const & monitorRequester
);

where

PvaClientMonitor
    The PvaClientMonitor.

channelName
    The name of the channel.

providerName
    The name of the provider

request
    The request for creating the monitor

stateChangeRequester
    The client supplied state change requester.
    This will be called each time a state change for the channel occurs.

monitorRequester
    The client supplied monitor requester.
    This is called each time a new monitor event is available.
With this method a pvaChannel is created and after it connects a pvaMonitor is created and started. This method never blocks.