13 #define epicsExportSharedSymbols 26 const epics::pvAccess::ChannelProvider::weak_pointer& srvprov,
27 const epics::pvAccess::ChannelRequester::weak_pointer &r,
28 const std::string& addr)
32 ,server_provder(srvprov)
52 std::tr1::shared_ptr<pva::ChannelProvider>
62 return entry->channel->getRemoteAddress();
68 return entry->channel->getConnectionState();
74 return entry->channelName;
77 std::tr1::shared_ptr<pva::ChannelRequester>
80 return pva::ChannelRequester::shared_pointer(
requester);
86 std::string
const & subField)
89 entry->channel->getField(requester, subField);
95 return entry->channel->getAccessRights(pvField);
98 pva::ChannelProcess::shared_pointer
100 pva::ChannelProcessRequester::shared_pointer
const & channelProcessRequester,
101 pvd::PVStructure::shared_pointer
const & pvRequest)
104 return entry->channel->createChannelProcess(channelProcessRequester, pvRequest);
106 return Channel::createChannelProcess(channelProcessRequester, pvRequest);
109 pva::ChannelGet::shared_pointer
111 pva::ChannelGetRequester::shared_pointer
const & channelGetRequester,
112 pvd::PVStructure::shared_pointer
const & pvRequest)
114 return entry->channel->createChannelGet(channelGetRequester, pvRequest);
117 pva::ChannelPut::shared_pointer
119 pva::ChannelPutRequester::shared_pointer
const & channelPutRequester,
120 pvd::PVStructure::shared_pointer
const & pvRequest)
124 return entry->channel->createChannelPut(channelPutRequester, pvRequest);
126 return Channel::createChannelPut(channelPutRequester, pvRequest);
129 pva::ChannelPutGet::shared_pointer
131 pva::ChannelPutGetRequester::shared_pointer
const & channelPutGetRequester,
132 pvd::PVStructure::shared_pointer
const & pvRequest)
135 return entry->channel->createChannelPutGet(channelPutGetRequester, pvRequest);
137 return Channel::createChannelPutGet(channelPutGetRequester, pvRequest);
140 pva::ChannelRPC::shared_pointer
142 pva::ChannelRPCRequester::shared_pointer
const & channelRPCRequester,
143 pvd::PVStructure::shared_pointer
const & pvRequest)
146 return entry->channel->createChannelRPC(channelRPCRequester, pvRequest);
148 return Channel::createChannelRPC(channelRPCRequester, pvRequest);
157 pvd::Monitor::shared_pointer
159 pvd::MonitorRequester::shared_pointer
const & monitorRequester,
160 pvd::PVStructure::shared_pointer
const & pvRequest)
166 MonitorCacheEntry::shared_pointer ment;
167 MonitorUser::shared_pointer mon;
178 ment =
entry->mon_entries.find(ser);
181 entry->mon_entries[ser] = ment;
182 ment->weakref = ment;
192 M =
entry->channel->createMonitor(ment, pvRequest);
198 Guard G(ment->mutex());
201 ment->interested.insert(mon);
203 mon->srvchan = shared_pointer(
weakref);
204 mon->req = monitorRequester;
206 typedesc = ment->typedesc;
207 startresult = ment->startresult;
209 }
catch(std::exception& e) {
211 std::cerr<<
"Exception in GWChannel::createMonitor()\n" 212 "is "<<e.what()<<
"\n";
218 if(typedesc || !startresult.
isSuccess()) {
220 monitorRequester->monitorConnect(startresult, mon, typedesc);
226 pva::ChannelArray::shared_pointer
228 pva::ChannelArrayRequester::shared_pointer
const & channelArrayRequester,
229 pvd::PVStructure::shared_pointer
const & pvRequest)
231 return entry->channel->createChannelArray(channelArrayRequester, pvRequest);
238 out<<
"GWChannel for "<<
entry->channelName<<
"\n";
244 epics::iocshVariable<int, &p2pReadOnly>(
"p2pReadOnly");
virtual std::tr1::shared_ptr< epics::pvAccess::ChannelRequester > getChannelRequester()
virtual epics::pvAccess::AccessRights getAccessRights(epics::pvData::PVField::shared_pointer const &pvField)
std::tr1::shared_ptr< const Structure > StructureConstPtr
virtual void getField(epics::pvAccess::GetFieldRequester::shared_pointer const &requester, std::string const &subField)
const epics::pvAccess::ChannelProvider::weak_pointer server_provder
virtual std::string getRequesterName()
EPICS_ATOMIC_INLINE size_t epicsAtomicDecrSizeT(size_t *pTarget)
virtual ConnectionState getConnectionState()
virtual epics::pvAccess::ChannelProcess::shared_pointer createChannelProcess(epics::pvAccess::ChannelProcessRequester::shared_pointer const &channelProcessRequester, epics::pvData::PVStructure::shared_pointer const &pvRequest)
APIs for the epicsMutex mutual exclusion semaphore.
virtual epics::pvAccess::ChannelArray::shared_pointer createChannelArray(epics::pvAccess::ChannelArrayRequester::shared_pointer const &channelArrayRequester, epics::pvData::PVStructure::shared_pointer const &pvRequest)
const ChannelProcessRequester::weak_pointer requester
virtual std::tr1::shared_ptr< epics::pvAccess::ChannelProvider > getProvider()
virtual std::string getChannelName()
const requester_type::weak_pointer requester
GWChannel(const ChannelCacheEntry::shared_pointer &e, const epics::pvAccess::ChannelProvider::weak_pointer &srvprov, const requester_type::weak_pointer &, const std::string &addr)
virtual epics::pvAccess::ChannelGet::shared_pointer createChannelGet(epics::pvAccess::ChannelGetRequester::shared_pointer const &channelGetRequester, epics::pvData::PVStructure::shared_pointer const &pvRequest)
virtual epics::pvAccess::ChannelRPC::shared_pointer createChannelRPC(epics::pvAccess::ChannelRPCRequester::shared_pointer const &channelRPCRequester, epics::pvData::PVStructure::shared_pointer const &pvRequest)
virtual std::string getRemoteAddress()
virtual epics::pvAccess::ChannelPutGet::shared_pointer createChannelPutGet(epics::pvAccess::ChannelPutGetRequester::shared_pointer const &channelPutGetRequester, epics::pvData::PVStructure::shared_pointer const &pvRequest)
EPICS_ATOMIC_INLINE size_t epicsAtomicIncrSizeT(size_t *pTarget)
void epicsShareFunc serializeToVector(const Serializable *S, int byteOrder, std::vector< epicsUInt8 > &out)
Push serialize and append to the provided byte vector. No caching is done. Only complete serializatio...
virtual epics::pvAccess::ChannelPut::shared_pointer createChannelPut(epics::pvAccess::ChannelPutRequester::shared_pointer const &channelPutRequester, epics::pvData::PVStructure::shared_pointer const &pvRequest)
MonitorCacheEntry::pvrequest_t pvrequest_t
std::tr1::shared_ptr< Monitor > MonitorPtr
virtual epics::pvData::Monitor::shared_pointer createMonitor(epics::pvData::MonitorRequester::shared_pointer const &monitorRequester, epics::pvData::PVStructure::shared_pointer const &pvRequest)
static size_t num_instances