changes because of ChannelArray API change; update TODO.md; add RELEASE_NOTES.html and TODO.html
This commit is contained in:
25
documentation/RELEASE_NOTES.html
Normal file
25
documentation/RELEASE_NOTES.html
Normal file
@ -0,0 +1,25 @@
|
||||
<h1>Release release/1.0 IN DEVELOPMENT</h1>
|
||||
<p>The main changes since release 3.0.2 are:</p>
|
||||
<ul>
|
||||
<li>array semantics now enforce Copy On Write.</li>
|
||||
<li>String no longer defined.</li>
|
||||
<li>toString replaced by stream I/O </li>
|
||||
<li>union is new type.</li>
|
||||
<li>copy and monitor use new code in pvDataCPP</li>
|
||||
</ul>
|
||||
<h2>New Semantics for Arrays</h2>
|
||||
<p>pvDatabaseCPP has been changed to use the new array implementation from pvDataCPP.</p>
|
||||
<h2>String no longer defined</h2>
|
||||
<p>String is replaced by std::string.</p>
|
||||
<h2>toString replaced by stream I/O</h2>
|
||||
<p>All uses of toString have been changed to use the steam I/O that pvDataCPP implements.</p>
|
||||
<h2>union is a new basic type.</h2>
|
||||
<p>exampleDatabase now has example records for union and union array.
|
||||
There are records for regular union and for variant union.</p>
|
||||
<h2>copy</h2>
|
||||
<p>The implementation of copy and monitor for pvAccess has been changed
|
||||
to use the new monitor and copy support from pvDataCPP.</p>
|
||||
<h2>monitorPlugin</h2>
|
||||
<p>exampleDatabase now has a example plugin that implements onChange.</p>
|
||||
<h1>Release 0.9.2</h1>
|
||||
<p>This was the starting point for RELEASE_NOTES</p>
|
9
documentation/TODO.html
Normal file
9
documentation/TODO.html
Normal file
@ -0,0 +1,9 @@
|
||||
<h1>TODO</h1>
|
||||
<h2>monitorPlugin</h2>
|
||||
<p>A debate is on-going about what semantics should be.</p>
|
||||
<h2>memory leak</h2>
|
||||
<p>arrayPerformanceMain shows a slight memory leak at termination.</p>
|
||||
<h2>channel destroy and recreate</h2>
|
||||
<p>longArrayGet and longArrayPut fail if the channel is destroyed and immediately recreated. If epicsThreadSleep(1.0) is called between destroy and recreate then they work. The current version of each does wait.</p>
|
||||
<h2>create more regresion tests</h2>
|
||||
<p>Currently only some simple tests exist. Most of the testing has been via the examples</p>
|
@ -1,8 +1,6 @@
|
||||
TODO
|
||||
===========
|
||||
|
||||
|
||||
|
||||
monitorPlugin
|
||||
-------------
|
||||
|
||||
|
@ -777,7 +777,7 @@ public:
|
||||
PVArrayPtr const &putArray,
|
||||
size_t offset, size_t count, size_t stride);
|
||||
virtual void getLength();
|
||||
virtual void setLength(size_t length, size_t capacity);
|
||||
virtual void setLength(size_t length);
|
||||
virtual void destroy();
|
||||
virtual std::tr1::shared_ptr<Channel> getChannel()
|
||||
{return channelLocal;}
|
||||
@ -1021,7 +1021,7 @@ void ChannelArrayLocal::putArray(
|
||||
return;
|
||||
}
|
||||
size_t newLength = offset + count*stride;
|
||||
pvArray->setLength(newLength);
|
||||
if(newLength<pvArray->getLength()) pvArray->setLength(newLength);
|
||||
const char *exceptionMessage = NULL;
|
||||
pvRecord->lock();
|
||||
try {
|
||||
@ -1040,12 +1040,10 @@ void ChannelArrayLocal::putArray(
|
||||
void ChannelArrayLocal::getLength()
|
||||
{
|
||||
size_t length = 0;
|
||||
size_t capacity = 0;
|
||||
const char *exceptionMessage = NULL;
|
||||
pvRecord->lock();
|
||||
try {
|
||||
length = pvArray->getLength();
|
||||
capacity = pvArray->getCapacity();
|
||||
} catch(std::exception e) {
|
||||
exceptionMessage = e.what();
|
||||
}
|
||||
@ -1054,10 +1052,10 @@ void ChannelArrayLocal::getLength()
|
||||
if(exceptionMessage!=NULL) {
|
||||
status = Status(Status::STATUSTYPE_ERROR,exceptionMessage);
|
||||
}
|
||||
channelArrayRequester->getLengthDone(status,getPtrSelf(),length,capacity);
|
||||
channelArrayRequester->getLengthDone(status,getPtrSelf(),length);
|
||||
}
|
||||
|
||||
void ChannelArrayLocal::setLength(size_t length, size_t capacity)
|
||||
void ChannelArrayLocal::setLength(size_t length)
|
||||
{
|
||||
if(isDestroyed) {
|
||||
channelArrayRequester->setLengthDone(channelDestroyedStatus,getPtrSelf());
|
||||
@ -1069,17 +1067,6 @@ void ChannelArrayLocal::setLength(size_t length, size_t capacity)
|
||||
}
|
||||
pvRecord->lock();
|
||||
try {
|
||||
if(capacity>=0 && !pvArray->isCapacityMutable()) {
|
||||
Status status(
|
||||
Status::STATUSTYPE_ERROR,
|
||||
"capacityImnutable");
|
||||
channelArrayRequester->setLengthDone(status,getPtrSelf());
|
||||
pvRecord->unlock();
|
||||
return;
|
||||
}
|
||||
if(capacity>=0) {
|
||||
if(pvArray->getCapacity()!=capacity) pvArray->setCapacity(capacity);
|
||||
}
|
||||
if(length>=0) {
|
||||
if(pvArray->getLength()!=length) pvArray->setLength(length);
|
||||
}
|
||||
|
Reference in New Issue
Block a user