16 #define epicsExportSharedSymbols 30 const bool getcurrent;
33 operation_type::shared_pointer
op;
42 {REFTRACE_INCREMENT(num_instances);}
47 REFTRACE_DECREMENT(num_instances);
60 }
catch(std::exception& e) {
68 return op ? op->getChannel()->getChannelName() :
"<dead>";
77 if(started && op) op->cancel();
85 return op ? op->getChannel()->getRequesterName() :
"<dead>";
90 pva::ChannelPut::shared_pointer
const & channelPut,
97 if(started || !cb)
return;
102 event.message.clear();
107 }
else if(getcurrent) {
113 pvd::BitSet::shared_pointer tosend(
new pvd::BitSet);
116 doPut(G, args, channelPut, tosend);
123 event.message =
"Disconnect";
130 pva::ChannelPut::shared_pointer
const & channelPut,
131 const pvd::BitSet::shared_pointer& tosend)
138 throw std::logic_error(
"No put value provided");
139 else if(*args.
root->getStructure()!=*puttype)
140 throw std::logic_error(
"Provided put value with wrong type");
141 }
catch(std::exception& e){
143 event.message = e.what();
152 channelPut->put(std::tr1::const_pointer_cast<pvd::PVStructure>(args.
root), tosend);
158 pva::ChannelPut::shared_pointer
const & channelPut,
159 epics::pvData::PVStructure::shared_pointer
const & pvStructure,
160 epics::pvData::BitSet::shared_pointer
const & bitSet)
OVERRIDE FINAL 172 pvd::BitSet::shared_pointer tosend(
new pvd::BitSet);
175 doPut(G, args, channelPut, tosend);
181 pva::ChannelPut::shared_pointer
const & channelPut)
OVERRIDE FINAL 190 event.message.clear();
198 strm <<
"Operation(Put" 199 "\"" <<
name() <<
"\"" 204 size_t Putter::num_instances;
212 epics::pvData::PVStructure::const_shared_pointer pvRequest,
215 if(!impl)
throw std::logic_error(
"Dead Channel");
219 std::tr1::shared_ptr<Putter> ret(Putter::build(cb, getprevious));
223 ret->op = getChannel()->createChannelPut(ret->internal_shared_from_this(),
epics::pvData::BitSetPtr empty
std::tr1::shared_ptr< detail::SharedPut > put
Information on get/rpc completion.
virtual void putDone(const PutEvent &evt)=0
Put operation is complete.
std::tr1::shared_ptr< const Structure > StructureConstPtr
virtual std::string name() const =0
const std::string & getMessage() const
PVStructure::shared_pointer createRequest(std::string const &request)
Handle for in-progress get/put/rpc operation.
void registerRefTrackPut()
virtual void getDone(const epics::pvData::Status &status, ChannelPut::shared_pointer const &channelPut, epics::pvData::PVStructure::shared_pointer const &pvStructure, epics::pvData::BitSet::shared_pointer const &bitSet)=0
virtual void show(std::ostream &) const =0
#define LOG(level, format,...)
virtual void channelDisconnect(bool destroy)
std::tr1::shared_ptr< Derived > internal_shared_from_this()
epics::pvData::PVStructure::const_shared_pointer root
Callee must fill this in with an instance of the Structure passed as the 'build' argument.
APIs for the epicsMutex mutual exclusion semaphore.
static size_t num_instances
virtual void channelPutConnect(const epics::pvData::Status &status, ChannelPut::shared_pointer const &channelPut, epics::pvData::Structure::const_shared_pointer const &structure)=0
Data interface for a structure,.
void registerRefCounter(const char *name, const size_t *counter)
request cancelled before completion
APIs for the epicsEvent binary semaphore.
virtual void putBuild(const epics::pvData::StructureConstPtr &build, Args &args)=0
request ends in failure. Check message
epics::pvData::PVStructure::const_shared_pointer previous
ChannelPut::shared_pointer op
shared_ptr< T > const_pointer_cast(shared_ptr< U > const &r) BOOST_NOEXCEPT
C++ and C descriptions for a thread.
virtual void putDone(const epics::pvData::Status &status, ChannelPut::shared_pointer const &channelPut)=0