diff options
Diffstat (limited to 'Swiften/Disco')
-rw-r--r-- | Swiften/Disco/DummyEntityCapsProvider.h | 29 | ||||
-rw-r--r-- | Swiften/Disco/EntityCapsManager.h | 8 | ||||
-rw-r--r-- | Swiften/Disco/EntityCapsProvider.cpp | 14 | ||||
-rw-r--r-- | Swiften/Disco/EntityCapsProvider.h | 33 | ||||
-rw-r--r-- | Swiften/Disco/SConscript | 1 |
5 files changed, 79 insertions, 6 deletions
diff --git a/Swiften/Disco/DummyEntityCapsProvider.h b/Swiften/Disco/DummyEntityCapsProvider.h new file mode 100644 index 0000000..68cef2f --- /dev/null +++ b/Swiften/Disco/DummyEntityCapsProvider.h @@ -0,0 +1,29 @@ +/* + * 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 <map> +#include <iostream> +#include "Swiften/Disco/EntityCapsProvider.h" + +namespace Swift { + class DummyEntityCapsProvider : public EntityCapsProvider { + public: + DummyEntityCapsProvider() { + } + + DiscoInfo::ref getCaps(const JID& jid) const { + std::map<JID, DiscoInfo::ref>::const_iterator i = caps.find(jid); + if (i != caps.end()) { + return i->second; + } + return DiscoInfo::ref(); + } + + std::map<JID, DiscoInfo::ref> caps; + }; +} diff --git a/Swiften/Disco/EntityCapsManager.h b/Swiften/Disco/EntityCapsManager.h index ecfcdea..f507a1d 100644 --- a/Swiften/Disco/EntityCapsManager.h +++ b/Swiften/Disco/EntityCapsManager.h @@ -12,6 +12,7 @@ #include "Swiften/Elements/Presence.h" #include "Swiften/Elements/DiscoInfo.h" #include "Swiften/Elements/ErrorPayload.h" +#include "Swiften/Disco/EntityCapsProvider.h" namespace Swift { class StanzaChannel; @@ -23,7 +24,7 @@ namespace Swift { * This information is provided in the form of service discovery * information. */ - class EntityCapsManager : public boost::bsignals::trackable { + class EntityCapsManager : public EntityCapsProvider, public boost::bsignals::trackable { public: EntityCapsManager(CapsProvider*, StanzaChannel*); @@ -32,11 +33,6 @@ namespace Swift { */ DiscoInfo::ref getCaps(const JID&) const; - /** - * Emitted when the capabilities of a JID changes. - */ - boost::signal<void (const JID&)> onCapsChanged; - private: void handlePresenceReceived(boost::shared_ptr<Presence>); void handleStanzaChannelAvailableChanged(bool); diff --git a/Swiften/Disco/EntityCapsProvider.cpp b/Swiften/Disco/EntityCapsProvider.cpp new file mode 100644 index 0000000..a337328 --- /dev/null +++ b/Swiften/Disco/EntityCapsProvider.cpp @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include "Swiften/Disco/EntityCapsProvider.h" + +namespace Swift { + +EntityCapsProvider::~EntityCapsProvider() { +} + +} diff --git a/Swiften/Disco/EntityCapsProvider.h b/Swiften/Disco/EntityCapsProvider.h new file mode 100644 index 0000000..07fa452 --- /dev/null +++ b/Swiften/Disco/EntityCapsProvider.h @@ -0,0 +1,33 @@ +/* + * 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 "Swiften/Base/boost_bsignals.h" +#include "Swiften/JID/JID.h" +#include "Swiften/Elements/DiscoInfo.h" + +namespace Swift { + /** + * This class provides information about capabilities of entities on the network. + * This information is provided in the form of service discovery + * information. + */ + class EntityCapsProvider { + public: + virtual ~EntityCapsProvider(); + + /** + * Returns the service discovery information of the given JID. + */ + virtual DiscoInfo::ref getCaps(const JID&) const = 0; + + /** + * Emitted when the capabilities of a JID changes. + */ + boost::signal<void (const JID&)> onCapsChanged; + }; +} diff --git a/Swiften/Disco/SConscript b/Swiften/Disco/SConscript index d07d490..3838d0e 100644 --- a/Swiften/Disco/SConscript +++ b/Swiften/Disco/SConscript @@ -4,6 +4,7 @@ objects = swiften_env.StaticObject([ "CapsInfoGenerator.cpp", "CapsManager.cpp", "EntityCapsManager.cpp", + "EntityCapsProvider.cpp", "CapsStorage.cpp", "CapsFileStorage.cpp", "DiscoInfoResponder.cpp", |