diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-10-23 21:08:19 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-11-03 12:17:40 (GMT) |
commit | 9d9fb66aefef85a1c5ad432391014d15011747d1 (patch) | |
tree | 55b1ebe7dcb0108008a28ebf8fee773b27e60547 /Swiften/Disco/ClientDiscoManager.cpp | |
parent | d509598b0f0edf5e103caedbab8662edc834445e (diff) | |
download | swift-contrib-9d9fb66aefef85a1c5ad432391014d15011747d1.zip swift-contrib-9d9fb66aefef85a1c5ad432391014d15011747d1.tar.bz2 |
Added ClientDiscoManager.
Diffstat (limited to 'Swiften/Disco/ClientDiscoManager.cpp')
-rw-r--r-- | Swiften/Disco/ClientDiscoManager.cpp | 39 |
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); +} + +} |