added stateChangeRequester; improve semantics for unlisten and channelStateChange

This commit is contained in:
mrkraimer
2016-06-24 15:03:19 -04:00
parent 5398d67e2a
commit fac07c7f3a
3 changed files with 60 additions and 3 deletions

View File

@@ -213,7 +213,6 @@ PvaClientChannel::~PvaClientChannel()
if(PvaClient::getDebug()) showCache();
}
void PvaClientChannel::channelCreated(const Status& status, Channel::shared_pointer const & channel)
{
if(PvaClient::getDebug()) {
@@ -252,6 +251,12 @@ void PvaClientChannel::channelStateChange(
<< " " << Channel::ConnectionStateNames[connectionState]
<< endl;
}
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;
@@ -293,6 +298,12 @@ Channel::shared_pointer PvaClientChannel::getChannel()
return channel;
}
void PvaClientChannel::setStateChangeRequester(
PvaClientChannelStateChangeRequesterPtr const & stateChangeRequester)
{
this->stateChangeRequester = stateChangeRequester;
}
void PvaClientChannel::connect(double timeout)
{
if(PvaClient::getDebug()) {