Example #1
0
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
void MsgMgr::removeCommNodeFromChannel(ChannelId _channelId, CommNode * _commNode)
{
    if(_channelId != InvalidChannelId)
    {
        {
            NWAutoCritSec critSec(mCritSecAddRemoveCommNodes);

            MsgChannel * channel = mChannelList->getChannel(_channelId);
            MsgChannel * commNodeChannel = _commNode->getLocalChannel();

            if(channel)
            {
                channel->stopListeningTo(commNodeChannel);
                commNodeChannel->stopListeningTo(channel);

                if(channel->getNumListeners() < 1 && channel->getNumListened() < 1)
                {
                    unregChannelName(getChannelName(_channelId));
                    mChannelList->removeChannel(_channelId);
                }
            }
        }
    }
}