12 #include <pv/pvAccess.h>
15 #include "pvahelper.h"
24 weak_pointer weakself;
25 inline shared_pointer shared_from_this() {
return shared_pointer(weakself); }
35 PDBProvider::shared_pointer provider;
39 epics::pvData::BitSet scratch;
43 p2p::auto_ptr<ScalarBuilder> builder;
44 p2p::auto_ptr<PVIF> pvif;
46 epics::pvData::PVStructurePtr complete;
48 typedef std::set<PDBSingleMonitor*> interested_t;
49 bool interested_iterating;
50 interested_t interested, interested_add;
52 typedef std::set<BaseMonitor::shared_pointer> interested_remove_t;
53 interested_remove_t interested_remove;
55 DBEvent evt_VALUE, evt_PROPERTY;
56 bool hadevent_VALUE, hadevent_PROPERTY;
58 static size_t num_instances;
61 const PDBProvider::shared_pointer& prov);
67 epics::pvAccess::Channel::shared_pointer
68 connect(
const std::tr1::shared_ptr<PDBProvider>& prov,
69 const epics::pvAccess::ChannelRequester::shared_pointer& req) OVERRIDE FINAL;
73 void finalizeMonitor();
77 public std::tr1::enable_shared_from_this<PDBSingleChannel>
81 PDBSinglePV::shared_pointer pv;
86 static size_t num_instances;
89 const epics::pvAccess::ChannelRequester::shared_pointer& req);
92 virtual epics::pvAccess::ChannelPut::shared_pointer createChannelPut(
93 epics::pvAccess::ChannelPutRequester::shared_pointer
const & requester,
94 epics::pvData::PVStructure::shared_pointer
const & pvRequest) OVERRIDE FINAL;
95 virtual epics::pvData::Monitor::shared_pointer createMonitor(
96 epics::pvData::MonitorRequester::shared_pointer
const & requester,
97 epics::pvData::PVStructure::shared_pointer
const & pvRequest) OVERRIDE FINAL;
99 virtual void printInfo(std::ostream& out) OVERRIDE FINAL;
103 public std::tr1::enable_shared_from_this<PDBSinglePut>
107 typedef epics::pvAccess::ChannelPutRequester requester_t;
108 PDBSingleChannel::shared_pointer channel;
109 requester_t::weak_pointer requester;
111 epics::pvData::BitSetPtr changed, wait_changed;
112 epics::pvData::PVStructurePtr pvf;
113 p2p::auto_ptr<PVIF> pvif, wait_pvif;
114 processNotify notify;
121 static size_t num_instances;
123 PDBSinglePut(
const PDBSingleChannel::shared_pointer& channel,
124 const epics::pvAccess::ChannelPutRequester::shared_pointer& requester,
125 const epics::pvData::PVStructure::shared_pointer& pvReq);
128 virtual void destroy() OVERRIDE FINAL { pvif.reset(); channel.reset(); requester.reset(); }
129 virtual std::tr1::shared_ptr<epics::pvAccess::Channel> getChannel() OVERRIDE FINAL {
return channel; }
130 virtual void cancel() OVERRIDE FINAL;
131 virtual void lastRequest() OVERRIDE FINAL {}
133 epics::pvData::PVStructure::shared_pointer
const & pvPutStructure,
134 epics::pvData::BitSet::shared_pointer
const & putBitSet) OVERRIDE FINAL;
135 virtual void get() OVERRIDE FINAL;
142 const PDBSinglePV::shared_pointer pv;
144 static size_t num_instances;
147 const requester_t::shared_pointer& requester,
148 const epics::pvData::PVStructure::shared_pointer& pvReq);
151 virtual void onStart() OVERRIDE FINAL;
152 virtual void onStop() OVERRIDE FINAL;
155 virtual void destroy() OVERRIDE FINAL;
158 #endif // PDBSINGLE_H
virtual void requestUpdate() OVERRIDE FINAL