/* * Copyright (c) 2010 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #pragma once #include #include #include "Swiften/Elements/Presence.h" #include "Swiften/Base/boost_bsignals.h" namespace Swift { class StanzaChannel; class PresenceOracle { public: PresenceOracle(StanzaChannel* stanzaChannel); ~PresenceOracle(); Presence::ref getLastPresence(const JID&) const; Presence::ref getHighestPriorityPresence(const JID& bareJID) const; std::vector getAllPresence(const JID& bareJID) const; public: boost::signal onPresenceChange; private: void handleIncomingPresence(Presence::ref presence); void handleStanzaChannelAvailableChanged(bool); private: typedef std::map PresenceMap; typedef std::map PresencesMap; PresencesMap entries_; StanzaChannel* stanzaChannel_; }; }