9 #define epicsExportSharedSymbols 17 size_t ServerChannel::num_instances;
19 ServerChannel::ServerChannel(Channel::shared_pointer
const & channel,
20 const ChannelRequester::shared_pointer &
requester,
23 _requester(requester),
38 if(_destroyed)
throw std::logic_error(
"Can't registerRequest() for destory'd server channel");
45 _requests_t::iterator iter = _requests.find(
id);
46 if(iter != _requests.end())
48 _requests.erase(iter);
55 _requests_t::iterator iter = _requests.find(
id);
56 if(iter != _requests.end())
60 return BaseChannelRequester::shared_pointer();
69 if (_destroyed)
return;
84 for(_requests_t::const_iterator it=reqs.begin(), end=reqs.end(); it!=end; ++it)
86 const _requests_t::mapped_type& req = it->second;
106 fprintf(fd,
"CLASS : %s\n",
typeid(*this).name());
107 fprintf(fd,
"CHANNEL : %s\n",
typeid(*_channel).name());
112 GetFieldRequester::shared_pointer prev;
115 prev.swap(_active_requester);
116 _active_requester = gf;
125 GetFieldRequester::shared_pointer prev;
128 if(_active_requester.get()==req)
129 prev.swap(_active_requester);
void installGetField(const GetFieldRequester::shared_pointer &gf)
static Status error(const std::string &m)
TODO only here because of the Lockable.
A lock for multithreading.
void completeGetField(GetFieldRequester *req)
const ChannelProcessRequester::weak_pointer requester
std::tr1::shared_ptr< const Field > FieldConstPtr
#define THROW_BASE_EXCEPTION(msg)
static size_t num_instances
void registerRequest(pvAccessID id, const std::tr1::shared_ptr< BaseChannelRequester > &request)
std::tr1::shared_ptr< BaseChannelRequester > getRequest(pvAccessID id)
may return NULL
void unregisterRequest(pvAccessID id)