diff options
author | Remko Tronçon <git@el-tramo.be> | 2009-06-16 20:41:48 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2009-06-17 16:33:34 (GMT) |
commit | f2e3bfbe2ed1b8f35aa958041ee766f9d8ddf31e (patch) | |
tree | a6d28ee7ef03dd4538154c29b988e33b01ceb6ed /Swiften/Queries/IQRouter.h | |
parent | f1c690a5352ee77282bbbd145a3fe0137aceb160 (diff) | |
download | swift-contrib-f2e3bfbe2ed1b8f35aa958041ee766f9d8ddf31e.zip swift-contrib-f2e3bfbe2ed1b8f35aa958041ee766f9d8ddf31e.tar.bz2 |
Delay IQHandler removal in IQRouter during IQ handling.
Diffstat (limited to 'Swiften/Queries/IQRouter.h')
-rw-r--r-- | Swiften/Queries/IQRouter.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/Swiften/Queries/IQRouter.h b/Swiften/Queries/IQRouter.h index ea80bf5..6de2ff9 100644 --- a/Swiften/Queries/IQRouter.h +++ b/Swiften/Queries/IQRouter.h @@ -14,10 +14,11 @@ namespace Swift { class IQRouter { public: IQRouter(IQChannel* channel); + ~IQRouter(); void addHandler(IQHandler* handler); - void addHandler(boost::shared_ptr<IQHandler> handler); void removeHandler(IQHandler* handler); + void addHandler(boost::shared_ptr<IQHandler> handler); void removeHandler(boost::shared_ptr<IQHandler> handler); void sendIQ(boost::shared_ptr<IQ> iq); @@ -25,10 +26,13 @@ namespace Swift { private: void handleIQ(boost::shared_ptr<IQ> iq); + void processPendingRemoves(); private: IQChannel* channel_; std::vector< boost::shared_ptr<IQHandler> > handlers_; + std::vector< boost::shared_ptr<IQHandler> > queuedRemoves_; + bool queueRemoves_; }; } |