This is Unofficial EPICS BASE Doxygen Site
getDoneThread.h
Go to the documentation of this file.
1 
10 #ifndef GetDoneThread_H
11 #define GetDoneThread_H
12 #include <queue>
13 #include <cadef.h>
14 #include <shareLib.h>
15 #include <epicsThread.h>
16 #include <pv/event.h>
17 #include <pv/lock.h>
18 
19 namespace epics {
20 namespace pvAccess {
21 namespace ca {
22 
23 class NotifyGetRequester;
24 typedef std::tr1::shared_ptr<NotifyGetRequester> NotifyGetRequesterPtr;
25 typedef std::tr1::weak_ptr<NotifyGetRequester> NotifyGetRequesterWPtr;
26 
27 
28 class GetDoneThread;
29 typedef std::tr1::shared_ptr<GetDoneThread> GetDoneThreadPtr;
30 
31 class CAChannelGet;
32 typedef std::tr1::shared_ptr<CAChannelGet> CAChannelGetPtr;
33 typedef std::tr1::weak_ptr<CAChannelGet> CAChannelGetWPtr;
34 
36 {
37 public:
38  ChannelGetRequester::weak_pointer channelGetRequester;
39  CAChannelGetWPtr channelGet;
40  bool isOnQueue;
41  NotifyGetRequester() : isOnQueue(false) {}
42  void setChannelGet(CAChannelGetPtr const &channelGet)
43  { this->channelGet = channelGet;}
44 };
45 
46 
48  public epicsThreadRunable
49 {
50 public:
51  static GetDoneThreadPtr get();
52  ~GetDoneThread();
53  virtual void run();
54  void start();
55  void stop();
56  void getDone(NotifyGetRequesterPtr const &notifyGetRequester);
57 private:
58  GetDoneThread();
59 
60  bool isStop;
61  std::tr1::shared_ptr<epicsThread> thread;
63  epics::pvData::Event waitForCommand;
64  epics::pvData::Event waitForStop;
65  std::queue<NotifyGetRequesterWPtr> notifyGetQueue;
66 };
67 
68 
69 }}}
70 
71 #endif /* GetDoneThread_H */
C++ wrapper for epicsEvent from EPICS base.
Definition: event.h:31
ChannelGetRequester::weak_pointer channelGetRequester
Definition: getDoneThread.h:38
TODO only here because of the Lockable.
Definition: ntaggregate.cpp:16
Mark external symbols and entry points for shared libraries.
std::tr1::weak_ptr< NotifyGetRequester > NotifyGetRequesterWPtr
Definition: caChannel.h:47
std::tr1::weak_ptr< CAChannelGet > CAChannelGetWPtr
Definition: caChannel.h:65
std::tr1::shared_ptr< NotifyGetRequester > NotifyGetRequesterPtr
Definition: caChannel.h:45
epicsMutex mutex
Definition: pvAccess.cpp:71
void setChannelGet(CAChannelGetPtr const &channelGet)
Definition: getDoneThread.h:42
std::tr1::shared_ptr< CAChannelGet > CAChannelGetPtr
Definition: caChannel.h:63
epicsMutex Mutex
Definition: lock.h:28
C++ and C descriptions for a thread.
std::tr1::shared_ptr< GetDoneThread > GetDoneThreadPtr
Definition: caChannel.h:48
#define false
Definition: flexdef.h:85