removed all talk about pvIOC

This commit is contained in:
mrkraimer
2015-10-27 13:01:03 -04:00
parent d71d3f1862
commit e6e7902831
2 changed files with 2018 additions and 60 deletions

View File

@ -38,7 +38,7 @@
<h1>pvDatabaseCPP</h1>
<!-- Maturity: Working Draft or Request for Comments, or Recommendation, and date. -->
<h2 class="nocount">EPICS v4 Working Group, Working Draft, 02-October-2015</h2>
<h2 class="nocount">EPICS v4 Working Group, Working Draft, 23-October-2015</h2>
<dl>
<dt>Latest version:</dt>
<dd><a
@ -46,11 +46,11 @@
</dd>
<dt>This version:</dt>
<dd><a
href= "pvDatabaseCPP_20151002.html">pvDatabaseCPP20151002.html
href= "pvDatabaseCPP_20151023.html">pvDatabaseCPP20151023.html
</a> </dd>
<dt>Previous version:</dt>
<dd><a
href= "pvDatabaseCPP_20140811.html">pvDatabaseCPP20140811.html
href= "pvDatabaseCPP_20151002.html">pvDatabaseCPP20151002.html
</a> </dd>
<dt>Editors:</dt>
<dd>Marty Kraimer, BNL</dd>
@ -78,7 +78,7 @@ V4 control system programming environment:<br />
<h2 class="nocount">Status of this Document</h2>
<p>This is the 02-October-2015 version of of pvDatabaseCPP.</p>
<p>This is the 23-October-2015 version of of pvDatabaseCPP.</p>
<p>This version is a complete implementation of what is described in this manual.
</p>
</div>
@ -250,56 +250,6 @@ arrays. It is also described in a later section.</p>
<p>Reading section exampleServer and looking at it's code is a good way
to learn how to implement a service.</p>
<h3>Relationship with pvIOCJava.</h3>
<p>This document describes a C++ implementation of some of the components in pvIOCJava,
which also implements a pvDatabase.
PVDatabaseCPP implements the core components required to create a network accessible database of smart
memory resident records.
pvDatabaseCPP does not implement any of the specialized support that pvIOCJava
provides.
It is expected that many services will be created that do not require the full features provided
by pvIOCJava. In the future pvIOCJava should be split into multiple projects with one of
them named pvDatabaseJava.</p>
<p>Similar to epics base, pvIOCJava implements the concept of synchronous and asynchronous record processing.
For pvDatabaseCPP the process method is allowed to block.
Until a need is demonstrated this will remain true.
The main user of a pvDatabase is pvAccess, and in particular, remote pvAccess.
The server side of remote pvAccess creates two threads for each client and always accesses
a record via these threads.
It is expected that these threads will be sufficient to efficiently handle all channel methods except
channelRPC. For channelRPC pvAccess provides (or will provide) a thread pool for channelRPC requests.
If, in the future, a scanning facility is provided by pvDatabaseCPP or some other facility,
then the scanning facility will have to provide some way of handling process requests that block.</p>
<h3>Phased Development</h3>
<p>This documentation describes the first phase of a phased implementation
of pvDatabaseCPP:</p>
<dl>
<dt>pvRecord</dt>
<dd>Wrapper on PVStructure that implements methods required by Local Channel Provider.</dd>
<dt>pvDatabase</dt>
<dd>Database of PVRecords. Has methods find, add, and remove.</dd>
<dt>Local Channel Provider</dt>
<dd>Complete implementation of ChannelProvider and Channel.
This means that pvCopy and monitor are also implemented.</dd>
</dl>
<p>Future phases of pvDatabaseCPP might include:</p>
<dl>
<dt>Install</dt>
<dd>This provides complete support for on-line add and delete
of sets of records.
With the first phase each "service" is responsible for it's own implementation.
All that is provided is addRecord and removeRecord.
</dd>
<dt>Field support</dt>
<dd>Add the ability to optionally add support to fields.
In addition some of the basic support defined in pvIOCJava could also be implemented.</dd>
<dt>XML parser</dt>
<dd>This provides the ability to create record instances without
writing any code.</dd>
</dl>
<p>The completion of each phase provides useful features that can be used
without waiting for the completion of later phases.
The rest of this document discusses only the first phase.</p>
<h3>Features Required for localChannelProvider</h3>
<dl>
<dt>copy and monitor</dt>
@ -319,11 +269,7 @@ The rest of this document discusses only the first phase.</p>
which is implemented by pvAccessCPP.
</dd>
</dl>
<h3>Minimum Features Required for pvRecord</h3>
<p>The first phase will only implement record processing, i. e.
the process method has to do everything itself without any generic field support.
This will be sufficient for implementing many services.
The following are the minimum features required</p>
<h3>Features Required for pvRecord</h3>
<dl>
<dt>PVDatabase</dt>
<dd>This holds a set of PVRecords.
@ -341,10 +287,17 @@ The following are the minimum features required</p>
<dd>A client can request to be notified when data in the pvStructure
is modified.
It can do this on a field by field basis.</dd>
<dt>A method named process</dt>
<dd>
<p>The process method is called when a pvAccess client requests that a record be processed.
If a top level timeStamp field exists,
the default process method just sets the timeStamp to the currect time.
A service is created by implementing process and providing a top level PVStructure.
</p>
</dd>
</dl>
</dd>
</dl>
<p>The following sections describes the classes required for the first phase.</p>
<h2>Building pvDatabaseCPP</h2>
<p>To build pvDatabaseCPP You must provide a file RELEASE.local

File diff suppressed because it is too large Load Diff