Channel::createChannelProcess default ensure process=true

This commit is contained in:
Michael Davidsaver
2017-09-06 12:48:03 -05:00
parent 90394f788e
commit 8a24f9cd9c

View File

@@ -7,6 +7,7 @@
#include <epicsMutex.h>
#include <epicsGuard.h>
#include <pv/reftrack.h>
#include <pv/valueBuilder.h>
#define epicsExportSharedSymbols
#include <pv/pvAccess.h>
@@ -163,11 +164,24 @@ struct Process2PutProxy : public ChannelProcess
ChannelProcess::shared_pointer Channel::createChannelProcess(
ChannelProcessRequester::shared_pointer const & requester,
epics::pvData::PVStructure::shared_pointer const & pvRequest)
epics::pvData::PVStructure::shared_pointer const & pvRequestx)
{
pvd::PVStructure::shared_pointer pvRequest(pvRequestx);
std::tr1::shared_ptr<Process2PutProxy> ret(new Process2PutProxy);
ret->op_request.reset(new Process2PutProxy::Req(requester, ret));
// inject record._options.process=true if client hasn't provided
if(!pvRequest->getSubField("record._options.process"))
{
pvRequest = pvd::ValueBuilder(*pvRequest)
.addNested("record")
.addNested("_options")
.add<pvd::pvString>("process", "true")
.endNested()
.endNested()
.buildPVStructure();
}
ChannelPut::shared_pointer op(createChannelPut(ret->op_request, pvRequest));
if(!op) {
ret.reset();