void QCopChannel::detach(const QString& ch, QCopX11Client *cl) { if (!qcopServerMap) return; QCopServerMap::Iterator it = qcopServerMap->find(ch); if (it != qcopServerMap->end()) { it.value().removeAll(cl); if (it.value().isEmpty()) { // If this was the last client in the channel, announce the channel as dead emit qcopServer->removedChannel(it.key()); qcopServerMap->erase(it); } } if (qcopServerRegexpList && containsWildcards(ch)) { // Remove references to a wildcarded channel. QCopServerRegexpList::Iterator it = qcopServerRegexpList->begin(); while(it != qcopServerRegexpList->end()) { if ((*it).client == cl && (*it).channel == ch) it = qcopServerRegexpList->erase(it); else ++it; } } }
void QCopChannel::detach(QWSClient *cl) { if (!qcopServerMap) return; QCopServerMap::Iterator it = qcopServerMap->begin(); for (; it != qcopServerMap->end(); ++it) { if (it.value().contains(cl)) { it.value().removeAll(cl); // If this was the last client in the channel, announce the channel as dead. if (it.value().count() == 0) { QWSServerSignalBridge* qwsBridge = new QWSServerSignalBridge(); connect(qwsBridge, SIGNAL(removedChannel(QString)), qwsServer, SIGNAL(removedChannel(QString))); qwsBridge->emitRemovedChannel(it.key()); delete qwsBridge; } } } if (!qcopServerRegexpList) return; QCopServerRegexpList::Iterator it2 = qcopServerRegexpList->begin(); while(it2 != qcopServerRegexpList->end()) { if ((*it2).client == cl) it2 = qcopServerRegexpList->erase(it2); else ++it2; } }
void QCopChannel::detach(QCopX11Client *cl) { if (!qcopServerMap) return; QCopServerMap::Iterator it = qcopServerMap->begin(); for (; it != qcopServerMap->end(); it++) { if (it.value().contains(cl)) { it.value().removeAll(cl); // If this was the last client in the channel, announce the channel as dead. if (it.value().count() == 0) { emit qcopServer->removedChannel(it.key()); } } } if (!qcopServerRegexpList) return; QCopServerRegexpList::Iterator it2 = qcopServerRegexpList->begin(); while(it2 != qcopServerRegexpList->end()) { if ((*it2).client == cl) it2 = qcopServerRegexpList->erase(it2); else ++it2; } }
void QCopChannel::detach( const QWSClient *cl ) { if ( !qcopServerMap ) return; QCopServerMap::Iterator it = qcopServerMap->begin(); for ( ; it != qcopServerMap->end(); it++ ) { if (it.data().containsRef(cl)) { it.data().removeRef( cl ); // If this was the last client in the channel, announce the channel as dead. if (it.data().count() == 0) { QWSServerSignalBridge* qwsBridge = new QWSServerSignalBridge(); connect(qwsBridge, SIGNAL(removedChannel(const QString&)), qwsServer, SIGNAL(removedChannel(const QString&))); qwsBridge->emitRemovedChannel(it.key()); delete qwsBridge; } } } }