diff options
author | Remko Tronçon <git@el-tramo.be> | 2011-06-18 10:34:41 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2011-06-18 10:41:11 (GMT) |
commit | 362b2d147e4050e997104c24b2ed2e818adab5ed (patch) | |
tree | 63340cf49072e2cc0d9d876859249eb22fd540d3 /Swiften/Server/ServerStanzaRouter.cpp | |
parent | 0328d98d29b383ecfcb5ffb66df0a9b7b4d85654 (diff) | |
parent | 7af8a078c57d94ff63eb81f26de2f55eca6b5c00 (diff) | |
download | swift-contrib-362b2d147e4050e997104c24b2ed2e818adab5ed.zip swift-contrib-362b2d147e4050e997104c24b2ed2e818adab5ed.tar.bz2 |
Merge branch 'swift-1.x'
* swift-1.x:
Moving unused server code out of Swiften into Limber.
Conflicts:
Limber/Server/ServerFromClientSession.cpp
Limber/Server/ServerSession.cpp
Limber/Server/ServerStanzaRouter.cpp
Limber/Server/SimpleUserRegistry.cpp
Limber/Server/SimpleUserRegistry.h
Limber/Server/UnitTest/ServerStanzaRouterTest.cpp
Limber/Server/UserRegistry.cpp
Limber/main.cpp
Slimber/Server.cpp
Slimber/Server.h
Diffstat (limited to 'Swiften/Server/ServerStanzaRouter.cpp')
-rw-r--r-- | Swiften/Server/ServerStanzaRouter.cpp | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/Swiften/Server/ServerStanzaRouter.cpp b/Swiften/Server/ServerStanzaRouter.cpp deleted file mode 100644 index 1725359..0000000 --- a/Swiften/Server/ServerStanzaRouter.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2010 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. - */ - -#include <Swiften/Server/ServerStanzaRouter.h> -#include <Swiften/Server/ServerSession.h> -#include <Swiften/Base/Algorithm.h> - -#include <cassert> -#include <algorithm> - -namespace Swift { - -namespace { - struct PriorityLessThan { - bool operator()(const ServerSession* s1, const ServerSession* s2) const { - return s1->getPriority() < s2->getPriority(); - } - }; - - struct HasJID { - HasJID(const JID& jid) : jid(jid) {} - bool operator()(const ServerSession* session) const { - return session->getJID().equals(jid, JID::WithResource); - } - JID jid; - }; -} - -ServerStanzaRouter::ServerStanzaRouter() { -} - -bool ServerStanzaRouter::routeStanza(boost::shared_ptr<Stanza> stanza) { - JID to = stanza->getTo(); - assert(to.isValid()); - - // For a full JID, first try to route to a session with the full JID - if (!to.isBare()) { - std::vector<ServerSession*>::const_iterator i = std::find_if(clientSessions_.begin(), clientSessions_.end(), HasJID(to)); - if (i != clientSessions_.end()) { - (*i)->sendStanza(stanza); - return true; - } - } - - // Look for candidate sessions - to = to.toBare(); - std::vector<ServerSession*> candidateSessions; - for (std::vector<ServerSession*>::const_iterator i = clientSessions_.begin(); i != clientSessions_.end(); ++i) { - if ((*i)->getJID().equals(to, JID::WithoutResource) && (*i)->getPriority() >= 0) { - candidateSessions.push_back(*i); - } - } - if (candidateSessions.empty()) { - return false; - } - - // Find the session with the highest priority - std::vector<ServerSession*>::const_iterator i = std::max_element(clientSessions_.begin(), clientSessions_.end(), PriorityLessThan()); - (*i)->sendStanza(stanza); - return true; -} - -void ServerStanzaRouter::addClientSession(ServerSession* clientSession) { - clientSessions_.push_back(clientSession); -} - -void ServerStanzaRouter::removeClientSession(ServerSession* clientSession) { - erase(clientSessions_, clientSession); -} - -} |