diff options
Diffstat (limited to 'Swiften/Disco/JIDDiscoInfoResponder.cpp')
-rw-r--r-- | Swiften/Disco/JIDDiscoInfoResponder.cpp | 63 |
1 files changed, 32 insertions, 31 deletions
diff --git a/Swiften/Disco/JIDDiscoInfoResponder.cpp b/Swiften/Disco/JIDDiscoInfoResponder.cpp index 6a632cf..8802bce 100644 --- a/Swiften/Disco/JIDDiscoInfoResponder.cpp +++ b/Swiften/Disco/JIDDiscoInfoResponder.cpp @@ -1,14 +1,15 @@ /* - * Copyright (c) 2010 Isode Limited. + * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ -#include <boost/smart_ptr/make_shared.hpp> - #include <Swiften/Disco/JIDDiscoInfoResponder.h> -#include <Swiften/Queries/IQRouter.h> + +#include <memory> + #include <Swiften/Elements/DiscoInfo.h> +#include <Swiften/Queries/IQRouter.h> namespace Swift { @@ -16,41 +17,41 @@ JIDDiscoInfoResponder::JIDDiscoInfoResponder(IQRouter* router) : GetResponder<Di } void JIDDiscoInfoResponder::clearDiscoInfo(const JID& jid) { - info.erase(jid); + info.erase(jid); } void JIDDiscoInfoResponder::setDiscoInfo(const JID& jid, const DiscoInfo& discoInfo) { - JIDDiscoInfoMap::iterator i = info.insert(std::make_pair(jid, JIDDiscoInfo())).first; - i->second.discoInfo = discoInfo; + JIDDiscoInfoMap::iterator i = info.insert(std::make_pair(jid, JIDDiscoInfo())).first; + i->second.discoInfo = discoInfo; } void JIDDiscoInfoResponder::setDiscoInfo(const JID& jid, const std::string& node, const DiscoInfo& discoInfo) { - JIDDiscoInfoMap::iterator i = info.insert(std::make_pair(jid, JIDDiscoInfo())).first; - DiscoInfo newInfo(discoInfo); - newInfo.setNode(node); - i->second.nodeDiscoInfo[node] = newInfo; + JIDDiscoInfoMap::iterator i = info.insert(std::make_pair(jid, JIDDiscoInfo())).first; + DiscoInfo newInfo(discoInfo); + newInfo.setNode(node); + i->second.nodeDiscoInfo[node] = newInfo; } -bool JIDDiscoInfoResponder::handleGetRequest(const JID& from, const JID& to, const std::string& id, boost::shared_ptr<DiscoInfo> discoInfo) { - JIDDiscoInfoMap::const_iterator i = info.find(to); - if (i != info.end()) { - if (discoInfo->getNode().empty()) { - sendResponse(from, to, id, boost::make_shared<DiscoInfo>(i->second.discoInfo)); - } - else { - std::map<std::string,DiscoInfo>::const_iterator j = i->second.nodeDiscoInfo.find(discoInfo->getNode()); - if (j != i->second.nodeDiscoInfo.end()) { - sendResponse(from, to, id, boost::make_shared<DiscoInfo>(j->second)); - } - else { - sendError(from, to, id, ErrorPayload::ItemNotFound, ErrorPayload::Cancel); - } - } - } - else { - sendError(from, to, id, ErrorPayload::ItemNotFound, ErrorPayload::Cancel); - } - return true; +bool JIDDiscoInfoResponder::handleGetRequest(const JID& from, const JID& to, const std::string& id, std::shared_ptr<DiscoInfo> discoInfo) { + JIDDiscoInfoMap::const_iterator i = info.find(to); + if (i != info.end()) { + if (discoInfo->getNode().empty()) { + sendResponse(from, to, id, std::make_shared<DiscoInfo>(i->second.discoInfo)); + } + else { + std::map<std::string,DiscoInfo>::const_iterator j = i->second.nodeDiscoInfo.find(discoInfo->getNode()); + if (j != i->second.nodeDiscoInfo.end()) { + sendResponse(from, to, id, std::make_shared<DiscoInfo>(j->second)); + } + else { + sendError(from, to, id, ErrorPayload::ItemNotFound, ErrorPayload::Cancel); + } + } + } + else { + sendError(from, to, id, ErrorPayload::ItemNotFound, ErrorPayload::Cancel); + } + return true; } } |