pvDatabaseCPP  4.7.0
pvdbcrProcessRecord.h
Go to the documentation of this file.
1 
10 #ifndef PVDBCRPROCESSARRAY_H
11 #define PVDBCRPROCESSARRAY_H
12 #include <epicsThread.h>
13 #include <epicsGuard.h>
14 #include <pv/event.h>
15 #include <pv/pvDatabase.h>
16 #include <pv/pvSupport.h>
17 #include <pv/pvStructureCopy.h>
18 
19 #include <shareLib.h>
20 
21 namespace epics { namespace pvDatabase {
22 
23 typedef std::tr1::shared_ptr<epicsThread> EpicsThreadPtr;
25 typedef std::tr1::shared_ptr<PvdbcrProcessRecord> PvdbcrProcessRecordPtr;
26 
31 class epicsShareClass PvdbcrProcessRecord :
32  public PVRecord,
33  public epicsThreadRunable
34 {
35 private:
37  std::string const & recordName,epics::pvData::PVStructurePtr const & pvStructure,
38  double delay,
39  int asLevel,std::string const & asGroup);
40  double delay;
41  EpicsThreadPtr thread;
42  epics::pvData::Event runStop;
43  epics::pvData::Event runReturn;
44  PVDatabasePtr pvDatabase;
45  PVRecordMap pvRecordMap;
46  epics::pvData::PVStringPtr pvCommand;
47  epics::pvData::PVStringPtr pvRecordName;
48  epics::pvData::PVStringPtr pvResult;
49  epics::pvData::Mutex mutex;
50 public:
51  POINTER_DEFINITIONS(PvdbcrProcessRecord);
55  virtual ~PvdbcrProcessRecord() {}
64  static PvdbcrProcessRecordPtr create(
65  std::string const & recordName,
66  double delay= 1.0,
67  int asLevel=0,std::string const & asGroup = std::string("DEFAULT"));
73  void setDelay(double delay);
79  double getDelay();
84  virtual bool init();
88  virtual void process();
92  virtual void run();
96  void startThread();
100  void stop();
101 };
102 
103 }}
104 
105 #endif /* PVDBCRPROCESSARRAY_H */
PvdbcrProcessRecord A record that processes other records in the master database. ...
std::map< std::string, PVRecordPtr > PVRecordMap
Definition: pvDatabase.h:24
Base interface for a PVRecord.
Definition: pvDatabase.h:56
std::tr1::shared_ptr< PVDatabase > PVDatabasePtr
Definition: pvDatabase.h:43
std::tr1::shared_ptr< PvdbcrProcessRecord > PvdbcrProcessRecordPtr
std::tr1::shared_ptr< epicsThread > EpicsThreadPtr