diff --git a/documentation/pvDatabaseCPP.html b/documentation/pvDatabaseCPP.html index 4c5aef2..ca4feee 100644 --- a/documentation/pvDatabaseCPP.html +++ b/documentation/pvDatabaseCPP.html @@ -38,7 +38,7 @@
This is the 16-May-2013 version of the definition of pvDatabaseCPP. +
This is the 23-May-2013 version of the definition of pvDatabaseCPP.
The following Channel methods are implemented and working: getField, channelProcess, channelGet, channelPut, channelPutGet, and Monitor. But lots of work remains:
This document describes components that provides the following features: +
This document describes components that provide the following features:
The example resides in src/database. The complete implementation is in the header file. -A serious implementation would probably break the code into two files: -1) a header, and 2) the implementation. The description consists of
+A serious implementation might break the code into a header and an +implementation file.+
The description consists ofclass ExampleCounter; typedef std::tr1::shared_ptr<ExampleCounter> ExampleCounterPtr; @@ -455,6 +461,18 @@ The following are the minimium features required Thus code will be generated only if other code includes the header file and creates a record instance.
+recordName = "laptoprecordListPGRPC"; +pvRecord = RecordListRecord::create(recordName); +result = master->addRecord(pvRecord); ++
The classes in pvDatabase.h describe a database of memory resident smart records. @@ -856,16 +874,123 @@ private:
Not yet described. -It is only of interest to someone who wants to understand how it works. -
-A brief description is that it implements the following components of pvIOCJava:
+This is code that provides an implementation of channelProvider as +defined by pvAccess. +It provides access to PVRecords and is access by the server side of remote pvAccess.
+This is a complete implementation of channelProvider and , +except for channelRPC, provides a complete implementation of Channel +as defined by pvAccess. +For monitors it calls the code described in the following sections.
+The channelProvider implementation provides the ability to generate +debug messages based a debug level with the following meaning:
ChannelProviderLocal has a method:
++ void createChannelLocalDebugRecord( + String const & recordName); ++
This method creates a PVRecord that allows a pvAccess client to set the +debug level.
+This provides code that creates a top level PVStructure that is an arbitrary +subset of the fields in the PVStructure from a PVRecord. +In addition it provides code that monitors changes to the fields in a PVRecord. +A client configures the desired set of subfields and monitoring options +via a pvRequest structure. +pvAccess provides a class CreatePVRequest that creates a pvRequest. +The pvCopy code provides the same functionality as the pvCopy code in pvIOCJava. +
+Currently all that is implemented is a header file. +The only algorithm currently implemented is onPut +
+epics::pvData::monitor defines the monitor interfaces +as seen by a client. +See + pvDatabaseCPP.html + For details.
++monitorFactory implements the +monitoring interfaces for a PVRecord. +It implements queueSize=0 and queueSize>=2. +
++The implementation uses PVCopy and PVCopyMonitor which are implemented in pvCopy. +When PVCopyMonitor tells monitor that changes +have occurred, monitor applies the appropriate algorithm to each changed field.
+ +Currently only algorithm onPut is implemented but, +like pvIOCJava there are plans to support for the following monitor algorithms:
+MonitorFactory provides the following methods:
+class MonitorFactory +{ + static MonitorPtr create( + PVRecordPtr const & pvRecord, + MonitorRequester::shared_pointer const & monitorRequester, + PVStructurePtr const & pvRequest); + static void registerMonitorAlgorithmCreater( + MonitorAlgorithmCreatePtr const & monitorAlgorithmCreate, + String const & algorithmName); +}+ +
where
+This implements a PVRecord that allows a client to set +a debug level for the local channel provider implementation. +The top level structure has a single integer field named value. +See ChannelProviderLocal for the meaning associated with value.
+ChannelProviderLocal has a method:
++ void createChannelLocalDebugRecord(String const & recordName); ++
This creates an instance of a ChannelLocalDebugRecord and installs it +into the PVDatabase.