if channel is connected when channelCreated is called then don't wait for channelState change

This commit is contained in:
mrkraimer
2016-02-19 09:39:16 -05:00
parent 80073054dd
commit 56d96716f0

View File

@@ -173,6 +173,10 @@ void PvaClientChannel::channelCreated(const Status& status, Channel::shared_poin
if(isDestroyed) throw std::runtime_error("pvaClientChannel was destroyed");
if(status.isOK()) {
this->channel = channel;
if(channel->isConnected()) {
connectState = connected;
channelConnectStatus = Status::Ok;
}
return;
}
cout << "PvaClientChannel::channelCreated status " << status.getMessage() << " why??\n";
@@ -258,8 +262,7 @@ void PvaClientChannel::issueConnect()
if(connectState!=connectIdle) {
throw std::runtime_error("pvaClientChannel already connected");
}
channelRequester = ChannelRequester::shared_pointer(new ChannelRequesterImpl(this));
channelConnectStatus = Status(
Status::STATUSTYPE_ERROR,
getChannelName() + " createChannel failed");
@@ -269,6 +272,7 @@ void PvaClientChannel::issueConnect()
if(!provider) {
throw std::runtime_error(getChannelName() + " provider " + providerName + " not registered");
}
channelRequester = ChannelRequester::shared_pointer(new ChannelRequesterImpl(this));
channel = provider->createChannel(channelName,channelRequester,ChannelProvider::PRIORITY_DEFAULT);
if(!channel) {
throw std::runtime_error(getChannelName() + " channelCreate failed ");
@@ -278,6 +282,7 @@ void PvaClientChannel::issueConnect()
Status PvaClientChannel::waitConnect(double timeout)
{
if(isDestroyed) throw std::runtime_error("pvaClientChannel was destroyed");
if(channel->isConnected()) return Status::Ok;
waitForConnect.wait(timeout);
return channelConnectStatus;
}