pvDatabaseCPP  4.5.3-dev
processRecord.h
Go to the documentation of this file.
1 /* processRecord.h */
11 #ifndef PROCESSRECORD_H
12 #define PROCESSRECORD_H
13 
14 #include <map>
15 #include <epicsThread.h>
16 #include <pv/event.h>
18 
19 #include <shareLib.h>
20 
21 namespace epics { namespace pvDatabase {
22 
23 typedef std::tr1::shared_ptr<epicsThread> EpicsThreadPtr;
24 
26 typedef std::tr1::shared_ptr<ProcessRecord> ProcessRecordPtr;
27 
36 class epicsShareClass ProcessRecord :
37  public PVRecord,
38  public epicsThreadRunable
39 {
40 public:
41  POINTER_DEFINITIONS(ProcessRecord);
48  static ProcessRecordPtr create(
49  std::string const & recordName,double delay);
54  virtual bool init();
58  virtual void process();
62  virtual void run();
66  void startThread();
70  void stop();
71 private:
73  std::string const & recordName,
74  epics::pvData::PVStructurePtr const & pvStructure,double delay);
75  double delay;
76  EpicsThreadPtr thread;
77  epics::pvData::Event runStop;
78  epics::pvData::Event runReturn;
79  PVDatabasePtr pvDatabase;
80  PVRecordMap pvRecordMap;
81  epics::pvData::PVStringPtr pvCommand;
82  epics::pvData::PVStringPtr pvRecordName;
83  epics::pvData::PVStringPtr pvResult;
84  epics::pvData::Mutex mutex;
85 };
86 
87 }}
88 
89 #endif /* PROCESSRECORD_H */
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
Process another record in the same database.
Definition: processRecord.h:36
std::tr1::shared_ptr< ProcessRecord > ProcessRecordPtr
Definition: processRecord.h:25
std::tr1::shared_ptr< epicsThread > EpicsThreadPtr
Definition: processRecord.h:23