22 #define epicsExportSharedSymbols 28 const std::tr1::shared_ptr<pvas::detail::SharedRPC>
op;
30 RPCOP(
const std::tr1::shared_ptr<pvas::detail::SharedRPC>& op,
31 const pvd::PVStructure::const_shared_pointer& pvRequest,
32 const pvd::PVStructure::const_shared_pointer&
value)
36 pva::ChannelRequester::shared_pointer req(op->channel->getChannelRequester());
38 info = req->getPeerInfo();
49 return op->requester.lock();
58 throw std::logic_error(
"Operation already complete");
66 tosend->copyUnchecked(*value);
71 ->createFieldBuilder()
74 pva::ChannelRPCRequester::shared_pointer req(op->requester.lock());
76 req->requestDone(sts, op, tosend);
84 size_t SharedRPC::num_instances;
86 SharedRPC::SharedRPC(
const std::tr1::shared_ptr<SharedChannel>& channel,
87 const requester_type::shared_pointer&
requester,
88 const pvd::PVStructure::const_shared_pointer &pvRequest)
99 channel->owner->rpcs.remove(
this);
116 std::tr1::shared_ptr<SharedPV::Handler> handler;
124 handler =
channel->owner->handler;
129 requester_type::shared_pointer req(
requester.lock());
134 std::tr1::shared_ptr<RPCOP> impl(
new RPCOP(shared_from_this(),
pvRequest, pvArgument),
139 handler->onRPC(
channel->owner, op);
virtual pva::Channel::shared_pointer getChannel()=0
static Status error(const std::string &m)
Mark external symbols and entry points for shared libraries.
const pvd::PVStructure::const_shared_pointer pvRequest
static size_t num_instances
const std::tr1::shared_ptr< SharedChannel > channel
APIs for the epicsMutex mutual exclusion semaphore.
Impl(const pvd::PVStructure::const_shared_pointer &pvRequest, const pvd::PVStructure::const_shared_pointer &value, const pvd::BitSet &changed, int debugLvl=0)
const ChannelProcessRequester::weak_pointer requester
virtual pva::ChannelBaseRequester::shared_pointer getRequester()=0
virtual void complete(const pvd::Status &sts, const epics::pvData::PVStructure *value)=0
virtual void cancel() OVERRIDE FINAL
Data interface for a structure,.
virtual std::tr1::shared_ptr< pva::Channel > getChannel() OVERRIDE FINAL
FORCE_INLINE const FieldCreatePtr & getFieldCreate()
std::tr1::shared_ptr< PVStructure > PVStructurePtr
virtual void destroy() OVERRIDE FINAL
const StructureConstPtr & getStructure() const
ChannelPut::shared_pointer op
virtual void request(epics::pvData::PVStructure::shared_pointer const &pvArgument) OVERRIDE FINAL
const requester_type::weak_pointer requester
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()
virtual void lastRequest() OVERRIDE FINAL