summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Disco')
-rw-r--r--Swiften/Disco/DummyEntityCapsProvider.h29
-rw-r--r--Swiften/Disco/EntityCapsManager.h8
-rw-r--r--Swiften/Disco/EntityCapsProvider.cpp14
-rw-r--r--Swiften/Disco/EntityCapsProvider.h33
-rw-r--r--Swiften/Disco/SConscript1
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",