diff --git a/retroshare-gui/src/util/RsGxsUpdateBroadcast.cpp b/retroshare-gui/src/util/RsGxsUpdateBroadcast.cpp index 48c13d6db..0fdf63d65 100644 --- a/retroshare-gui/src/util/RsGxsUpdateBroadcast.cpp +++ b/retroshare-gui/src/util/RsGxsUpdateBroadcast.cpp @@ -1,83 +1,83 @@ -#include - -#include "RsGxsUpdateBroadcast.h" -#include "gui/notifyqt.h" - -#include - -//#define DEBUG_GXS_BROADCAST 1 - -// previously gxs allowed only one event consumer to poll for changes -// this required a single broadcast instance per service -// now the update notify works through rsnotify and notifyqt -// so the single instance per service is not really needed anymore - -QMap updateBroadcastMap; - -RsGxsUpdateBroadcast::RsGxsUpdateBroadcast(RsGxsIfaceHelper *ifaceImpl) : - QObject(NULL), mIfaceImpl(ifaceImpl) -{ - connect(NotifyQt::getInstance(), SIGNAL(gxsChange(RsGxsChanges)), this, SLOT(onChangesReceived(RsGxsChanges))); -} - -void RsGxsUpdateBroadcast::cleanup() -{ - QMap::iterator it; - for (it = updateBroadcastMap.begin(); it != updateBroadcastMap.end(); ++it) { - delete(it.value()); - } - - updateBroadcastMap.clear(); -} - -RsGxsUpdateBroadcast *RsGxsUpdateBroadcast::get(RsGxsIfaceHelper *ifaceImpl) -{ - QMap::iterator it = updateBroadcastMap.find(ifaceImpl); - if (it != updateBroadcastMap.end()) { - return it.value(); - } - - RsGxsUpdateBroadcast *updateBroadcast = new RsGxsUpdateBroadcast(ifaceImpl); - updateBroadcastMap.insert(ifaceImpl, updateBroadcast); - - return updateBroadcast; -} - -void RsGxsUpdateBroadcast::onChangesReceived(const RsGxsChanges& changes) -{ -#ifdef DEBUG_GXS_BROADCAST - std::cerr << "onChangesReceived()" << std::endl; - - { - std::cerr << "Received changes for service " << (void*)changes.mService << ", expecting service " << (void*)mIfaceImpl->getTokenService() << std::endl; - for(std::list::const_iterator it(changes.mGrps.begin());it!=changes.mGrps.end();++it) - std::cerr << "[GRP CHANGE] grp id: " << *it << std::endl; - for(std::list::const_iterator it(changes.mGrpsMeta.begin());it!=changes.mGrpsMeta.end();++it) - std::cerr << "[GRP CHANGE] grp meta: " << *it << std::endl; - for(std::map >::const_iterator it(changes.mMsgs.begin());it!=changes.mMsgs.end();++it) - for(uint32_t i=0;isecond.size();++i) - std::cerr << "[MSG CHANGE] grp id: " << it->first << ". Msg ID " << it->second[i] << std::endl; - for(std::map >::const_iterator it(changes.mMsgsMeta.begin());it!=changes.mMsgsMeta.end();++it) - for(uint32_t i=0;isecond.size();++i) - std::cerr << "[MSG CHANGE] grp id: " << it->first << ". Msg Meta " << it->second[i] << std::endl; - } -#endif - if(changes.mService != mIfaceImpl->getTokenService()) - { - // std::cerr << "(EE) Incorrect service. Dropping." << std::endl; - - return; - } - - if (!changes.mMsgs.empty() || !changes.mMsgsMeta.empty()) - { - emit msgsChanged(changes.mMsgs, changes.mMsgsMeta); - } - - if (!changes.mGrps.empty() || !changes.mGrpsMeta.empty()) - { - emit grpsChanged(changes.mGrps, changes.mGrpsMeta); - } - - emit changed(); -} +#include + +#include "RsGxsUpdateBroadcast.h" +#include "gui/notifyqt.h" + +#include + +//#define DEBUG_GXS_BROADCAST 1 + +// previously gxs allowed only one event consumer to poll for changes +// this required a single broadcast instance per service +// now the update notify works through rsnotify and notifyqt +// so the single instance per service is not really needed anymore + +QMap updateBroadcastMap; + +RsGxsUpdateBroadcast::RsGxsUpdateBroadcast(RsGxsIfaceHelper *ifaceImpl) : + QObject(NULL), mIfaceImpl(ifaceImpl) +{ + connect(NotifyQt::getInstance(), SIGNAL(gxsChange(RsGxsChanges)), this, SLOT(onChangesReceived(RsGxsChanges))); +} + +void RsGxsUpdateBroadcast::cleanup() +{ + QMap::iterator it; + for (it = updateBroadcastMap.begin(); it != updateBroadcastMap.end(); ++it) { + delete(it.value()); + } + + updateBroadcastMap.clear(); +} + +RsGxsUpdateBroadcast *RsGxsUpdateBroadcast::get(RsGxsIfaceHelper *ifaceImpl) +{ + QMap::iterator it = updateBroadcastMap.find(ifaceImpl); + if (it != updateBroadcastMap.end()) { + return it.value(); + } + + RsGxsUpdateBroadcast *updateBroadcast = new RsGxsUpdateBroadcast(ifaceImpl); + updateBroadcastMap.insert(ifaceImpl, updateBroadcast); + + return updateBroadcast; +} + +void RsGxsUpdateBroadcast::onChangesReceived(const RsGxsChanges& changes) +{ +#ifdef DEBUG_GXS_BROADCAST + std::cerr << "onChangesReceived()" << std::endl; + + { + std::cerr << "Received changes for service " << (void*)changes.mService << ", expecting service " << (void*)mIfaceImpl->getTokenService() << std::endl; + for(std::list::const_iterator it(changes.mGrps.begin());it!=changes.mGrps.end();++it) + std::cerr << "[GRP CHANGE] grp id: " << *it << std::endl; + for(std::list::const_iterator it(changes.mGrpsMeta.begin());it!=changes.mGrpsMeta.end();++it) + std::cerr << "[GRP CHANGE] grp meta: " << *it << std::endl; + for(std::map >::const_iterator it(changes.mMsgs.begin());it!=changes.mMsgs.end();++it) + for(uint32_t i=0;isecond.size();++i) + std::cerr << "[MSG CHANGE] grp id: " << it->first << ". Msg ID " << it->second[i] << std::endl; + for(std::map >::const_iterator it(changes.mMsgsMeta.begin());it!=changes.mMsgsMeta.end();++it) + for(uint32_t i=0;isecond.size();++i) + std::cerr << "[MSG CHANGE] grp id: " << it->first << ". Msg Meta " << it->second[i] << std::endl; + } +#endif + if(changes.mService != mIfaceImpl->getTokenService()) + { + // std::cerr << "(EE) Incorrect service. Dropping." << std::endl; + + return; + } + + if (!changes.mMsgs.empty() || !changes.mMsgsMeta.empty()) + { + emit msgsChanged(changes.mMsgs, changes.mMsgsMeta); + } + + if (!changes.mGrps.empty() || !changes.mGrpsMeta.empty()) + { + emit grpsChanged(changes.mGrps, changes.mGrpsMeta); + } + + emit changed(); +}