summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Disco/ClientDiscoManager.cpp')
-rw-r--r--Swiften/Disco/ClientDiscoManager.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/Swiften/Disco/ClientDiscoManager.cpp b/Swiften/Disco/ClientDiscoManager.cpp
new file mode 100644
index 0000000..6753df2
--- /dev/null
+++ b/Swiften/Disco/ClientDiscoManager.cpp
@@ -0,0 +1,39 @@
+/*
+ * 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/ClientDiscoManager.h"
+
+#include "Swiften/Disco/DiscoInfoResponder.h"
+#include "Swiften/Disco/CapsInfoGenerator.h"
+#include "Swiften/Presence/PayloadAddingPresenceSender.h"
+
+namespace Swift {
+
+ClientDiscoManager::ClientDiscoManager(IQRouter* iqRouter, PresenceSender* presenceSender) {
+ discoInfoResponder = new DiscoInfoResponder(iqRouter);
+ discoInfoResponder->start();
+ this->presenceSender = new PayloadAddingPresenceSender(presenceSender);
+}
+
+ClientDiscoManager::~ClientDiscoManager() {
+ delete presenceSender;
+ discoInfoResponder->stop();
+ delete discoInfoResponder;
+}
+
+void ClientDiscoManager::setCapsNode(const String& node) {
+ capsNode = node;
+}
+
+void ClientDiscoManager::setDiscoInfo(const DiscoInfo& discoInfo) {
+ capsInfo = CapsInfo::ref(new CapsInfo(CapsInfoGenerator(capsNode).generateCapsInfo(discoInfo)));
+ discoInfoResponder->clearDiscoInfo();
+ discoInfoResponder->setDiscoInfo(discoInfo);
+ discoInfoResponder->setDiscoInfo(capsInfo->getNode() + "#" + capsInfo->getVersion(), discoInfo);
+ presenceSender->setPayload(capsInfo);
+}
+
+}