#ifndef SWIFTEN_IQRouter_H #define SWIFTEN_IQRouter_H #include #include #include "Swiften/Base/String.h" #include "Swiften/Elements/IQ.h" namespace Swift { class IQChannel; class IQHandler; class IQRouter { public: IQRouter(IQChannel* channel); ~IQRouter(); void addHandler(IQHandler* handler); void removeHandler(IQHandler* handler); void addHandler(boost::shared_ptr handler); void removeHandler(boost::shared_ptr handler); void sendIQ(boost::shared_ptr iq); String getNewIQID(); bool isAvailable(); private: void handleIQ(boost::shared_ptr iq); void processPendingRemoves(); private: IQChannel* channel_; std::vector< boost::shared_ptr > handlers_; std::vector< boost::shared_ptr > queuedRemoves_; bool queueRemoves_; }; } #endif