00001
00002
00003
00004
00005
00006
00007 #pragma once
00008
00009 #include <map>
00010
00011 #include <Swiften/Base/API.h>
00012 #include <Swiften/Base/boost_bsignals.h>
00013 #include <Swiften/Elements/Presence.h>
00014 #include <Swiften/Elements/DiscoInfo.h>
00015 #include <Swiften/Elements/ErrorPayload.h>
00016 #include <Swiften/Disco/EntityCapsProvider.h>
00017
00018 namespace Swift {
00019 class StanzaChannel;
00020 class CapsProvider;
00021
00028 class SWIFTEN_API EntityCapsManager : public EntityCapsProvider, public boost::bsignals::trackable {
00029 public:
00030 EntityCapsManager(CapsProvider*, StanzaChannel*);
00031
00035 DiscoInfo::ref getCaps(const JID&) const;
00036
00037 private:
00038 void handlePresenceReceived(boost::shared_ptr<Presence>);
00039 void handleStanzaChannelAvailableChanged(bool);
00040 void handleCapsAvailable(const std::string&);
00041
00042 private:
00043 CapsProvider* capsProvider;
00044 std::map<JID, std::string> caps;
00045 };
00046 }