This is Unofficial EPICS BASE Doxygen Site
pdb.h
Go to the documentation of this file.
1 #ifndef PDB_H
2 #define PDB_H
3 
4 #include <dbEvent.h>
5 
6 #include <pv/configuration.h>
7 #include <pv/pvAccess.h>
8 
9 #include "weakmap.h"
10 
11 #include <shareLib.h>
12 
13 struct PDBProvider;
14 
15 struct PDBPV
16 {
18 
20 
21  PDBPV() {}
22  virtual ~PDBPV() {}
23 
24  virtual
25  epics::pvAccess::Channel::shared_pointer
26  connect(const std::tr1::shared_ptr<PDBProvider>& prov,
27  const epics::pvAccess::ChannelRequester::shared_pointer& req) =0;
28 
29  // print info to stdout (with iocsh redirection)
30  virtual void show(int lvl) {}
31 };
32 
35  public std::tr1::enable_shared_from_this<PDBProvider>
36 {
38 
39  explicit PDBProvider(const epics::pvAccess::Configuration::const_shared_pointer& =epics::pvAccess::Configuration::const_shared_pointer());
40  virtual ~PDBProvider();
41 
42  // ChannelProvider
43  virtual void destroy() OVERRIDE FINAL;
44  virtual std::string getProviderName() OVERRIDE FINAL;
45  virtual epics::pvAccess::ChannelFind::shared_pointer channelFind(std::string const & channelName,
46  epics::pvAccess::ChannelFindRequester::shared_pointer const & channelFindRequester) OVERRIDE FINAL;
47  virtual epics::pvAccess::ChannelFind::shared_pointer channelList(epics::pvAccess::ChannelListRequester::shared_pointer const & channelListRequester) OVERRIDE FINAL;
48  virtual epics::pvAccess::Channel::shared_pointer createChannel(std::string const & channelName,
49  epics::pvAccess::ChannelRequester::shared_pointer const & channelRequester,
50  short priority = PRIORITY_DEFAULT) OVERRIDE FINAL;
51  virtual epics::pvAccess::Channel::shared_pointer createChannel(std::string const & channelName,
52  epics::pvAccess::ChannelRequester::shared_pointer const & channelRequester,
53  short priority, std::string const & address) OVERRIDE FINAL;
54 
55  // ChannelFind
56  virtual std::tr1::shared_ptr<ChannelProvider> getChannelProvider() OVERRIDE FINAL { return shared_from_this(); }
57  virtual void cancel() OVERRIDE FINAL {/* our channelFind() is synchronous, so nothing to cancel */}
58 
59  typedef std::map<std::string, PDBPV::shared_pointer> persist_pv_map_t;
60  persist_pv_map_t persist_pv_map;
61 
63  transient_pv_map_t transient_pv_map;
64 
65  dbEventCtx event_context;
66 
67  static size_t num_instances;
68 };
69 
72 
73 #endif // PDB_H
dbEventCtx event_context
Definition: pdb.h:65
virtual void show(int lvl)
Definition: pdb.h:30
transient_pv_map_t transient_pv_map
Definition: pdb.h:63
virtual void cancel() OVERRIDE FINAL
Definition: pdb.h:57
std::tr1::shared_ptr< const Structure > StructureConstPtr
Definition: pvIntrospect.h:162
virtual std::tr1::shared_ptr< ChannelProvider > getChannelProvider() OVERRIDE FINAL
Definition: pdb.h:56
Mark external symbols and entry points for shared libraries.
#define OVERRIDE
Definition: pvAccess.h:55
static size_t num_instances
Definition: pdb.h:67
epics::pvData::StructureConstPtr fielddesc
Definition: pdb.h:19
PDBPV()
Definition: pdb.h:21
POINTER_DEFINITIONS(PDBPV)
virtual epics::pvAccess::Channel::shared_pointer connect(const std::tr1::shared_ptr< PDBProvider > &prov, const epics::pvAccess::ChannelRequester::shared_pointer &req)=0
virtual ~PDBPV()
Definition: pdb.h:22
std::map< std::string, PDBPV::shared_pointer > persist_pv_map_t
Definition: pdb.h:59
#define QSRV_API
Definition: qsrv.h:36
weak_value_map< std::string, PDBPV > transient_pv_map_t
Definition: pdb.h:62
QSRV_API void QSRVRegistrar_counters()
Definition: qsrv.cpp:34
persist_pv_map_t persist_pv_map
Definition: pdb.h:60
#define FINAL
Definition: pvAccess.h:48
Definition: pdb.h:15