use the new ChannelProviderRegistry methods

This commit is contained in:
mrkraimer
2017-06-04 07:58:00 -04:00
parent 6762c54e60
commit 619bacc0f4
3 changed files with 17 additions and 7 deletions

View File

@@ -37,7 +37,6 @@
#include <shareLib.h>
namespace epics { namespace pvaClient {
class PvaClient;
@@ -183,6 +182,7 @@ private:
bool pvaStarted;
bool caStarted;
epics::pvData::Mutex mutex;
epics::pvAccess::ChannelProviderRegistry::shared_pointer channelRegistry;
};
// folowing private to PvaClientChannel

View File

@@ -104,22 +104,31 @@ PvaClientPtr PvaClient::get(std::string const & providerNames)
PvaClient::PvaClient(std::string const & providerNames)
: pvaClientChannelCache(new PvaClientChannelCache()),
pvaStarted(false),
caStarted(false)
caStarted(false),
channelRegistry(ChannelProviderRegistry::getChannelProviderRegistry())
{
stringstream ss(providerNames);
string providerName;
if(PvaClient::debug) {
cout<< "PvaClient::PvaClient()\n";
}
while (getline(ss, providerName, ' '))
{
ChannelProviderRegistry::shared_pointer registry(getChannelProviderRegistry());
if(providerName=="pva") {
if(PvaClient::debug) {
cout<< "calling ClientFactory::start()\n";
}
ClientFactory::start();
pvaStarted = true;
} else if(providerName=="ca") {
if(PvaClient::debug) {
cout<< "calling CAClientFactory::start()\n";
}
CAClientFactory::start();
caStarted = true;
} else {
if(!registry->getProvider(providerName)) {
cerr << "PvaClient::get provider " << providerName << " not known" << endl;
} else {
if(!channelRegistry->getProvider(providerName)) {
cerr << "PvaClient::get provider " << providerName << " not known" << endl;
}
}
}
@@ -141,6 +150,7 @@ PvaClient::~PvaClient() {
CAClientFactory::stop();
if(PvaClient::debug) cout<< "after calling CAClientFactory::stop()\n";
}
channelRegistry.reset();
}
string PvaClient:: getRequesterName()

View File

@@ -331,7 +331,7 @@ void PvaClientChannel::issueConnect()
}
connectState = connectActive;
}
ChannelProviderRegistry::shared_pointer reg = getChannelProviderRegistry();
ChannelProviderRegistry::shared_pointer reg = ChannelProviderRegistry::getChannelProviderRegistry();
ChannelProvider::shared_pointer provider = reg->getProvider(providerName);
if(!provider) {
throw std::runtime_error(channelName + " provider " + providerName + " not registered");