19 #define epicsExportSharedSymbols 33 namespace epics {
namespace pvDatabase {
35 static string providerName(
"local");
46 return channelProvider;
50 throw std::logic_error(
51 "LocalChannelProviderFactory::newInstance() not Implemented");
58 static int firstTime = 1;
61 ChannelProviderFactory::shared_pointer factory(
65 ChannelProvider::shared_pointer channelProvider =
70 ChannelProviderLocal::ChannelProviderLocal()
75 cout <<
"ChannelProviderLocal::ChannelProviderLocal()\n";
82 cout <<
"ChannelProviderLocal::~ChannelProviderLocal()\n";
88 return shared_from_this();
97 string const & channelName,
98 ChannelFindRequester::shared_pointer
const &channelFindRequester)
101 cout <<
"ChannelProviderLocal::channelFind " <<
"channelName" << endl;
105 Status notFoundStatus(Status::STATUSTYPE_ERROR,
"pvDatabase was deleted");
106 channelFindRequester->channelFindResult(
111 PVRecordPtr pvRecord = pvdb->findRecord(channelName);
113 channelFindRequester->channelFindResult(
119 Status notFoundStatus(Status::STATUSTYPE_ERROR,
"pv not found");
120 channelFindRequester->channelFindResult(
125 return shared_from_this();
129 ChannelListRequester::shared_pointer
const & channelListRequester)
132 cout <<
"ChannelProviderLocal::channelList\n";
135 if(!pvdb)
throw std::logic_error(
"pvDatabase was deleted");
137 channelListRequester->channelListResult(
138 Status::Ok, shared_from_this(), records->view(),
false);
139 return shared_from_this();
143 string const & channelName,
144 ChannelRequester::shared_pointer
const &channelRequester,
148 cout <<
"ChannelProviderLocal::createChannel " <<
"channelName" << endl;
154 status = Status::error(
"pvDatabase was deleted");
156 PVRecordPtr pvRecord = pvdb->findRecord(channelName);
159 shared_from_this(),channelRequester,pvRecord));
160 pvRecord->addPVRecordClient(channel);
162 status = Status::error(
"pv not found");
165 channelRequester->channelCreated(status,channel);
170 string const & channelName,
171 ChannelRequester::shared_pointer
const &channelRequester,
173 string const &address)
175 if(!address.empty())
throw std::invalid_argument(
"address not allowed for local implementation");
176 return createChannel(channelName, channelRequester, priority);
epicsShareFunc ChannelProviderLocalPtr getChannelProviderLocal()
shared_ptr< T > static_pointer_cast(shared_ptr< U > const &r) BOOST_NOEXCEPT
virtual ~ChannelProviderLocal()
Destructor.
TODO only here because of the Lockable.
virtual string getFactoryName()
std::tr1::shared_ptr< PVStringArray > PVStringArrayPtr
std::tr1::shared_ptr< ChannelLocal > ChannelLocalPtr
std::tr1::shared_ptr< PVDatabase > PVDatabasePtr
virtual std::tr1::shared_ptr< ChannelProvider > getChannelProvider()
ChannelFind method.
#define POINTER_DEFINITIONS(clazz)
std::tr1::shared_ptr< ChannelProviderLocal > ChannelProviderLocalPtr
Channel for accessing a PVRecord.
The interface for a database of PVRecords.
virtual epics::pvAccess::ChannelFind::shared_pointer channelFind(std::string const &channelName, epics::pvAccess::ChannelFindRequester::shared_pointer const &channelFindRequester)
Returns either a null channelFind or a channelFind for records in the PVDatabase. ...
std::tr1::shared_ptr< PVRecord > PVRecordPtr
virtual ChannelProvider::shared_pointer sharedInstance()
ChannelProvider for PVDatabase.
shared_ptr< T > dynamic_pointer_cast(shared_ptr< U > const &r) BOOST_NOEXCEPT
virtual std::string getProviderName()
Returns the channel provider name.
virtual epics::pvAccess::ChannelFind::shared_pointer channelList(epics::pvAccess::ChannelListRequester::shared_pointer const &channelListRequester)
Calls method channelListRequester::channelListResult.
virtual epics::pvAccess::Channel::shared_pointer createChannel(std::string const &channelName, epics::pvAccess::ChannelRequester::shared_pointer const &channelRequester, short priority)
Create a channel for a record.
C++ and C descriptions for a thread.
virtual ChannelProvider::shared_pointer newInstance()