This is Unofficial EPICS BASE Doxygen Site
epics::pvAccess::SingletonChannelProviderFactory< Provider > Struct Template Reference

#include "pvAccess.h"

+ Inheritance diagram for epics::pvAccess::SingletonChannelProviderFactory< Provider >:
+ Collaboration diagram for epics::pvAccess::SingletonChannelProviderFactory< Provider >:

Public Member Functions

 SingletonChannelProviderFactory (const std::string &name, const std::tr1::shared_ptr< const Configuration > &conf=std::tr1::shared_ptr< const Configuration >())
 
virtual ~SingletonChannelProviderFactory ()
 
virtual std::string getFactoryName () OVERRIDE FINAL
 
virtual ChannelProvider::shared_pointer sharedInstance () OVERRIDE FINAL
 
virtual ChannelProvider::shared_pointer newInstance (const std::tr1::shared_ptr< Configuration > &conf) OVERRIDE FINAL
 
- Public Member Functions inherited from epics::pvAccess::ChannelProviderFactory
 POINTER_DEFINITIONS (ChannelProviderFactory)
 
 ChannelProviderFactory ()
 
virtual ~ChannelProviderFactory ()
 
virtual ChannelProvider::shared_pointer newInstance ()
 

Detailed Description

template<class Provider>
struct epics::pvAccess::SingletonChannelProviderFactory< Provider >

Helper for ChannelProviders which access a singleton resource (eg. process database). Only one concurrent instance will be created. Requires the existance of a ctor Provider(const std::tr1::shared_ptr<const Configuration>& conf)

Definition at line 1397 of file pvAccess.h.

Constructor & Destructor Documentation

template<class Provider >
epics::pvAccess::SingletonChannelProviderFactory< Provider >::SingletonChannelProviderFactory ( const std::string &  name,
const std::tr1::shared_ptr< const Configuration > &  conf = std::tr1::shared_ptr<const Configuration>() 
)
inline

Definition at line 1399 of file pvAccess.h.

1401  :pname(name), config(conf)
1402  {}
const std::string pname
template<class Provider >
virtual epics::pvAccess::SingletonChannelProviderFactory< Provider >::~SingletonChannelProviderFactory ( )
inlinevirtual

Definition at line 1403 of file pvAccess.h.

1403 {}

Member Function Documentation

template<class Provider >
virtual std::string epics::pvAccess::SingletonChannelProviderFactory< Provider >::getFactoryName ( )
inlinevirtual

Get factory name (i.e. name of the provider).

Returns
the factory name.

Implements epics::pvAccess::ChannelProviderFactory.

Definition at line 1405 of file pvAccess.h.

1405 { return pname; }
const std::string pname
template<class Provider >
virtual ChannelProvider::shared_pointer epics::pvAccess::SingletonChannelProviderFactory< Provider >::newInstance ( const std::tr1::shared_ptr< Configuration > &  )
inlinevirtual

Create a new instance using a specific Configuration.

Returns
a new instance.

Reimplemented from epics::pvAccess::ChannelProviderFactory.

Definition at line 1418 of file pvAccess.h.

1419  {
1420  (void)conf; // ignore and use our Configuration
1421  return sharedInstance();
1422  }
virtual ChannelProvider::shared_pointer sharedInstance() OVERRIDE FINAL
Definition: pvAccess.h:1407
template<class Provider >
virtual ChannelProvider::shared_pointer epics::pvAccess::SingletonChannelProviderFactory< Provider >::sharedInstance ( )
inlinevirtual

Get a shared instance using the default Configuration.

Returns
a shared instance.

Implements epics::pvAccess::ChannelProviderFactory.

Definition at line 1407 of file pvAccess.h.

1408  {
1410  ChannelProvider::shared_pointer ret(shared.lock());
1411  if(!ret) {
1412  std::tr1::shared_ptr<Provider> inst(new Provider(config));
1413  shared = ret = inst;
1414  }
1415  return ret;
1416  }
A lock for multithreading.
Definition: lock.h:36
epics::pvData::Mutex sharedM
ChannelProvider::weak_pointer shared

The documentation for this struct was generated from the following file: