This is Unofficial EPICS BASE Doxygen Site
serverChannelImpl.h
Go to the documentation of this file.
1 
7 #ifndef SERVERCHANNEL_H_
8 #define SERVERCHANNEL_H_
9 
10 #include <pv/destroyable.h>
11 #include <pv/remote.h>
12 #include <pv/security.h>
14 
15 namespace epics {
16 namespace pvAccess {
17 
18 class BaseChannelRequester;
19 
21 {
22 public:
24 
25  static size_t num_instances;
26 
34  ServerChannel(Channel::shared_pointer const & channel,
35  const ChannelRequester::shared_pointer& requester,
36  pvAccessID cid, pvAccessID sid);
38 
39  const Channel::shared_pointer& getChannel() const { return _channel; }
40 
41  pvAccessID getCID() const { return _cid; }
42 
43  pvAccessID getSID() const { return _sid; }
44 
45  void registerRequest(pvAccessID id, const std::tr1::shared_ptr<BaseChannelRequester>& request);
46 
48 
49  void installGetField(const GetFieldRequester::shared_pointer& gf);
51 
53  std::tr1::shared_ptr<BaseChannelRequester> getRequest(pvAccessID id);
54 
55  void destroy();
56 
57  void printInfo() const;
58 
59  void printInfo(FILE *fd) const;
60 private:
61  const Channel::shared_pointer _channel;
62 
63  const ChannelRequester::shared_pointer _requester;
64 
65  const pvAccessID _cid, _sid;
66 
68  GetFieldRequester::shared_pointer _active_requester;
69 
70  typedef std::map<pvAccessID, std::tr1::shared_ptr<BaseChannelRequester> > _requests_t;
71  _requests_t _requests;
72 
73  bool _destroyed;
74 
75  mutable epics::pvData::Mutex _mutex;
76 };
77 
78 }
79 }
80 
81 
82 #endif /* SERVERCHANNEL_H_ */
std::string request
void installGetField(const GetFieldRequester::shared_pointer &gf)
const Channel::shared_pointer & getChannel() const
epicsInt32 pvAccessID
Definition: pvaDefs.h:18
TODO only here because of the Lockable.
Definition: ntaggregate.cpp:16
void completeGetField(GetFieldRequester *req)
ServerChannel(Channel::shared_pointer const &channel, const ChannelRequester::shared_pointer &requester, pvAccessID cid, pvAccessID sid)
const ChannelProcessRequester::weak_pointer requester
Definition: pvAccess.cpp:68
POINTER_DEFINITIONS(ServerChannel)
void registerRequest(pvAccessID id, const std::tr1::shared_ptr< BaseChannelRequester > &request)
std::tr1::shared_ptr< BaseChannelRequester > getRequest(pvAccessID id)
may return NULL
epicsMutex Mutex
Definition: lock.h:28
void unregisterRequest(pvAccessID id)