From 8a24f9cd9c7afb06140f71afc15277cb4ff6d14b Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Wed, 6 Sep 2017 12:48:03 -0500 Subject: [PATCH] Channel::createChannelProcess default ensure process=true --- src/client/pvAccess.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/client/pvAccess.cpp b/src/client/pvAccess.cpp index a943f85..3238b9d 100644 --- a/src/client/pvAccess.cpp +++ b/src/client/pvAccess.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #define epicsExportSharedSymbols #include @@ -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 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("process", "true") + .endNested() + .endNested() + .buildPVStructure(); + } + ChannelPut::shared_pointer op(createChannelPut(ret->op_request, pvRequest)); if(!op) { ret.reset();