This is Unofficial EPICS BASE Doxygen Site
channelProviderLocal.h
Go to the documentation of this file.
1 /* channelProviderLocal.h */
11 #ifndef CHANNELPROVIDERLOCAL_H
12 #define CHANNELPROVIDERLOCAL_H
13 
14 #include <string>
15 #include <cstring>
16 #include <stdexcept>
17 #include <memory>
18 #include <set>
19 
20 #include <pv/lock.h>
21 #include <pv/pvType.h>
22 #include <pv/pvData.h>
23 #include <pv/pvAccess.h>
24 #include <pv/status.h>
25 #include <pv/serverContext.h>
26 #include <pv/pvStructureCopy.h>
27 #include <pv/pvDatabase.h>
28 
29 #include <shareLib.h>
30 
31 namespace epics { namespace pvDatabase {
32 
34 typedef std::tr1::shared_ptr<ChannelProviderLocal> ChannelProviderLocalPtr;
35 typedef std::tr1::weak_ptr<ChannelProviderLocal> ChannelProviderLocalWPtr;
37 typedef std::tr1::shared_ptr<ChannelLocal> ChannelLocalPtr;
38 typedef std::tr1::weak_ptr<ChannelLocal> ChannelLocalWPtr;
39 
40 
42  PVRecordPtr const & pvRecord,
43  epics::pvData::MonitorRequester::shared_pointer const & monitorRequester,
44  epics::pvData::PVStructurePtr const & pvRequest);
45 
46 epicsShareFunc ChannelProviderLocalPtr getChannelProviderLocal();
47 
48 
57  public std::tr1::enable_shared_from_this<ChannelProviderLocal>
58 {
59 public:
68  virtual ~ChannelProviderLocal();
73  virtual void destroy(){};
79  virtual std::string getProviderName();
93  virtual epics::pvAccess::ChannelFind::shared_pointer channelFind(
94  std::string const &channelName,
95  epics::pvAccess::ChannelFindRequester::shared_pointer const & channelFindRequester);
105  virtual epics::pvAccess::ChannelFind::shared_pointer channelList(
106  epics::pvAccess::ChannelListRequester::shared_pointer const & channelListRequester);
116  virtual epics::pvAccess::Channel::shared_pointer createChannel(
117  std::string const &channelName,
118  epics::pvAccess::ChannelRequester::shared_pointer const &channelRequester,
119  short priority);
133  virtual epics::pvAccess::Channel::shared_pointer createChannel(
134  std::string const &channelName,
135  epics::pvAccess::ChannelRequester::shared_pointer const &channelRequester,
136  short priority,
137  std::string const &address);
142  int getTraceLevel() {return traceLevel;}
147  void setTraceLevel(int level) {traceLevel = level;}
153  virtual std::tr1::shared_ptr<ChannelProvider> getChannelProvider();
158  virtual void cancel() {}
159 private:
160  friend epicsShareFunc ChannelProviderLocalPtr getChannelProviderLocal();
161  PVDatabaseWPtr pvDatabase;
162  int traceLevel;
163  friend class ChannelProviderLocalRun;
164 };
165 
174  public PVRecordClient,
175  public std::tr1::enable_shared_from_this<ChannelLocal>
176 {
177 public:
184  ChannelLocal(
185  ChannelProviderLocalPtr const &channelProvider,
186  epics::pvAccess::ChannelRequester::shared_pointer const & requester,
187  PVRecordPtr const & pvRecord
188  );
192  virtual ~ChannelLocal();
197  virtual void destroy() {};
204  virtual void detach(PVRecordPtr const &pvRecord);
209  virtual std::string getRequesterName();
215  virtual void message(
216  std::string const & message,
217  epics::pvData::MessageType messageType);
222  virtual epics::pvAccess::ChannelProvider::shared_pointer getProvider();
227  virtual std::string getRemoteAddress();
232  virtual epics::pvAccess::Channel::ConnectionState getConnectionState();
237  virtual std::string getChannelName();
242  virtual epics::pvAccess::ChannelRequester::shared_pointer getChannelRequester();
247  virtual bool isConnected();
257  virtual void getField(
258  epics::pvAccess::GetFieldRequester::shared_pointer const &requester,
259  std::string const & subField);
265  virtual epics::pvAccess::AccessRights getAccessRights(
266  epics::pvData::PVField::shared_pointer const &pvField);
275  virtual epics::pvAccess::ChannelProcess::shared_pointer createChannelProcess(
276  epics::pvAccess::ChannelProcessRequester::shared_pointer const &requester,
277  epics::pvData::PVStructurePtr const &pvRequest);
286  virtual epics::pvAccess::ChannelGet::shared_pointer createChannelGet(
287  epics::pvAccess::ChannelGetRequester::shared_pointer const &requester,
288  epics::pvData::PVStructurePtr const &pvRequest);
297  virtual epics::pvAccess::ChannelPut::shared_pointer createChannelPut(
298  epics::pvAccess::ChannelPutRequester::shared_pointer const &requester,
299  epics::pvData::PVStructurePtr const &pvRequest);
308  virtual epics::pvAccess::ChannelPutGet::shared_pointer createChannelPutGet(
309  epics::pvAccess::ChannelPutGetRequester::shared_pointer const &requester,
310  epics::pvData::PVStructurePtr const &pvRequest);
319  virtual epics::pvAccess::ChannelRPC::shared_pointer createChannelRPC(
320  epics::pvAccess::ChannelRPCRequester::shared_pointer const &requester,
321  epics::pvData::PVStructurePtr const &pvRequest);
330  virtual epics::pvData::Monitor::shared_pointer createMonitor(
331  epics::pvData::MonitorRequester::shared_pointer const &requester,
332  epics::pvData::PVStructurePtr const &pvRequest);
341  virtual epics::pvAccess::ChannelArray::shared_pointer createChannelArray(
342  epics::pvAccess::ChannelArrayRequester::shared_pointer const &requester,
343  epics::pvData::PVStructurePtr const &pvRequest);
347  virtual void printInfo();
353  virtual void printInfo(std::ostream& out);
354 protected:
355  shared_pointer getPtrSelf()
356  {
357  return shared_from_this();
358  }
359 private:
360  epics::pvAccess::ChannelRequester::shared_pointer requester;
361  ChannelProviderLocalWPtr provider;
362  PVRecordWPtr pvRecord;
364 };
365 
366 }}
367 #endif /* CHANNELPROVIDERLOCAL_H */
epicsShareFunc ChannelProviderLocalPtr getChannelProviderLocal()
#define epicsShareFunc
Definition: shareLib.h:209
TODO only here because of the Lockable.
Definition: ntaggregate.cpp:16
Mark external symbols and entry points for shared libraries.
std::tr1::weak_ptr< PVDatabase > PVDatabaseWPtr
Definition: pvDatabase.h:45
std::tr1::shared_ptr< ChannelLocal > ChannelLocalPtr
int getTraceLevel()
get trace level (0,1,2) means (nothing,lifetime,process)
std::tr1::weak_ptr< ChannelLocal > ChannelLocalWPtr
#define POINTER_DEFINITIONS(clazz)
Definition: sharedPtr.h:198
epicsMutex mutex
Definition: pvAccess.cpp:71
epicsShareFunc epics::pvData::MonitorPtr createMonitorLocal(PVRecordPtr const &pvRecord, epics::pvData::MonitorRequester::shared_pointer const &monitorRequester, epics::pvData::PVStructurePtr const &pvRequest)
std::tr1::shared_ptr< ChannelProviderLocal > ChannelProviderLocalPtr
Channel for accessing a PVRecord.
const ChannelProcessRequester::weak_pointer requester
Definition: pvAccess.cpp:68
#define epicsShareClass
Definition: shareLib.h:206
An interface implemented by code that accesses the record.
Definition: pvDatabase.h:408
std::tr1::shared_ptr< PVRecord > PVRecordPtr
Definition: pvDatabase.h:21
std::tr1::shared_ptr< PVStructure > PVStructurePtr
Definition: pvData.h:87
std::tr1::weak_ptr< PVRecord > PVRecordWPtr
Definition: pvDatabase.h:23
ChannelProvider for PVDatabase.
virtual void destroy()
DEPRECATED.
epicsMutex Mutex
Definition: lock.h:28
void setTraceLevel(int level)
set trace level (0,1,2) means (nothing,lifetime,process)
virtual void cancel()
ChannelFind method.
std::tr1::shared_ptr< Monitor > MonitorPtr
Definition: monitor.h:44
std::tr1::weak_ptr< ChannelProviderLocal > ChannelProviderLocalWPtr