From e071e0f9e319fdd63e5fe9856322ceeffdf46a9c Mon Sep 17 00:00:00 2001 From: mrkraimer Date: Wed, 14 Jun 2017 06:14:47 -0400 Subject: [PATCH] PvaClientChannel::channelStateChange set state before calling stateChangeRequester --- src/pvaClientChannel.cpp | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/pvaClientChannel.cpp b/src/pvaClientChannel.cpp index b3f4f31..c73bbec 100644 --- a/src/pvaClientChannel.cpp +++ b/src/pvaClientChannel.cpp @@ -246,25 +246,26 @@ void PvaClientChannel::channelStateChange( << " " << Channel::ConnectionStateNames[connectionState] << endl; } + + bool waitingForConnect = false; + if(connectState==connectActive) waitingForConnect = true; + if(connectionState!=Channel::CONNECTED) { + string mess(channelName + + " connection state " + Channel::ConnectionStateNames[connectionState]); + message(mess,errorMessage); + connectState = notConnected; + } else { + connectState = connected; + } + if(waitingForConnect) { + Lock xx(mutex); + waitForConnect.signal(); + } PvaClientChannelStateChangeRequesterPtr req(stateChangeRequester.lock()); if(req) { bool value = (connectionState==Channel::CONNECTED ? true : false); req->channelStateChange(shared_from_this(),value); } - - Lock xx(mutex); - bool waitingForConnect = false; - if(connectState==connectActive) waitingForConnect = true; - if(connectionState!=Channel::CONNECTED) { - string mess(channelName + - " connection state " + Channel::ConnectionStateNames[connectionState]); - message(mess,errorMessage); - connectState = notConnected; - return; - } else { - connectState = connected; - } - if(waitingForConnect) waitForConnect.signal(); } string PvaClientChannel::getRequesterName()