diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-03-28 13:40:14 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-03-28 13:40:43 (GMT) |
commit | b61486fefe602e0d18fa5279021006f87b965307 (patch) | |
tree | 437585cbef1179e1ec31f79789591d5610200c29 | |
parent | dae28dd45e43fc6e6ef2ec4c6c65d5d736ed86f8 (diff) | |
download | swift-contrib-b61486fefe602e0d18fa5279021006f87b965307.zip swift-contrib-b61486fefe602e0d18fa5279021006f87b965307.tar.bz2 |
Moved Swiften to a separate module.
667 files changed, 3 insertions, 27283 deletions
diff --git a/.gitmodules b/.gitmodules index 60dfb9e..a61dcea 100644 --- a/.gitmodules +++ b/.gitmodules @@ -31,3 +31,6 @@ [submodule "BuildTools"] path = BuildTools url = swift@swift.im:git/buildtools-module.git +[submodule "Swiften"] + path = Swiften + url = swift@swift.im:git/swiften-module.git diff --git a/Swiften b/Swiften new file mode 160000 +Subproject 8213ba16d0043d2461f4b031c881d61dda5a38c diff --git a/Swiften/Application/Application.cpp b/Swiften/Application/Application.cpp deleted file mode 100644 index be77e95..0000000 --- a/Swiften/Application/Application.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include "Swiften/Application/Application.h" - -#include <boost/filesystem.hpp> -#include <stdlib.h> - -#include "Swiften/Application/ApplicationMessageDisplay.h" - -namespace Swift { - -Application::Application(const String& name) : name_(name) { -} - -Application::~Application() { -} - -boost::filesystem::path Application::getSettingsFileName() const { - return getSettingsDir() / "settings"; -} - -boost::filesystem::path Application::getAvatarDir() const { - return getSettingsDir() / "avatars"; -} - -boost::filesystem::path Application::getProfileDir(const String& profile) const { - boost::filesystem::path result(getHomeDir() / profile.getUTF8String()); - boost::filesystem::create_directory(result); - return result; -} - -} diff --git a/Swiften/Application/Application.h b/Swiften/Application/Application.h deleted file mode 100644 index 20d686c..0000000 --- a/Swiften/Application/Application.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef SWIFTEN_Application_H -#define SWIFTEN_Application_H - -#include <boost/filesystem.hpp> - -#include "Swiften/Base/String.h" - -namespace Swift { - class ApplicationMessageDisplay; - - class Application { - public: - Application(const String& name); - virtual ~Application(); - - boost::filesystem::path getSettingsFileName() const; - boost::filesystem::path getAvatarDir() const; - virtual boost::filesystem::path getHomeDir() const = 0; - virtual boost::filesystem::path getSettingsDir() const = 0; - boost::filesystem::path getProfileDir(const String& profile) const; - - const String& getName() const { - return name_; - } - - virtual ApplicationMessageDisplay* getApplicationMessageDisplay() = 0; - - private: - String name_; - }; -} - -#endif diff --git a/Swiften/Application/ApplicationMessageDisplay.cpp b/Swiften/Application/ApplicationMessageDisplay.cpp deleted file mode 100644 index 48db37d..0000000 --- a/Swiften/Application/ApplicationMessageDisplay.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Application/ApplicationMessageDisplay.h" - -namespace Swift { - -ApplicationMessageDisplay::~ApplicationMessageDisplay() { -} - -} diff --git a/Swiften/Application/ApplicationMessageDisplay.h b/Swiften/Application/ApplicationMessageDisplay.h deleted file mode 100644 index df7f0cb..0000000 --- a/Swiften/Application/ApplicationMessageDisplay.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef SWIFTEN_ApplicationMessageDisplay_H -#define SWIFTEN_ApplicationMessageDisplay_H - -namespace Swift { - class String; - - class ApplicationMessageDisplay { - public: - virtual ~ApplicationMessageDisplay(); - - virtual void setMessage(const String& message) = 0; - }; -} - -#endif diff --git a/Swiften/Application/MacOSX/MacOSXApplication.cpp b/Swiften/Application/MacOSX/MacOSXApplication.cpp deleted file mode 100644 index 79d7586..0000000 --- a/Swiften/Application/MacOSX/MacOSXApplication.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "Swiften/Application/MacOSX/MacOSXApplication.h" - -namespace Swift { - -MacOSXApplication::MacOSXApplication(const String& name) : Application(name) { -} - -ApplicationMessageDisplay* MacOSXApplication::getApplicationMessageDisplay() { - return &messageDisplay_; -} - -boost::filesystem::path MacOSXApplication::getSettingsDir() const { - boost::filesystem::path result(getHomeDir() / "Library/Application Support" / getName().getUTF8String()); - boost::filesystem::create_directory(result); - return result; -} - -boost::filesystem::path MacOSXApplication::getHomeDir() const { - return boost::filesystem::path(getenv("HOME")); -} - -} diff --git a/Swiften/Application/MacOSX/MacOSXApplication.h b/Swiften/Application/MacOSX/MacOSXApplication.h deleted file mode 100644 index cd5e69f..0000000 --- a/Swiften/Application/MacOSX/MacOSXApplication.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef SWIFTEN_MacOSXApplication_H -#define SWIFTEN_MacOSXApplication_H - -#include "Swiften/Application/Application.h" -#include "Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.h" -#include "Swiften/Application/MacOSX/MacOSXApplicationInitializer.h" - -namespace Swift { - class ApplicationMessageDisplay; - - class MacOSXApplication : public Application { - public: - MacOSXApplication(const String& name); - - virtual boost::filesystem::path getHomeDir() const; - virtual ApplicationMessageDisplay* getApplicationMessageDisplay(); - boost::filesystem::path getSettingsDir() const; - - private: - MacOSXApplicationInitializer initializer_; - MacOSXApplicationMessageDisplay messageDisplay_; - }; -} - -#endif diff --git a/Swiften/Application/MacOSX/MacOSXApplicationInitializer.h b/Swiften/Application/MacOSX/MacOSXApplicationInitializer.h deleted file mode 100644 index db551eb..0000000 --- a/Swiften/Application/MacOSX/MacOSXApplicationInitializer.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SWIFTEN_MacOSXApplicationInitializer_H -#define SWIFTEN_MacOSXApplicationInitializer_H - -namespace Swift { - class MacOSXApplicationInitializer { - public: - MacOSXApplicationInitializer(); - ~MacOSXApplicationInitializer(); - - private: - class Private; - Private* d; - }; -} - -#endif diff --git a/Swiften/Application/MacOSX/MacOSXApplicationInitializer.mm b/Swiften/Application/MacOSX/MacOSXApplicationInitializer.mm deleted file mode 100644 index e401697..0000000 --- a/Swiften/Application/MacOSX/MacOSXApplicationInitializer.mm +++ /dev/null @@ -1,24 +0,0 @@ -#include "Swiften/Application/MacOSX/MacOSXApplicationInitializer.h" - -#include <AppKit/AppKit.h> -#include <Cocoa/Cocoa.h> - -namespace Swift { - -class MacOSXApplicationInitializer::Private { - public: - NSAutoreleasePool* autoReleasePool_; -}; - -MacOSXApplicationInitializer::MacOSXApplicationInitializer() { - d = new MacOSXApplicationInitializer::Private(); - NSApplicationLoad(); - d->autoReleasePool_ = [[NSAutoreleasePool alloc] init]; -} - -MacOSXApplicationInitializer::~MacOSXApplicationInitializer() { - [d->autoReleasePool_ release]; - delete d; -} - -} diff --git a/Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.h b/Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.h deleted file mode 100644 index 98af1fa..0000000 --- a/Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef SWIFTEN_MacOSXApplicationMessageDisplay_H -#define SWIFTEN_MacOSXApplicationMessageDisplay_H - -#include "Swiften/Application/ApplicationMessageDisplay.h" - -namespace Swift { - class String; - - class MacOSXApplicationMessageDisplay : public ApplicationMessageDisplay { - public: - MacOSXApplicationMessageDisplay(); - - void setMessage(const String& label); - }; -} - -#endif diff --git a/Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.mm b/Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.mm deleted file mode 100644 index c10c707..0000000 --- a/Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.mm +++ /dev/null @@ -1,20 +0,0 @@ -#include "Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.h" - -#include <AppKit/AppKit.h> -#include <Cocoa/Cocoa.h> - -#include "Swiften/Base/String.h" - -namespace Swift { - -MacOSXApplicationMessageDisplay::MacOSXApplicationMessageDisplay() { -} - -void MacOSXApplicationMessageDisplay::setMessage(const String& label) { - NSString *labelString = [[NSString alloc] initWithUTF8String: label.getUTF8Data()]; - [[NSApp dockTile] setBadgeLabel: labelString]; - [labelString release]; - [NSApp requestUserAttention: NSInformationalRequest]; -} - -} diff --git a/Swiften/Application/NullApplicationMessageDisplay.h b/Swiften/Application/NullApplicationMessageDisplay.h deleted file mode 100644 index 03e0b42..0000000 --- a/Swiften/Application/NullApplicationMessageDisplay.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SWIFTEN_NullApplicationMessageDisplay_H -#define SWIFTEN_NullApplicationMessageDisplay_H - -#include "Swiften/Application/ApplicationMessageDisplay.h" - -namespace Swift { - class NullApplicationMessageDisplay : public ApplicationMessageDisplay { - public: - NullApplicationMessageDisplay() {} - - virtual void setMessage(const String&) { - } - }; -} - -#endif diff --git a/Swiften/Application/Platform/PlatformApplication.h b/Swiften/Application/Platform/PlatformApplication.h deleted file mode 100644 index 749bce4..0000000 --- a/Swiften/Application/Platform/PlatformApplication.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef SWIFTEN_PlatformApplication_H -#define SWIFTEN_PlatformApplication_H - -#include "Swiften/Base/Platform.h" - - -#if defined(SWIFTEN_PLATFORM_MACOSX) -#include "Swiften/Application/MacOSX/MacOSXApplication.h" -namespace Swift { - typedef MacOSXApplication PlatformApplication; -} -#elif defined(SWIFTEN_PLATFORM_WIN32) -#include "Swiften/Application/Windows/WindowsApplication.h" -namespace Swift { - typedef WindowsApplication PlatformApplication; -} -#else -#include "Swiften/Application/Unix/UnixApplication.h" -namespace Swift { - typedef UnixApplication PlatformApplication; -} -#endif - -#endif diff --git a/Swiften/Application/SConscript b/Swiften/Application/SConscript deleted file mode 100644 index 78b3a34..0000000 --- a/Swiften/Application/SConscript +++ /dev/null @@ -1,16 +0,0 @@ -Import("swiften_env") - -sources = [ - "Application.cpp", - "ApplicationMessageDisplay.cpp", - ] - -if swiften_env["PLATFORM"] == "darwin" and swiften_env["target"] == "native" : - sources += [ - "MacOSX/MacOSXApplication.cpp", - "MacOSX/MacOSXApplicationMessageDisplay.mm", - "MacOSX/MacOSXApplicationInitializer.mm", - ] - -objects = swiften_env.StaticObject(sources) -swiften_env.Append(SWIFTEN_OBJECTS = [objects]) diff --git a/Swiften/Application/UnitTest/ApplicationTest.cpp b/Swiften/Application/UnitTest/ApplicationTest.cpp deleted file mode 100644 index 0196755..0000000 --- a/Swiften/Application/UnitTest/ApplicationTest.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Application/Application.h" -#include "Swiften/Application/Platform/PlatformApplication.h" - -using namespace Swift; - -class ApplicationTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(ApplicationTest); - CPPUNIT_TEST(testGetSettingsDir); - CPPUNIT_TEST_SUITE_END(); - - public: - ApplicationTest() {} - - void setUp() { - testling_ = new PlatformApplication("SwiftTest"); - } - - void tearDown() { - delete testling_; - } - - void testGetSettingsDir() { - boost::filesystem::path dir = testling_->getSettingsDir(); - - CPPUNIT_ASSERT(boost::filesystem::exists(dir)); - CPPUNIT_ASSERT(boost::filesystem::is_directory(dir)); - - boost::filesystem::remove(dir); - } - - private: - Application* testling_; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(ApplicationTest); diff --git a/Swiften/Application/Unix/UnixApplication.h b/Swiften/Application/Unix/UnixApplication.h deleted file mode 100644 index c2671d8..0000000 --- a/Swiften/Application/Unix/UnixApplication.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef SWIFTEN_UnixApplication_H -#define SWIFTEN_UnixApplication_H - -#include "Swiften/Application/Application.h" -#include "Swiften/Application/NullApplicationMessageDisplay.h" - -namespace Swift { - class UnixApplication : public Application { - public: - UnixApplication(const String& name) : Application(name) { - } - - virtual ApplicationMessageDisplay* getApplicationMessageDisplay() { - return &messageDisplay_; - } - - virtual boost::filesystem::path getHomeDir() const { - return boost::filesystem::path(getenv("HOME")); - } - - boost::filesystem::path getSettingsDir() const { - boost::filesystem::path result(getHomeDir() / ("." + getName().getLowerCase().getUTF8String())); - boost::filesystem::create_directory(result); - return result; - } - - private: - NullApplicationMessageDisplay messageDisplay_; - }; -} - -#endif diff --git a/Swiften/Application/Windows/WindowsApplication.h b/Swiften/Application/Windows/WindowsApplication.h deleted file mode 100644 index 365157b..0000000 --- a/Swiften/Application/Windows/WindowsApplication.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef SWIFTEN_WindowsApplication_H -#define SWIFTEN_WindowsApplication_H - -#include "Swiften/Application/Application.h" -#include "Swiften/Application/NullApplicationMessageDisplay.h" - -namespace Swift { - class WindowsApplication : public Application { - public: - WindowsApplication(const String& name) : Application(name) { - } - - virtual ApplicationMessageDisplay* getApplicationMessageDisplay() { - return &messageDisplay_; - } - - boost::filesystem::path getSettingsDir() const { - char* appDirRaw = getenv("APPDATA"); - boost::filesystem::path result(boost::filesystem::path(appDirRaw) / getName().getUTF8String()); - boost::filesystem::create_directory(result); - return result; - } - - boost::filesystem::path getHomeDir() const { - //FIXME: This should be My Documents - - char* homeDirRaw = getenv("USERPROFILE"); - return boost::filesystem::path(homeDirRaw); - } - - private: - NullApplicationMessageDisplay messageDisplay_; - }; -} - -#endif diff --git a/Swiften/Avatars/AvatarFileStorage.cpp b/Swiften/Avatars/AvatarFileStorage.cpp deleted file mode 100644 index 1348018..0000000 --- a/Swiften/Avatars/AvatarFileStorage.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "Swiften/Avatars/AvatarFileStorage.h" - -#include <iostream> -#include <boost/filesystem/fstream.hpp> - -namespace Swift { - -AvatarFileStorage::AvatarFileStorage(const boost::filesystem::path& path) : path_(path) { - boost::filesystem::create_directory(path_); -} - -bool AvatarFileStorage::hasAvatar(const String& hash) const { - return boost::filesystem::exists(getAvatarPath(hash)); -} - -void AvatarFileStorage::addAvatar(const String& hash, const ByteArray& avatar) { - boost::filesystem::ofstream file(getAvatarPath(hash), boost::filesystem::ofstream::binary|boost::filesystem::ofstream::out); - file.write(avatar.getData(), avatar.getSize()); - file.close(); -} - -boost::filesystem::path AvatarFileStorage::getAvatarPath(const String& hash) const { - return path_ / hash.getUTF8String(); -} - -} diff --git a/Swiften/Avatars/AvatarFileStorage.h b/Swiften/Avatars/AvatarFileStorage.h deleted file mode 100644 index 1afa703..0000000 --- a/Swiften/Avatars/AvatarFileStorage.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include <map> -#include <boost/filesystem.hpp> - -#include "Swiften/Base/String.h" -#include "Swiften/Base/ByteArray.h" -#include "Swiften/Avatars/AvatarStorage.h" - -namespace Swift { - class AvatarFileStorage : public AvatarStorage { - public: - AvatarFileStorage(const boost::filesystem::path& path); - - virtual bool hasAvatar(const String& hash) const; - virtual void addAvatar(const String& hash, const ByteArray& avatar); - - virtual boost::filesystem::path getAvatarPath(const String& hash) const; - - private: - boost::filesystem::path path_; - }; - -} diff --git a/Swiften/Avatars/AvatarManager.cpp b/Swiften/Avatars/AvatarManager.cpp deleted file mode 100644 index 3825ffd..0000000 --- a/Swiften/Avatars/AvatarManager.cpp +++ /dev/null @@ -1,108 +0,0 @@ -#include "Swiften/Avatars/AvatarManager.h" - -#include <boost/bind.hpp> - -#include "Swiften/Client/StanzaChannel.h" -#include "Swiften/Elements/VCardUpdate.h" -#include "Swiften/Queries/Requests/GetVCardRequest.h" -#include "Swiften/StringCodecs/SHA1.h" -#include "Swiften/StringCodecs/Hexify.h" -#include "Swiften/Avatars/AvatarStorage.h" -#include "Swiften/MUC/MUCRegistry.h" - -namespace Swift { - -AvatarManager::AvatarManager(StanzaChannel* stanzaChannel, IQRouter* iqRouter, AvatarStorage* avatarStorage, MUCRegistry* mucRegistry) : stanzaChannel_(stanzaChannel), iqRouter_(iqRouter), avatarStorage_(avatarStorage), mucRegistry_(mucRegistry) { - stanzaChannel->onPresenceReceived.connect(boost::bind(&AvatarManager::handlePresenceReceived, this, _1)); -} - -AvatarManager::AvatarManager() { - stanzaChannel_ = NULL; - iqRouter_ = NULL; - avatarStorage_ = NULL; - mucRegistry_ = NULL; -} - -AvatarManager::~AvatarManager() { - -} - -void AvatarManager::setMUCRegistry(MUCRegistry* mucRegistry) { - mucRegistry_ = mucRegistry; -} - -void AvatarManager::handlePresenceReceived(boost::shared_ptr<Presence> presence) { - boost::shared_ptr<VCardUpdate> update = presence->getPayload<VCardUpdate>(); - if (!update) { - return; - } - JID from = getAvatarJID(presence->getFrom()); - String& hash = avatarHashes_[from]; - if (hash != update->getPhotoHash()) { - String newHash = update->getPhotoHash(); - if (avatarStorage_->hasAvatar(newHash)) { - setAvatarHash(from, newHash); - } - else { - boost::shared_ptr<GetVCardRequest> request(new GetVCardRequest(from, iqRouter_)); - request->onResponse.connect(boost::bind(&AvatarManager::handleVCardReceived, this, from, newHash, _1, _2)); - request->send(); - } - } -} - -void AvatarManager::handleVCardReceived(const JID& from, const String& promisedHash, boost::shared_ptr<VCard> vCard, const boost::optional<ErrorPayload>& error) { - if (error) { - // FIXME: What to do here? - std::cerr << "Warning: " << from << ": Could not get vCard" << std::endl; - return; - } - if (!vCard) { - std::cerr << "Warning: " << from << ": null vcard payload" << std::endl; - //FIXME: Why could this happen? - return; - } - String realHash = Hexify::hexify(SHA1::getHash(vCard->getPhoto())); - if (promisedHash != realHash) { - std::cerr << "Warning: " << from << ": Got different vCard photo hash (" << promisedHash << " != " << realHash << ")" << std::endl; - } - avatarStorage_->addAvatar(realHash, vCard->getPhoto()); - setAvatarHash(from, realHash); -} - -void AvatarManager::setAvatar(const JID& jid, const ByteArray& avatar) { - String hash = Hexify::hexify(SHA1::getHash(avatar)); - avatarStorage_->addAvatar(hash, avatar); - setAvatarHash(getAvatarJID(jid), hash); -} - -void AvatarManager::setAvatarHash(const JID& from, const String& hash) { - avatarHashes_[from] = hash; - onAvatarChanged(from, hash); -} - -String AvatarManager::getAvatarHash(const JID& jid) const { - std::map<JID, String>::const_iterator i = avatarHashes_.find(getAvatarJID(jid)); - if (i != avatarHashes_.end()) { - return i->second; - } - else { - return ""; - } -} - -boost::filesystem::path AvatarManager::getAvatarPath(const JID& jid) const { - String hash = getAvatarHash(jid); - if (!hash.isEmpty()) { - return avatarStorage_->getAvatarPath(hash); - } - return boost::filesystem::path(); -} - -JID AvatarManager::getAvatarJID(const JID& jid) const { - JID bareFrom = jid.toBare(); - return (mucRegistry_ && mucRegistry_->isMUC(bareFrom)) ? jid : bareFrom; -} - - -} diff --git a/Swiften/Avatars/AvatarManager.h b/Swiften/Avatars/AvatarManager.h deleted file mode 100644 index fd308d9..0000000 --- a/Swiften/Avatars/AvatarManager.h +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once - -#include <boost/filesystem.hpp> -#include <boost/shared_ptr.hpp> -#include <boost/optional.hpp> -#include <boost/signal.hpp> -#include <map> - -#include "Swiften/JID/JID.h" -#include "Swiften/Elements/Presence.h" -#include "Swiften/Elements/VCard.h" -#include "Swiften/Elements/ErrorPayload.h" - -namespace Swift { - class MUCRegistry; - class AvatarStorage; - class StanzaChannel; - class IQRouter; - - class AvatarManager { - public: - AvatarManager(StanzaChannel*, IQRouter*, AvatarStorage*, MUCRegistry* = NULL); - virtual ~AvatarManager(); - - virtual void setMUCRegistry(MUCRegistry*); - - virtual String getAvatarHash(const JID&) const; - virtual boost::filesystem::path getAvatarPath(const JID&) const; - virtual void setAvatar(const JID&, const ByteArray& avatar); - - public: - boost::signal<void (const JID&, const String&)> onAvatarChanged; - - protected: - /** Used only for testing. Leads to a non-functional object. */ - AvatarManager(); - - private: - void handlePresenceReceived(boost::shared_ptr<Presence>); - void handleVCardReceived(const JID& from, const String& hash, boost::shared_ptr<VCard>, const boost::optional<ErrorPayload>&); - void setAvatarHash(const JID& from, const String& hash); - JID getAvatarJID(const JID& o) const; - - private: - StanzaChannel* stanzaChannel_; - IQRouter* iqRouter_; - AvatarStorage* avatarStorage_; - MUCRegistry* mucRegistry_; - std::map<JID, String> avatarHashes_; - }; -} diff --git a/Swiften/Avatars/AvatarStorage.cpp b/Swiften/Avatars/AvatarStorage.cpp deleted file mode 100644 index 4c98314..0000000 --- a/Swiften/Avatars/AvatarStorage.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Avatars/AvatarStorage.h" - -namespace Swift { - -AvatarStorage::~AvatarStorage() { -} - -} diff --git a/Swiften/Avatars/AvatarStorage.h b/Swiften/Avatars/AvatarStorage.h deleted file mode 100644 index b5c0f32..0000000 --- a/Swiften/Avatars/AvatarStorage.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include <boost/filesystem.hpp> - -namespace Swift { - class String; - class ByteArray; - - class AvatarStorage { - public: - virtual ~AvatarStorage(); - - virtual bool hasAvatar(const String& hash) const = 0; - virtual void addAvatar(const String& hash, const ByteArray& avatar) = 0; - virtual boost::filesystem::path getAvatarPath(const String& hash) const = 0; - }; - -} diff --git a/Swiften/Avatars/UnitTest/AvatarManagerTest.cpp b/Swiften/Avatars/UnitTest/AvatarManagerTest.cpp deleted file mode 100644 index 3b4c5f9..0000000 --- a/Swiften/Avatars/UnitTest/AvatarManagerTest.cpp +++ /dev/null @@ -1,110 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Elements/VCardUpdate.h" -#include "Swiften/Avatars/AvatarManager.h" -#include "Swiften/Avatars/AvatarStorage.h" -#include "Swiften/MUC/MUCRegistry.h" -#include "Swiften/Queries/IQRouter.h" -#include "Swiften/Client/DummyStanzaChannel.h" - -using namespace Swift; - -class AvatarManagerTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(AvatarManagerTest); - CPPUNIT_TEST(testUpdate_UpdateNewHash); - CPPUNIT_TEST(testUpdate_UpdateNewHashAlreadyHaveAvatar); - CPPUNIT_TEST(testUpdate_UpdateNewHashFromMUC); - CPPUNIT_TEST(testUpdate_UpdateSameHash); - CPPUNIT_TEST(testUpdate_UpdateNewHashSameThanOtherUser); - CPPUNIT_TEST(testReceiveVCard); - CPPUNIT_TEST(testGetAvatarPath); - CPPUNIT_TEST(testGetAvatarPathFromMUC); - CPPUNIT_TEST_SUITE_END(); - - public: - AvatarManagerTest() {} - - void setUp() { - stanzaChannel_ = new DummyStanzaChannel(); - iqRouter_ = new IQRouter(stanzaChannel_); - mucRegistry_ = new DummyMUCRegistry(); - avatarStorage_ = new DummyAvatarStorage(); - } - - void tearDown() { - delete avatarStorage_; - delete mucRegistry_; - delete iqRouter_; - delete stanzaChannel_; - } - - void testUpdate_UpdateNewHash() { - std::auto_ptr<AvatarManager> testling = createManager(); - stanzaChannel_->onPresenceReceived(createPresenceWithPhotoHash()); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(stanzaChannel_->sentStanzas_.size())); - IQ* - CPPUNIT_ASSERT(stanzaChannel->isRequestAtIndex<VCardUpdate>(0, JID("foo@bar.com"), IQ::Get)); - } - - void testUpdate_UpdateNewHashAlreadyHaveAvatar() { - std::auto_ptr<AvatarManager> testling = createManager(); - } - - void testUpdate_UpdateNewHashFromMUC() { - std::auto_ptr<AvatarManager> testling = createManager(); - } - - void testUpdate_UpdateSameHash() { - std::auto_ptr<AvatarManager> testling = createManager(); - } - - void testUpdate_UpdateNewHashSameThanOtherUser() { - std::auto_ptr<AvatarManager> testling = createManager(); - } - - void testReceiveVCard() { - std::auto_ptr<AvatarManager> testling = createManager(); - } - - void testGetAvatarPath() { - std::auto_ptr<AvatarManager> testling = createManager(); - } - - void testGetAvatarPathFromMUC() { - std::auto_ptr<AvatarManager> testling = createManager(); - } - - private: - std::auto_ptr<AvatarManager> createManager() { - return std::auto_ptr<AvatarManager>(new AvatarManager(stanzaChannel_, iqRouter_, avatarStorage_, mucRegistry_)); - } - - boost::shared_ptr<Presence> createPresenceWithPhotoHash() { - boost::shared_ptr<Presence> presence(new Presence()); - presence->setFrom(JID("foo@bar.com/baz")); - presence->addPayload(boost::shared_ptr<VCardUpdate>(new VCardUpdate("aef56135bcce35eb24a43fcd684005b4ca286497"))); - return presence; - } - - private: - struct DummyMUCRegistry : public MUCRegistry { - bool isMUC(const JID& jid) const { return std::find(mucs_.begin(), mucs_.end(), jid) != mucs_.end(); } - std::vector<JID> mucs_; - }; - struct DummyAvatarStorage : public AvatarStorage { - virtual bool hasAvatar(const String& hash) const { return avatars.find(hash) != avatars.end(); } - virtual void addAvatar(const String& hash, const ByteArray& avatar) { avatars[hash] = avatar; } - virtual boost::filesystem::path getAvatarPath(const String& hash) const { - return boost::filesystem::path("/avatars") / hash.getUTF8String(); - } - std::map<String, ByteArray> avatars; - }; - DummyStanzaChannel* stanzaChannel_; - IQRouter* iqRouter_; - DummyMUCRegistry* mucRegistry_; - DummyAvatarStorage* avatarStorage_; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(AvatarManagerTest); diff --git a/Swiften/Avatars/UnitTest/MockAvatarManager.cpp b/Swiften/Avatars/UnitTest/MockAvatarManager.cpp deleted file mode 100644 index 2d3d48a..0000000 --- a/Swiften/Avatars/UnitTest/MockAvatarManager.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "Swiften/Avatars/UnitTest/MockAvatarManager.h" - -namespace Swift { - -MockAvatarManager::MockAvatarManager() { - -} - -MockAvatarManager::~MockAvatarManager() { - -} - -String MockAvatarManager::getAvatarHash(const JID& jid) const { - return jid.toBare(); -} - -boost::filesystem::path MockAvatarManager::getAvatarPath(const JID& jid) const { - return jid.getResource().getUTF8String(); -} - -void MockAvatarManager::setAvatar(const JID&, const ByteArray&) { - -} - -} - diff --git a/Swiften/Avatars/UnitTest/MockAvatarManager.h b/Swiften/Avatars/UnitTest/MockAvatarManager.h deleted file mode 100644 index 416d921..0000000 --- a/Swiften/Avatars/UnitTest/MockAvatarManager.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include "Swiften/Avatars/AvatarManager.h" -#include "Swiften/Client/DummyStanzaChannel.h" - -namespace Swift { - class MockAvatarManager : public AvatarManager { - public: - MockAvatarManager(); - virtual ~MockAvatarManager(); - virtual String getAvatarHash(const JID&) const; - virtual boost::filesystem::path getAvatarPath(const JID&) const; - virtual void setAvatar(const JID&, const ByteArray& avatar); - private: - DummyStanzaChannel channel_; - }; -} diff --git a/Swiften/Base/ByteArray.cpp b/Swiften/Base/ByteArray.cpp deleted file mode 100644 index b3a5d8d..0000000 --- a/Swiften/Base/ByteArray.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "Swiften/Base/ByteArray.h" - -#include <fstream> - -std::ostream& operator<<(std::ostream& os, const Swift::ByteArray& s) { - std::ios::fmtflags oldFlags = os.flags(); - os << std::hex; - for (Swift::ByteArray::const_iterator i = s.begin(); i != s.end(); ++i) { - os << "0x" << static_cast<unsigned int>(static_cast<unsigned char>(*i)); - if (i + 1 < s.end()) { - os << " "; - } - } - os << std::endl; - os.flags(oldFlags); - return os; -} - -namespace Swift { - -static const int BUFFER_SIZE = 4096; - -void ByteArray::readFromFile(const String& file) { - std::ifstream input(file.getUTF8Data(), std::ios_base::in|std::ios_base::binary); - while (input.good()) { - size_t oldSize = data_.size(); - data_.resize(oldSize + BUFFER_SIZE); - input.read(&data_[oldSize], BUFFER_SIZE); - data_.resize(oldSize + input.gcount()); - } - input.close(); -} - -} diff --git a/Swiften/Base/ByteArray.h b/Swiften/Base/ByteArray.h deleted file mode 100644 index ab256a4..0000000 --- a/Swiften/Base/ByteArray.h +++ /dev/null @@ -1,103 +0,0 @@ -#pragma once - -#include <cstring> -#include <vector> -#include <iostream> - -#include "Swiften/Base/String.h" - -namespace Swift { - class ByteArray - { - public: - typedef std::vector<char>::const_iterator const_iterator; - - ByteArray() : data_() {} - - ByteArray(const String& s) : data_(s.getUTF8String().begin(), s.getUTF8String().end()) {} - - ByteArray(const char* c) { - while (*c) { - data_.push_back(*c); - ++c; - } - } - - ByteArray(const char* c, size_t n) { - if (n > 0) { - data_.resize(n); - memcpy(&data_[0], c, n); - } - } - - const char* getData() const { - return data_.empty() ? NULL : &data_[0]; - } - - char* getData() { - return data_.empty() ? NULL : &data_[0]; - } - - size_t getSize() const { - return data_.size(); - } - - bool isEmpty() const { - return data_.empty(); - } - - void resize(size_t size) { - return data_.resize(size); - } - - friend ByteArray operator+(const ByteArray& a, const ByteArray&b) { - ByteArray result(a); - result.data_.insert(result.data_.end(), b.data_.begin(), b.data_.end()); - return result; - } - - friend ByteArray operator+(const ByteArray& a, char b) { - ByteArray x; - x.resize(1); - x[0] = b; - return a + x; - } - - ByteArray& operator+=(const ByteArray& b) { - data_.insert(data_.end(), b.data_.begin(), b.data_.end()); - return *this; - } - - friend bool operator==(const ByteArray& a, const ByteArray& b) { - return a.data_ == b.data_; - } - - - const char& operator[](size_t i) const { - return data_[i]; - } - - char& operator[](size_t i) { - return data_[i]; - } - - const_iterator begin() const { - return data_.begin(); - } - - const_iterator end() const { - return data_.end(); - } - - String toString() const { - return String(getData(), getSize()); - } - - void readFromFile(const String& file); - - private: - std::vector<char> data_; - }; -} - -std::ostream& operator<<(std::ostream& os, const Swift::ByteArray& s); diff --git a/Swiften/Base/Error.cpp b/Swiften/Base/Error.cpp deleted file mode 100644 index 597c155..0000000 --- a/Swiften/Base/Error.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Base/Error.h" - -namespace Swift { - -Error::~Error() { -} - -} diff --git a/Swiften/Base/Error.h b/Swiften/Base/Error.h deleted file mode 100644 index 4c729ff..0000000 --- a/Swiften/Base/Error.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -namespace Swift { - class Error { - public: - virtual ~Error(); - }; -}; diff --git a/Swiften/Base/IDGenerator.cpp b/Swiften/Base/IDGenerator.cpp deleted file mode 100644 index 07ead43..0000000 --- a/Swiften/Base/IDGenerator.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "Swiften/Base/IDGenerator.h" - -namespace Swift { - -IDGenerator::IDGenerator() { -} - -String IDGenerator::generateID() { - bool carry = true; - size_t i = 0; - while (carry && i < currentID_.getUTF8Size()) { - char c = currentID_.getUTF8String()[i]; - if (c >= 'z') { - currentID_.getUTF8String()[i] = 'a'; - } - else { - currentID_.getUTF8String()[i] = c+1; - carry = false; - } - ++i; - } - if (carry) { - currentID_ += 'a'; - } - return currentID_; -} - -} diff --git a/Swiften/Base/IDGenerator.h b/Swiften/Base/IDGenerator.h deleted file mode 100644 index db7b80d..0000000 --- a/Swiften/Base/IDGenerator.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef SWIFTEN_IDGenerator_H -#define SWIFTEN_IDGenerator_H - -#include "Swiften/Base/String.h" - -namespace Swift { - class IDGenerator { - public: - IDGenerator(); - - String generateID(); - - private: - String currentID_; - }; -} - -#endif diff --git a/Swiften/Base/Platform.h b/Swiften/Base/Platform.h deleted file mode 100644 index 9e4c398..0000000 --- a/Swiften/Base/Platform.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef SWIFTEN_Platform_H -#define SWIFTEN_Platform_H - -// Base platforms -#if defined(linux) || defined(__linux) || defined(__linux__) -#define SWIFTEN_PLATFORM_LINUX -#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) -#define SWIFTEN_PLATFORM_BSD -#elif defined(sun) || defined(__sun) -#define SWIFTEN_PLATFORM_SOLARIS -#elif defined(__sgi) -#define SWIFTEN_PLATFORM_SGI -#elif defined(__hpux) -#define SWIFTEN_PLATFORM_HPUX -#elif defined(__CYGWIN__) -#define SWIFTEN_PLATFORM_CYGWIN -#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) -#define SWIFTEN_PLATFORM_WIN32 -#elif defined(__BEOS__) -#define SWIFTEN_PLATFORM_BEOS -#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) -#define SWIFTEN_PLATFORM_MACOSX -#elif defined(__IBMCPP__) || defined(_AIX) -#define SWIFTEN_PLATFORM_AIX -#elif defined(__amigaos__) -#define SWIFTEN_PLATFORM_AMIGAOS -#elif defined(__QNXNTO__) -#define SWIFTEN_PLATFORM_QNX -#endif - -// Derived platforms -#if defined(SWIFTEN_PLATFORM_CYGWIN) || defined(SWIFTEN_PLATFORM_WIN32) -#define SWIFTEN_PLATFORM_WINDOWS -#endif - -// Endianness -#include <boost/detail/endian.hpp> -#if defined(BOOST_LITTLE_ENDIAN) -#define SWIFTEN_LITTLE_ENDIAN -#elif defined(BOOST_BIG_ENDIAN) -#define SWIFTEN_BIG_ENDIAN -#endif - -#endif diff --git a/Swiften/Base/SConscript b/Swiften/Base/SConscript deleted file mode 100644 index a0984e5..0000000 --- a/Swiften/Base/SConscript +++ /dev/null @@ -1,10 +0,0 @@ -Import("swiften_env") - -objects = swiften_env.StaticObject([ - "ByteArray.cpp", - "Error.cpp", - "IDGenerator.cpp", - "String.cpp", - "sleep.cpp", - ]) -swiften_env.Append(SWIFTEN_OBJECTS = [objects]) diff --git a/Swiften/Base/String.cpp b/Swiften/Base/String.cpp deleted file mode 100644 index cc989f6..0000000 --- a/Swiften/Base/String.cpp +++ /dev/null @@ -1,116 +0,0 @@ -#include <cassert> -#include <algorithm> - -#include "Swiften/Base/String.h" - -namespace Swift { - -static inline size_t sequenceLength(char firstByte) { - if ((firstByte & 0x80) == 0) { - return 1; - } - if ((firstByte & 0xE0) == 0xC0) { - return 2; - } - if ((firstByte & 0xF0) == 0xE0) { - return 3; - } - if ((firstByte & 0xF8) == 0xF0) { - return 4; - } - if ((firstByte & 0xFC) == 0xF8) { - return 5; - } - if ((firstByte & 0xFE) == 0xFC) { - return 6; - } - assert(false); - return 1; -} - -std::vector<unsigned int> String::getUnicodeCodePoints() const { - std::vector<unsigned int> result; - for (size_t i = 0; i < data_.size();) { - unsigned int codePoint = 0; - char firstChar = data_[i]; - size_t length = sequenceLength(firstChar); - - // First character is special - size_t firstCharBitSize = 7 - length; - if (length == 1) { - firstCharBitSize = 7; - } - codePoint = firstChar & ((1<<(firstCharBitSize+1)) - 1); - - for (size_t j = 1; j < length; ++j) { - codePoint = (codePoint<<6) | (data_[i+j] & 0x3F); - } - result.push_back(codePoint); - i += length; - } - return result; -} - - -std::pair<String,String> String::getSplittedAtFirst(char c) const { - assert((c & 0x80) == 0); - size_t firstMatch = data_.find(c); - if (firstMatch != data_.npos) { - return std::make_pair(data_.substr(0,firstMatch),data_.substr(firstMatch+1,data_.npos)); - } - else { - return std::make_pair(*this, ""); - } -} - -size_t String::getLength() const { - size_t size = 0, current = 0, end = data_.size(); - while (current < end) { - size++; - current += sequenceLength(data_[current]); - } - return size; -} - -void String::removeAll(char c) { - size_t lastPos = 0; - size_t matchingIndex = 0; - while ((matchingIndex = data_.find(c, lastPos)) != data_.npos) { - data_.erase(matchingIndex, 1); - lastPos = matchingIndex; - } -} - -void String::replaceAll(char c, const String& s) { - size_t lastPos = 0; - size_t matchingIndex = 0; - while ((matchingIndex = data_.find(c, lastPos)) != data_.npos) { - data_.replace(matchingIndex, 1, s.data_); - lastPos = matchingIndex + s.data_.size(); - } -} - -String String::getLowerCase() const { - std::string lower(data_); - std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); - return String(lower); -} - -std::vector<String> String::split(char c) const { - assert((c & 0x80) == 0); - std::vector<String> result; - String accumulator; - for (size_t i = 0; i < data_.size(); ++i) { - if (data_[i] == c) { - result.push_back(accumulator); - accumulator = ""; - } - else { - accumulator += data_[i]; - } - } - result.push_back(accumulator); - return result; -} - -} diff --git a/Swiften/Base/String.h b/Swiften/Base/String.h deleted file mode 100644 index 7a6a9cc..0000000 --- a/Swiften/Base/String.h +++ /dev/null @@ -1,131 +0,0 @@ -#ifndef SWIFTEN_STRING_H -#define SWIFTEN_STRING_H - -#include <ostream> -#include <string> -#include <utility> -#include <vector> -#include <cassert> - -#define SWIFTEN_STRING_TO_CFSTRING(a) \ - CFStringCreateWithBytes(NULL, reinterpret_cast<const UInt8*>(a.getUTF8Data()), a.getUTF8Size(), kCFStringEncodingUTF8, false) - -namespace Swift { - class ByteArray; - - class String { - friend class ByteArray; - - public: - String() {} - String(const char* data) : data_(data) {} - String(const char* data, size_t len) : data_(data, len) {} - String(const std::string& data) : data_(data) {} - - bool isEmpty() const { return data_.empty(); } - - const char* getUTF8Data() const { return data_.c_str(); } - const std::string& getUTF8String() const { return data_; } - std::string& getUTF8String() { return data_; } - size_t getUTF8Size() const { return data_.size(); } - std::vector<unsigned int> getUnicodeCodePoints() const; - - /** - * Returns the part before and after 'c'. - * If the given splitter does not occur in the string, the second - * component is the empty string. - */ - std::pair<String,String> getSplittedAtFirst(char c) const; - - std::vector<String> split(char c) const; - - size_t getLength() const; - String getLowerCase() const; - - void removeAll(char c); - - void replaceAll(char c, const String& s); - - bool beginsWith(char c) const { - return data_.size() > 0 && data_[0] == c; - } - - bool beginsWith(const String& s) const { - return data_.substr(0, s.data_.size()) == s; - } - - bool endsWith(char c) const { - return data_.size() > 0 && data_[data_.size()-1] == c; - } - - String getSubstring(size_t begin, size_t end) const { - return String(data_.substr(begin, end)); - } - - size_t find(char c) const { - assert((c & 0x80) == 0); - return data_.find(c); - } - - size_t npos() const { - return data_.npos; - } - - friend String operator+(const String& a, const String& b) { - return String(a.data_ + b.data_); - } - - friend String operator+(const String& a, char b) { - return String(a.data_ + b); - } - - String& operator+=(const String& o) { - data_ += o.data_; - return *this; - } - - String& operator+=(char c) { - data_ += c; - return *this; - } - - String& operator=(const String& o) { - data_ = o.data_; - return *this; - } - - bool contains(const String& o) { - return data_.find(o.data_) != std::string::npos; - } - - char operator[](size_t i) const { - return data_[i]; - } - - friend bool operator>(const String& a, const String& b) { - return a.data_ > b.data_; - } - - friend bool operator<(const String& a, const String& b) { - return a.data_ < b.data_; - } - - friend bool operator!=(const String& a, const String& b) { - return a.data_ != b.data_; - } - - friend bool operator==(const String& a, const String& b) { - return a.data_ == b.data_; - } - - friend std::ostream& operator<<(std::ostream& os, const String& s) { - os << s.data_; - return os; - } - - private: - std::string data_; - }; -} - -#endif diff --git a/Swiften/Base/UnitTest/ByteArrayTest.cpp b/Swiften/Base/UnitTest/ByteArrayTest.cpp deleted file mode 100644 index bf893bd..0000000 --- a/Swiften/Base/UnitTest/ByteArrayTest.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Base/ByteArray.h" - -using namespace Swift; - -class ByteArrayTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(ByteArrayTest); - CPPUNIT_TEST(testGetData_NoData); - CPPUNIT_TEST_SUITE_END(); - - public: - void testGetData_NoData() { - ByteArray testling; - - CPPUNIT_ASSERT_EQUAL(static_cast<const char*>(NULL), static_cast<const char*>(testling.getData())); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(ByteArrayTest); diff --git a/Swiften/Base/UnitTest/IDGeneratorTest.cpp b/Swiften/Base/UnitTest/IDGeneratorTest.cpp deleted file mode 100644 index bd96d91..0000000 --- a/Swiften/Base/UnitTest/IDGeneratorTest.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <set> - -#include "Swiften/Base/IDGenerator.h" - -using namespace Swift; - -class IDGeneratorTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(IDGeneratorTest); - CPPUNIT_TEST(testGenerate); - CPPUNIT_TEST_SUITE_END(); - - public: - IDGeneratorTest() {} - - void setUp() { - generatedIDs_.clear(); - } - - void testGenerate() { - IDGenerator testling; - for (unsigned int i = 0; i < 26*4; ++i) { - String id = testling.generateID(); - CPPUNIT_ASSERT(generatedIDs_.insert(id).second); - } - } - - private: - std::set<String> generatedIDs_; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(IDGeneratorTest); diff --git a/Swiften/Base/UnitTest/StringTest.cpp b/Swiften/Base/UnitTest/StringTest.cpp deleted file mode 100644 index 87e1a99..0000000 --- a/Swiften/Base/UnitTest/StringTest.cpp +++ /dev/null @@ -1,179 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Base/String.h" - -using namespace Swift; - -class StringTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(StringTest); - CPPUNIT_TEST(testGetLength); - CPPUNIT_TEST(testGetLength_EncodedLength2); - CPPUNIT_TEST(testGetLength_EncodedLength3); - CPPUNIT_TEST(testGetLength_EncodedLength4); - CPPUNIT_TEST(testGetUnicodeCodePoints); - CPPUNIT_TEST(testGetSplittedAtFirst); - CPPUNIT_TEST(testGetSplittedAtFirst_CharacterAtEnd); - CPPUNIT_TEST(testGetSplittedAtFirst_NoSuchCharacter); - CPPUNIT_TEST(testRemoveAll); - CPPUNIT_TEST(testRemoveAll_LastChar); - CPPUNIT_TEST(testRemoveAll_ConsecutiveChars); - CPPUNIT_TEST(testReplaceAll); - CPPUNIT_TEST(testReplaceAll_LastChar); - CPPUNIT_TEST(testReplaceAll_ConsecutiveChars); - CPPUNIT_TEST(testReplaceAll_MatchingReplace); - CPPUNIT_TEST(testGetLowerCase); - CPPUNIT_TEST(testSplit); - CPPUNIT_TEST(testContains); - CPPUNIT_TEST(testContainsFalse); - CPPUNIT_TEST(testContainsExact); - CPPUNIT_TEST_SUITE_END(); - - public: - StringTest() {} - - void testGetLength() { - String testling("xyz$xyz"); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(7), testling.getLength()); - } - - void testGetLength_EncodedLength2() { - String testling("xyz\xC2\xA2xyz"); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(7), testling.getLength()); - } - - void testGetLength_EncodedLength3() { - String testling("xyz\xE2\x82\xACxyz"); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(7), testling.getLength()); - } - - void testGetLength_EncodedLength4() { - String testling("xyz\xf4\x8a\xaf\x8dxyz"); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(7), testling.getLength()); - } - - void testGetUnicodeCodePoints() { - String testling("$\xc2\xa2\xe2\x82\xac\xf4\x8a\xaf\x8d"); - std::vector<unsigned int> points = testling.getUnicodeCodePoints(); - - CPPUNIT_ASSERT_EQUAL(0x24U, points[0]); - CPPUNIT_ASSERT_EQUAL(0xA2U, points[1]); - CPPUNIT_ASSERT_EQUAL(0x20ACU, points[2]); - CPPUNIT_ASSERT_EQUAL(0x10ABCDU, points[3]); - } - - void testGetSplittedAtFirst() { - String testling("ab@cd@ef"); - - std::pair<String,String> result = testling.getSplittedAtFirst('@'); - CPPUNIT_ASSERT_EQUAL(String("ab"), result.first); - CPPUNIT_ASSERT_EQUAL(String("cd@ef"), result.second); - } - - void testGetSplittedAtFirst_CharacterAtEnd() { - String testling("ab@"); - - std::pair<String,String> result = testling.getSplittedAtFirst('@'); - CPPUNIT_ASSERT_EQUAL(String("ab"), result.first); - CPPUNIT_ASSERT(result.second.isEmpty()); - } - - void testGetSplittedAtFirst_NoSuchCharacter() { - String testling("ab"); - - std::pair<String,String> result = testling.getSplittedAtFirst('@'); - CPPUNIT_ASSERT_EQUAL(String("ab"), result.first); - CPPUNIT_ASSERT(result.second.isEmpty()); - } - - void testRemoveAll() { - String testling("ab c de"); - - testling.removeAll(' '); - - CPPUNIT_ASSERT_EQUAL(String("abcde"), testling); - } - - void testRemoveAll_LastChar() { - String testling("abcde "); - - testling.removeAll(' '); - - CPPUNIT_ASSERT_EQUAL(String("abcde"), testling); - } - - void testRemoveAll_ConsecutiveChars() { - String testling("ab cde"); - - testling.removeAll(' '); - - CPPUNIT_ASSERT_EQUAL(String("abcde"), testling); - } - - void testReplaceAll() { - String testling("abcbd"); - - testling.replaceAll('b', "xyz"); - - CPPUNIT_ASSERT_EQUAL(String("axyzcxyzd"), testling); - } - - void testReplaceAll_LastChar() { - String testling("abc"); - - testling.replaceAll('c', "xyz"); - - CPPUNIT_ASSERT_EQUAL(String("abxyz"), testling); - } - - void testReplaceAll_ConsecutiveChars() { - String testling("abbc"); - - testling.replaceAll('b',"xyz"); - - CPPUNIT_ASSERT_EQUAL(String("axyzxyzc"), testling); - } - - void testReplaceAll_MatchingReplace() { - String testling("abc"); - - testling.replaceAll('b',"bbb"); - - CPPUNIT_ASSERT_EQUAL(String("abbbc"), testling); - } - - void testGetLowerCase() { - String testling("aBcD e"); - - CPPUNIT_ASSERT_EQUAL(String("abcd e"), testling.getLowerCase()); - } - - void testSplit() { - std::vector<String> result = String("abc def ghi").split(' '); - - CPPUNIT_ASSERT_EQUAL(3, static_cast<int>(result.size())); - CPPUNIT_ASSERT_EQUAL(String("abc"), result[0]); - CPPUNIT_ASSERT_EQUAL(String("def"), result[1]); - CPPUNIT_ASSERT_EQUAL(String("ghi"), result[2]); - } - - void testContains() { - CPPUNIT_ASSERT(String("abcde").contains(String("bcd"))); - } - - void testContainsFalse() { - CPPUNIT_ASSERT(!String("abcde").contains(String("abcdef"))); - } - - void testContainsExact() { - CPPUNIT_ASSERT(String("abcde").contains(String("abcde"))); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(StringTest); diff --git a/Swiften/Base/foreach.h b/Swiften/Base/foreach.h deleted file mode 100644 index b2bee66..0000000 --- a/Swiften/Base/foreach.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef SWIFTEN_FOREACH_H -#define SWIFTEN_FOREACH_H - -#include <boost/foreach.hpp> - -#undef foreach -#define foreach BOOST_FOREACH - -#endif diff --git a/Swiften/Base/sleep.cpp b/Swiften/Base/sleep.cpp deleted file mode 100644 index 99d0fe6..0000000 --- a/Swiften/Base/sleep.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "Swiften/Base/sleep.h" - -#include <boost/thread.hpp> - -namespace Swift { - -void sleep(unsigned int msecs) { - boost::xtime xt; - boost::xtime_get(&xt, boost::TIME_UTC); - xt.nsec += msecs*1000000; - boost::thread::sleep(xt); -} - -} diff --git a/Swiften/Base/sleep.h b/Swiften/Base/sleep.h deleted file mode 100644 index bcebc4c..0000000 --- a/Swiften/Base/sleep.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef SWIFTEN_sleep_H -#define SWIFTEN_sleep_H - -namespace Swift { - void sleep(unsigned int msecs); -} - -#endif diff --git a/Swiften/Chat/ChatStateActionProvider.h b/Swiften/Chat/ChatStateActionProvider.h deleted file mode 100644 index 82bed3f..0000000 --- a/Swiften/Chat/ChatStateActionProvider.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -namespace Swift { - class ChatState { - - }; -} diff --git a/Swiften/Chat/ChatStateMessageSender.cpp b/Swiften/Chat/ChatStateMessageSender.cpp deleted file mode 100644 index ad1495f..0000000 --- a/Swiften/Chat/ChatStateMessageSender.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "Swiften/Chat/ChatStateMessageSender.h" - -#include <boost/bind.hpp> - -#include "Swiften/Client/StanzaChannel.h" - -namespace Swift { - -ChatStateMessageSender::ChatStateMessageSender(ChatStateNotifier* notifier, StanzaChannel* stanzaChannel, const JID& contact) : contact_(contact) { - notifier_ = notifier; - stanzaChannel_ = stanzaChannel; - notifier_->onChatStateChanged.connect(boost::bind(&ChatStateMessageSender::handleChatStateChanged, this, _1)); -} - -void ChatStateMessageSender::handleChatStateChanged(ChatState::ChatStateType state) { - boost::shared_ptr<Message> message(new Message()); - message->setTo(contact_); - message->addPayload(boost::shared_ptr<Payload>(new ChatState(state))); - stanzaChannel_->sendMessage(message); -} - -} diff --git a/Swiften/Chat/ChatStateMessageSender.h b/Swiften/Chat/ChatStateMessageSender.h deleted file mode 100644 index aff0791..0000000 --- a/Swiften/Chat/ChatStateMessageSender.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include "Swiften/Chat/ChatStateNotifier.h" -#include "Swiften/Elements/ChatState.h" -#include "Swiften/JID/JID.h" - -namespace Swift { - class StanzaChannel; - class ChatStateMessageSender { - public: - ChatStateMessageSender(ChatStateNotifier* notifier, StanzaChannel* stanzaChannel, const JID& contact); - void setContact(const JID& contact) {contact_ = contact;}; - - private: - void handleChatStateChanged(ChatState::ChatStateType state); - ChatStateNotifier* notifier_; - StanzaChannel* stanzaChannel_; - JID contact_; - }; -} diff --git a/Swiften/Chat/ChatStateNotifier.cpp b/Swiften/Chat/ChatStateNotifier.cpp deleted file mode 100644 index 7c6560f..0000000 --- a/Swiften/Chat/ChatStateNotifier.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "Swiften/Chat/ChatStateNotifier.h" - -namespace Swift { - -ChatStateNotifier::ChatStateNotifier() { - contactHas85Caps_ = false; - isInConversation_ = false; - contactHasSentActive_ = false; - userIsTyping_ = false; -} - -void ChatStateNotifier::setContactHas85Caps(bool hasCaps) { - contactHas85Caps_ = hasCaps; -} - -void ChatStateNotifier::setUserIsTyping() { - if (contactShouldReceiveStates() && !userIsTyping_) { - userIsTyping_ = true; - onChatStateChanged(ChatState::Composing); - } -} - -void ChatStateNotifier::userSentMessage() { - userIsTyping_ = false; -} - -void ChatStateNotifier::userCancelledNewMessage() { - if (userIsTyping_) { - userIsTyping_ = false; - onChatStateChanged(ChatState::Active); - } -} - -void ChatStateNotifier::receivedMessageFromContact(bool hasActiveElement) { - isInConversation_ = true; - contactHasSentActive_ = hasActiveElement; -} - -bool ChatStateNotifier::contactShouldReceiveStates() { - /* So, yes, the XEP says to look at caps, but it also says that once you've - heard from the contact, the active state overrides this.*/ - return contactHasSentActive_ || (contactHas85Caps_ && !isInConversation_);; -} - -} diff --git a/Swiften/Chat/ChatStateNotifier.h b/Swiften/Chat/ChatStateNotifier.h deleted file mode 100644 index 0ef4255..0000000 --- a/Swiften/Chat/ChatStateNotifier.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include <boost/signals.hpp> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/ChatState.h" - -namespace Swift { - class ChatStateNotifier { - public: - ChatStateNotifier(); - void setContactHas85Caps(bool hasCaps); - void setUserIsTyping(); - void userSentMessage(); - void userCancelledNewMessage(); - void receivedMessageFromContact(bool hasActiveElement); - bool contactShouldReceiveStates(); - - boost::signal<void (ChatState::ChatStateType)> onChatStateChanged; - private: - bool contactHas85Caps_; - bool isInConversation_; - bool contactHasSentActive_; - bool userIsTyping_; - }; -} diff --git a/Swiften/Chat/ChatStateTracker.cpp b/Swiften/Chat/ChatStateTracker.cpp deleted file mode 100644 index 3076845..0000000 --- a/Swiften/Chat/ChatStateTracker.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "Swiften/Chat/ChatStateTracker.h" - -namespace Swift { -ChatStateTracker::ChatStateTracker() { - currentState_ = ChatState::Gone; -} - -void ChatStateTracker::handleMessageReceived(boost::shared_ptr<Message> message) { - boost::shared_ptr<ChatState> statePayload = message->getPayload<ChatState>(); - if (statePayload) { - changeState(statePayload->getChatState());; - } -} - -void ChatStateTracker::handlePresenceChange(boost::shared_ptr<Presence> newPresence, boost::shared_ptr<Presence>) { - if (newPresence->getType() == Presence::Unavailable) { - onChatStateChange(ChatState::Gone); - } -} - -void ChatStateTracker::changeState(ChatState::ChatStateType state) { - if (state != currentState_) { - currentState_ = state; - onChatStateChange(state); - } -} - -} diff --git a/Swiften/Chat/ChatStateTracker.h b/Swiften/Chat/ChatStateTracker.h deleted file mode 100644 index e66bbae..0000000 --- a/Swiften/Chat/ChatStateTracker.h +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include <boost/signal.hpp> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/Message.h" -#include "Swiften/Elements/Presence.h" -#include "Swiften/Elements/ChatState.h" - -namespace Swift { - class ChatStateTracker { - public: - ChatStateTracker(); - void handleMessageReceived(boost::shared_ptr<Message> message); - void handlePresenceChange(boost::shared_ptr<Presence> newPresence, boost::shared_ptr<Presence> oldPresence); - boost::signal<void (ChatState::ChatStateType)> onChatStateChange; - private: - void changeState(ChatState::ChatStateType state); - ChatState::ChatStateType currentState_; - }; -} diff --git a/Swiften/Chat/UnitTest/ChatStateNotifierTest.cpp b/Swiften/Chat/UnitTest/ChatStateNotifierTest.cpp deleted file mode 100644 index 44ec9d8..0000000 --- a/Swiften/Chat/UnitTest/ChatStateNotifierTest.cpp +++ /dev/null @@ -1,132 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/bind.hpp> - -#include "Swiften/Chat/ChatStateNotifier.h" - -using namespace Swift; - - -class ChatStateMonitor { -public: - ChatStateMonitor(ChatStateNotifier* notifier) { - notifier_ = notifier; - composingCallCount = 0; - activeCallCount = 0; - notifier->onChatStateChanged.connect(boost::bind(&ChatStateMonitor::handleChatStateChanged, this, _1)); - }; - - int composingCallCount; - int activeCallCount; - ChatState::ChatStateType currentState; - -private: - void handleChatStateChanged(ChatState::ChatStateType newState) { - switch (newState) { - case ChatState::Composing: - composingCallCount++; - break; - case ChatState::Active: - activeCallCount++; - break; - default: - break; - } - currentState = newState; - }; - - ChatStateNotifier* notifier_; -}; - -class ChatStateNotifierTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(ChatStateNotifierTest); - CPPUNIT_TEST(testStartTypingReply_CapsNotIncluded); - CPPUNIT_TEST(testStartTypingReply_CapsIncluded); - CPPUNIT_TEST(testCancelledNewMessage); - CPPUNIT_TEST(testContinueTypingReply_CapsIncluded); - CPPUNIT_TEST(testContactShouldReceiveStates_CapsOnly); - CPPUNIT_TEST(testContactShouldReceiveStates_CapsNorActive); - CPPUNIT_TEST(testContactShouldReceiveStates_ActiveOverrideOn); - CPPUNIT_TEST(testContactShouldReceiveStates_ActiveOverrideOff); - CPPUNIT_TEST_SUITE_END(); - -private: - ChatStateNotifier* notifier_; - ChatStateMonitor* monitor_; - -public: - void setUp() { - notifier_ = new ChatStateNotifier(); - monitor_ = new ChatStateMonitor(notifier_); - } - - void tearDown() { - delete notifier_; - delete monitor_; - } - - void testStartTypingReply_CapsNotIncluded() { - notifier_->setContactHas85Caps(false); - notifier_->setUserIsTyping(); - CPPUNIT_ASSERT_EQUAL(0, monitor_->composingCallCount); - } - - void testSendTwoMessages() { - notifier_->setContactHas85Caps(true); - notifier_->setUserIsTyping(); - notifier_->userSentMessage(); - notifier_->setUserIsTyping(); - notifier_->userSentMessage(); - CPPUNIT_ASSERT_EQUAL(2, monitor_->composingCallCount); - } - - void testCancelledNewMessage() { - notifier_->setContactHas85Caps(true); - notifier_->setUserIsTyping(); - notifier_->userCancelledNewMessage(); - CPPUNIT_ASSERT_EQUAL(1, monitor_->composingCallCount); - CPPUNIT_ASSERT_EQUAL(1, monitor_->activeCallCount); - CPPUNIT_ASSERT_EQUAL(ChatState::Active, monitor_->currentState); - } - - - void testContactShouldReceiveStates_CapsOnly() { - notifier_->setContactHas85Caps(true); - CPPUNIT_ASSERT_EQUAL(true, notifier_->contactShouldReceiveStates()); - } - - void testContactShouldReceiveStates_CapsNorActive() { - CPPUNIT_ASSERT_EQUAL(false, notifier_->contactShouldReceiveStates()); - } - - void testContactShouldReceiveStates_ActiveOverrideOn() { - notifier_->setContactHas85Caps(false); - notifier_->receivedMessageFromContact(true); - CPPUNIT_ASSERT_EQUAL(true, notifier_->contactShouldReceiveStates()); - } - - void testContactShouldReceiveStates_ActiveOverrideOff() { - notifier_->setContactHas85Caps(true); - notifier_->receivedMessageFromContact(false); - CPPUNIT_ASSERT_EQUAL(false, notifier_->contactShouldReceiveStates()); - } - - - void testStartTypingReply_CapsIncluded() { - notifier_->setContactHas85Caps(true); - notifier_->setUserIsTyping(); - CPPUNIT_ASSERT_EQUAL(1, monitor_->composingCallCount); - } - - void testContinueTypingReply_CapsIncluded() { - notifier_->setContactHas85Caps(true); - notifier_->setUserIsTyping(); - notifier_->setUserIsTyping(); - notifier_->setUserIsTyping(); - CPPUNIT_ASSERT_EQUAL(1, monitor_->composingCallCount); - } - - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(ChatStateNotifierTest); diff --git a/Swiften/Client/Client.cpp b/Swiften/Client/Client.cpp deleted file mode 100644 index c704248..0000000 --- a/Swiften/Client/Client.cpp +++ /dev/null @@ -1,212 +0,0 @@ -#include "Swiften/Client/Client.h" - -#include <boost/bind.hpp> - -#include "Swiften/Network/MainBoostIOServiceThread.h" -#include "Swiften/Network/BoostIOServiceThread.h" -#include "Swiften/Client/ClientSession.h" -#include "Swiften/StreamStack/PlatformTLSLayerFactory.h" -#include "Swiften/Network/Connector.h" -#include "Swiften/Network/BoostConnectionFactory.h" -#include "Swiften/Network/BoostTimerFactory.h" -#include "Swiften/TLS/PKCS12Certificate.h" -#include "Swiften/Session/BasicSessionStream.h" - -namespace Swift { - -Client::Client(const JID& jid, const String& password) : - IQRouter(this), jid_(jid), password_(password) { - connectionFactory_ = new BoostConnectionFactory(&MainBoostIOServiceThread::getInstance().getIOService()); - timerFactory_ = new BoostTimerFactory(&MainBoostIOServiceThread::getInstance().getIOService()); - tlsLayerFactory_ = new PlatformTLSLayerFactory(); -} - -Client::~Client() { - if (session_ || connection_) { - std::cerr << "Warning: Client not disconnected properly" << std::endl; - } - delete tlsLayerFactory_; - delete timerFactory_; - delete connectionFactory_; -} - -bool Client::isAvailable() { - return session_; -} - -void Client::connect() { - assert(!connector_); - connector_ = boost::shared_ptr<Connector>(new Connector(jid_.getDomain(), &resolver_, connectionFactory_, timerFactory_)); - connector_->onConnectFinished.connect(boost::bind(&Client::handleConnectorFinished, this, _1)); - connector_->setTimeoutMilliseconds(60*1000); - connector_->start(); -} - -void Client::handleConnectorFinished(boost::shared_ptr<Connection> connection) { - // TODO: Add domain name resolver error - connector_.reset(); - if (!connection) { - onError(ClientError::ConnectionError); - } - else { - assert(!connection_); - connection_ = connection; - - assert(!sessionStream_); - sessionStream_ = boost::shared_ptr<BasicSessionStream>(new BasicSessionStream(connection_, &payloadParserFactories_, &payloadSerializers_, tlsLayerFactory_, timerFactory_)); - if (!certificate_.isEmpty()) { - sessionStream_->setTLSCertificate(PKCS12Certificate(certificate_, password_)); - } - sessionStream_->onDataRead.connect(boost::bind(&Client::handleDataRead, this, _1)); - sessionStream_->onDataWritten.connect(boost::bind(&Client::handleDataWritten, this, _1)); - sessionStream_->initialize(); - - session_ = ClientSession::create(jid_, sessionStream_); - session_->onInitialized.connect(boost::bind(boost::ref(onConnected))); - session_->onFinished.connect(boost::bind(&Client::handleSessionFinished, this, _1)); - session_->onNeedCredentials.connect(boost::bind(&Client::handleNeedCredentials, this)); - session_->onElementReceived.connect(boost::bind(&Client::handleElement, this, _1)); - session_->start(); - } -} - -void Client::disconnect() { - if (session_) { - session_->finish(); - } - else { - closeConnection(); - } -} - -void Client::closeConnection() { - if (sessionStream_) { - sessionStream_.reset(); - } - if (connection_) { - connection_->disconnect(); - connection_.reset(); - } -} - -void Client::send(boost::shared_ptr<Stanza> stanza) { - if (!isAvailable()) { - std::cerr << "Warning: Client: Trying to send a stanza while disconnected." << std::endl; - return; - } - session_->sendElement(stanza); -} - -void Client::sendIQ(boost::shared_ptr<IQ> iq) { - send(iq); -} - -void Client::sendMessage(boost::shared_ptr<Message> message) { - send(message); -} - -void Client::sendPresence(boost::shared_ptr<Presence> presence) { - send(presence); -} - -String Client::getNewIQID() { - return idGenerator_.generateID(); -} - -void Client::handleElement(boost::shared_ptr<Element> element) { - boost::shared_ptr<Message> message = boost::dynamic_pointer_cast<Message>(element); - if (message) { - onMessageReceived(message); - return; - } - - boost::shared_ptr<Presence> presence = boost::dynamic_pointer_cast<Presence>(element); - if (presence) { - onPresenceReceived(presence); - return; - } - - boost::shared_ptr<IQ> iq = boost::dynamic_pointer_cast<IQ>(element); - if (iq) { - onIQReceived(iq); - return; - } -} - -void Client::setCertificate(const String& certificate) { - certificate_ = certificate; -} - -void Client::handleSessionFinished(boost::shared_ptr<Error> error) { - session_.reset(); - closeConnection(); - if (error) { - ClientError clientError; - if (boost::shared_ptr<ClientSession::Error> actualError = boost::dynamic_pointer_cast<ClientSession::Error>(error)) { - switch(actualError->type) { - case ClientSession::Error::AuthenticationFailedError: - clientError = ClientError(ClientError::AuthenticationFailedError); - break; - case ClientSession::Error::CompressionFailedError: - clientError = ClientError(ClientError::CompressionFailedError); - break; - case ClientSession::Error::ServerVerificationFailedError: - clientError = ClientError(ClientError::ServerVerificationFailedError); - break; - case ClientSession::Error::NoSupportedAuthMechanismsError: - clientError = ClientError(ClientError::NoSupportedAuthMechanismsError); - break; - case ClientSession::Error::UnexpectedElementError: - clientError = ClientError(ClientError::UnexpectedElementError); - break; - case ClientSession::Error::ResourceBindError: - clientError = ClientError(ClientError::ResourceBindError); - break; - case ClientSession::Error::SessionStartError: - clientError = ClientError(ClientError::SessionStartError); - break; - case ClientSession::Error::TLSError: - clientError = ClientError(ClientError::TLSError); - break; - case ClientSession::Error::TLSClientCertificateError: - clientError = ClientError(ClientError::ClientCertificateError); - break; - } - } - else if (boost::shared_ptr<SessionStream::Error> actualError = boost::dynamic_pointer_cast<SessionStream::Error>(error)) { - switch(actualError->type) { - case SessionStream::Error::ParseError: - clientError = ClientError(ClientError::XMLError); - break; - case SessionStream::Error::TLSError: - clientError = ClientError(ClientError::TLSError); - break; - case SessionStream::Error::InvalidTLSCertificateError: - clientError = ClientError(ClientError::ClientCertificateLoadError); - break; - case SessionStream::Error::ConnectionReadError: - clientError = ClientError(ClientError::ConnectionReadError); - break; - case SessionStream::Error::ConnectionWriteError: - clientError = ClientError(ClientError::ConnectionWriteError); - break; - } - } - onError(clientError); - } -} - -void Client::handleNeedCredentials() { - assert(session_); - session_->sendCredentials(password_); -} - -void Client::handleDataRead(const String& data) { - onDataRead(data); -} - -void Client::handleDataWritten(const String& data) { - onDataWritten(data); -} - -} diff --git a/Swiften/Client/Client.h b/Swiften/Client/Client.h deleted file mode 100644 index 444c136..0000000 --- a/Swiften/Client/Client.h +++ /dev/null @@ -1,78 +0,0 @@ -#pragma once - -#include <boost/signals.hpp> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Network/PlatformDomainNameResolver.h" -#include "Swiften/Base/Error.h" -#include "Swiften/Client/ClientSession.h" -#include "Swiften/Client/ClientError.h" -#include "Swiften/Elements/Presence.h" -#include "Swiften/Elements/Message.h" -#include "Swiften/JID/JID.h" -#include "Swiften/Base/String.h" -#include "Swiften/Base/IDGenerator.h" -#include "Swiften/Client/StanzaChannel.h" -#include "Swiften/Queries/IQRouter.h" -#include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h" -#include "Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h" - -namespace Swift { - class TLSLayerFactory; - class ConnectionFactory; - class TimerFactory; - class ClientSession; - class BasicSessionStream; - class Connector; - - class Client : public StanzaChannel, public IQRouter, public boost::bsignals::trackable { - public: - Client(const JID& jid, const String& password); - ~Client(); - - void setCertificate(const String& certificate); - - void connect(); - void disconnect(); - - bool isAvailable(); - - virtual void sendIQ(boost::shared_ptr<IQ>); - virtual void sendMessage(boost::shared_ptr<Message>); - virtual void sendPresence(boost::shared_ptr<Presence>); - - public: - boost::signal<void (const ClientError&)> onError; - boost::signal<void ()> onConnected; - boost::signal<void (const String&)> onDataRead; - boost::signal<void (const String&)> onDataWritten; - - private: - void handleConnectorFinished(boost::shared_ptr<Connection>); - void send(boost::shared_ptr<Stanza>); - virtual String getNewIQID(); - void handleElement(boost::shared_ptr<Element>); - void handleSessionFinished(boost::shared_ptr<Error>); - void handleNeedCredentials(); - void handleDataRead(const String&); - void handleDataWritten(const String&); - - void closeConnection(); - - private: - PlatformDomainNameResolver resolver_; - JID jid_; - String password_; - IDGenerator idGenerator_; - boost::shared_ptr<Connector> connector_; - ConnectionFactory* connectionFactory_; - TimerFactory* timerFactory_; - TLSLayerFactory* tlsLayerFactory_; - FullPayloadParserFactoryCollection payloadParserFactories_; - FullPayloadSerializerCollection payloadSerializers_; - boost::shared_ptr<Connection> connection_; - boost::shared_ptr<BasicSessionStream> sessionStream_; - boost::shared_ptr<ClientSession> session_; - String certificate_; - }; -} diff --git a/Swiften/Client/ClientError.h b/Swiften/Client/ClientError.h deleted file mode 100644 index a0557d4..0000000 --- a/Swiften/Client/ClientError.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -namespace Swift { - class ClientError { - public: - enum Type { - UnknownError, - DomainNameResolveError, - ConnectionError, - ConnectionReadError, - ConnectionWriteError, - XMLError, - AuthenticationFailedError, - CompressionFailedError, - ServerVerificationFailedError, - NoSupportedAuthMechanismsError, - UnexpectedElementError, - ResourceBindError, - SessionStartError, - TLSError, - ClientCertificateLoadError, - ClientCertificateError - }; - - ClientError(Type type = UnknownError) : type_(type) {} - - Type getType() const { return type_; } - - private: - Type type_; - }; -} diff --git a/Swiften/Client/ClientSession.cpp b/Swiften/Client/ClientSession.cpp deleted file mode 100644 index 16bda40..0000000 --- a/Swiften/Client/ClientSession.cpp +++ /dev/null @@ -1,276 +0,0 @@ -#include "Swiften/Client/ClientSession.h" - -#include <boost/bind.hpp> - -#include "Swiften/Elements/ProtocolHeader.h" -#include "Swiften/Elements/StreamFeatures.h" -#include "Swiften/Elements/StartTLSRequest.h" -#include "Swiften/Elements/StartTLSFailure.h" -#include "Swiften/Elements/TLSProceed.h" -#include "Swiften/Elements/AuthRequest.h" -#include "Swiften/Elements/AuthSuccess.h" -#include "Swiften/Elements/AuthFailure.h" -#include "Swiften/Elements/AuthChallenge.h" -#include "Swiften/Elements/AuthResponse.h" -#include "Swiften/Elements/Compressed.h" -#include "Swiften/Elements/CompressFailure.h" -#include "Swiften/Elements/CompressRequest.h" -#include "Swiften/Elements/StartSession.h" -#include "Swiften/Elements/IQ.h" -#include "Swiften/Elements/ResourceBind.h" -#include "Swiften/SASL/PLAINClientAuthenticator.h" -#include "Swiften/SASL/SCRAMSHA1ClientAuthenticator.h" -#include "Swiften/Session/SessionStream.h" - -namespace Swift { - -ClientSession::ClientSession( - const JID& jid, - boost::shared_ptr<SessionStream> stream) : - localJID(jid), - state(Initial), - stream(stream), - needSessionStart(false), - authenticator(NULL) { -} - -ClientSession::~ClientSession() { -} - -void ClientSession::start() { - stream->onStreamStartReceived.connect(boost::bind(&ClientSession::handleStreamStart, shared_from_this(), _1)); - stream->onElementReceived.connect(boost::bind(&ClientSession::handleElement, shared_from_this(), _1)); - stream->onError.connect(boost::bind(&ClientSession::handleStreamError, shared_from_this(), _1)); - stream->onTLSEncrypted.connect(boost::bind(&ClientSession::handleTLSEncrypted, shared_from_this())); - - assert(state == Initial); - state = WaitingForStreamStart; - sendStreamHeader(); -} - -void ClientSession::sendStreamHeader() { - ProtocolHeader header; - header.setTo(getRemoteJID()); - stream->writeHeader(header); -} - -void ClientSession::sendElement(boost::shared_ptr<Element> element) { - stream->writeElement(element); -} - -void ClientSession::handleStreamStart(const ProtocolHeader&) { - checkState(WaitingForStreamStart); - state = Negotiating; -} - -void ClientSession::handleElement(boost::shared_ptr<Element> element) { - if (getState() == Initialized) { - onElementReceived(element); - } - else if (StreamFeatures* streamFeatures = dynamic_cast<StreamFeatures*>(element.get())) { - if (!checkState(Negotiating)) { - return; - } - - if (streamFeatures->hasStartTLS() && stream->supportsTLSEncryption()) { - state = WaitingForEncrypt; - stream->writeElement(boost::shared_ptr<StartTLSRequest>(new StartTLSRequest())); - } - else if (streamFeatures->hasCompressionMethod("zlib")) { - state = Compressing; - stream->writeElement(boost::shared_ptr<CompressRequest>(new CompressRequest("zlib"))); - } - else if (streamFeatures->hasAuthenticationMechanisms()) { - if (stream->hasTLSCertificate()) { - if (streamFeatures->hasAuthenticationMechanism("EXTERNAL")) { - state = Authenticating; - stream->writeElement(boost::shared_ptr<Element>(new AuthRequest("EXTERNAL", ""))); - } - else { - finishSession(Error::TLSClientCertificateError); - } - } - else if (streamFeatures->hasAuthenticationMechanism("SCRAM-SHA-1")) { - // FIXME: Use a real nonce - authenticator = new SCRAMSHA1ClientAuthenticator("ClientNonce"); - state = WaitingForCredentials; - onNeedCredentials(); - } - else if (streamFeatures->hasAuthenticationMechanism("PLAIN")) { - authenticator = new PLAINClientAuthenticator(); - state = WaitingForCredentials; - onNeedCredentials(); - } - else { - finishSession(Error::NoSupportedAuthMechanismsError); - } - } - else { - // Start the session - stream->setWhitespacePingEnabled(true); - - if (streamFeatures->hasSession()) { - needSessionStart = true; - } - - if (streamFeatures->hasResourceBind()) { - state = BindingResource; - boost::shared_ptr<ResourceBind> resourceBind(new ResourceBind()); - if (!localJID.getResource().isEmpty()) { - resourceBind->setResource(localJID.getResource()); - } - stream->writeElement(IQ::createRequest(IQ::Set, JID(), "session-bind", resourceBind)); - } - else if (needSessionStart) { - sendSessionStart(); - } - else { - state = Initialized; - onInitialized(); - } - } - } - else if (boost::dynamic_pointer_cast<Compressed>(element)) { - checkState(Compressing); - state = WaitingForStreamStart; - stream->addZLibCompression(); - stream->resetXMPPParser(); - sendStreamHeader(); - } - else if (boost::dynamic_pointer_cast<CompressFailure>(element)) { - finishSession(Error::CompressionFailedError); - } - else if (AuthChallenge* challenge = dynamic_cast<AuthChallenge*>(element.get())) { - checkState(Authenticating); - assert(authenticator); - if (authenticator->setChallenge(challenge->getValue())) { - stream->writeElement(boost::shared_ptr<AuthResponse>(new AuthResponse(authenticator->getResponse()))); - } - else { - finishSession(Error::AuthenticationFailedError); - } - } - else if (AuthSuccess* authSuccess = dynamic_cast<AuthSuccess*>(element.get())) { - checkState(Authenticating); - if (authenticator && !authenticator->setChallenge(authSuccess->getValue())) { - finishSession(Error::ServerVerificationFailedError); - } - else { - state = WaitingForStreamStart; - delete authenticator; - authenticator = NULL; - stream->resetXMPPParser(); - sendStreamHeader(); - } - } - else if (dynamic_cast<AuthFailure*>(element.get())) { - delete authenticator; - authenticator = NULL; - finishSession(Error::AuthenticationFailedError); - } - else if (dynamic_cast<TLSProceed*>(element.get())) { - checkState(WaitingForEncrypt); - state = Encrypting; - stream->addTLSEncryption(); - } - else if (dynamic_cast<StartTLSFailure*>(element.get())) { - finishSession(Error::TLSError); - } - else if (IQ* iq = dynamic_cast<IQ*>(element.get())) { - if (state == BindingResource) { - boost::shared_ptr<ResourceBind> resourceBind(iq->getPayload<ResourceBind>()); - if (iq->getType() == IQ::Error && iq->getID() == "session-bind") { - finishSession(Error::ResourceBindError); - } - else if (!resourceBind) { - finishSession(Error::UnexpectedElementError); - } - else if (iq->getType() == IQ::Result) { - localJID = resourceBind->getJID(); - if (!localJID.isValid()) { - finishSession(Error::ResourceBindError); - } - if (needSessionStart) { - sendSessionStart(); - } - else { - state = Initialized; - } - } - else { - finishSession(Error::UnexpectedElementError); - } - } - else if (state == StartingSession) { - if (iq->getType() == IQ::Result) { - state = Initialized; - onInitialized(); - } - else if (iq->getType() == IQ::Error) { - finishSession(Error::SessionStartError); - } - else { - finishSession(Error::UnexpectedElementError); - } - } - else { - finishSession(Error::UnexpectedElementError); - } - } - else { - // FIXME Not correct? - state = Initialized; - onInitialized(); - } -} - -void ClientSession::sendSessionStart() { - state = StartingSession; - stream->writeElement(IQ::createRequest(IQ::Set, JID(), "session-start", boost::shared_ptr<StartSession>(new StartSession()))); -} - -bool ClientSession::checkState(State state) { - if (state != state) { - finishSession(Error::UnexpectedElementError); - return false; - } - return true; -} - -void ClientSession::sendCredentials(const String& password) { - assert(WaitingForCredentials); - state = Authenticating; - authenticator->setCredentials(localJID.getNode(), password); - stream->writeElement(boost::shared_ptr<AuthRequest>(new AuthRequest(authenticator->getName(), authenticator->getResponse()))); -} - -void ClientSession::handleTLSEncrypted() { - checkState(WaitingForEncrypt); - state = WaitingForStreamStart; - stream->resetXMPPParser(); - sendStreamHeader(); -} - -void ClientSession::handleStreamError(boost::shared_ptr<Swift::Error> error) { - finishSession(error); -} - -void ClientSession::finish() { - if (stream->isAvailable()) { - stream->writeFooter(); - } - finishSession(boost::shared_ptr<Error>()); -} - -void ClientSession::finishSession(Error::Type error) { - finishSession(boost::shared_ptr<Swift::ClientSession::Error>(new Swift::ClientSession::Error(error))); -} - -void ClientSession::finishSession(boost::shared_ptr<Swift::Error> error) { - state = Finished; - stream->setWhitespacePingEnabled(false); - onFinished(error); -} - - -} diff --git a/Swiften/Client/ClientSession.h b/Swiften/Client/ClientSession.h deleted file mode 100644 index 685672e..0000000 --- a/Swiften/Client/ClientSession.h +++ /dev/null @@ -1,100 +0,0 @@ -#pragma once - -#include <boost/signal.hpp> -#include <boost/shared_ptr.hpp> -#include <boost/enable_shared_from_this.hpp> - -#include "Swiften/Base/Error.h" -#include "Swiften/Session/SessionStream.h" -#include "Swiften/Session/BasicSessionStream.h" -#include "Swiften/Base/String.h" -#include "Swiften/JID/JID.h" -#include "Swiften/Elements/Element.h" - -namespace Swift { - class ClientAuthenticator; - - class ClientSession : public boost::enable_shared_from_this<ClientSession> { - public: - enum State { - Initial, - WaitingForStreamStart, - Negotiating, - Compressing, - WaitingForEncrypt, - Encrypting, - WaitingForCredentials, - Authenticating, - BindingResource, - StartingSession, - Initialized, - Finished - }; - - struct Error : public Swift::Error { - enum Type { - AuthenticationFailedError, - CompressionFailedError, - ServerVerificationFailedError, - NoSupportedAuthMechanismsError, - UnexpectedElementError, - ResourceBindError, - SessionStartError, - TLSClientCertificateError, - TLSError, - } type; - Error(Type type) : type(type) {} - }; - - ~ClientSession(); - static boost::shared_ptr<ClientSession> create(const JID& jid, boost::shared_ptr<SessionStream> stream) { - return boost::shared_ptr<ClientSession>(new ClientSession(jid, stream)); - } - - State getState() const { - return state; - } - - void start(); - void finish(); - - void sendCredentials(const String& password); - void sendElement(boost::shared_ptr<Element> element); - - public: - boost::signal<void ()> onNeedCredentials; - boost::signal<void ()> onInitialized; - boost::signal<void (boost::shared_ptr<Swift::Error>)> onFinished; - boost::signal<void (boost::shared_ptr<Element>)> onElementReceived; - - private: - ClientSession( - const JID& jid, - boost::shared_ptr<SessionStream>); - - void finishSession(Error::Type error); - void finishSession(boost::shared_ptr<Swift::Error> error); - - JID getRemoteJID() const { - return JID("", localJID.getDomain()); - } - - void sendStreamHeader(); - void sendSessionStart(); - - void handleElement(boost::shared_ptr<Element>); - void handleStreamStart(const ProtocolHeader&); - void handleStreamError(boost::shared_ptr<Swift::Error>); - - void handleTLSEncrypted(); - - bool checkState(State); - - private: - JID localJID; - State state; - boost::shared_ptr<SessionStream> stream; - bool needSessionStart; - ClientAuthenticator* authenticator; - }; -} diff --git a/Swiften/Client/ClientXMLTracer.h b/Swiften/Client/ClientXMLTracer.h deleted file mode 100644 index 85224c8..0000000 --- a/Swiften/Client/ClientXMLTracer.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include "Swiften/Client/Client.h" - -namespace Swift { - class ClientXMLTracer { - public: - ClientXMLTracer(Client* client) { - client->onDataRead.connect(boost::bind(&ClientXMLTracer::printData, '<', _1)); - client->onDataWritten.connect(boost::bind(&ClientXMLTracer::printData, '>', _1)); - } - - private: - static void printData(char direction, const String& data) { - printLine(direction); - std::cerr << data << std::endl; - } - - static void printLine(char c) { - for (unsigned int i = 0; i < 80; ++i) { - std::cerr << c; - } - std::cerr << std::endl; - } - }; -} diff --git a/Swiften/Client/DummyStanzaChannel.h b/Swiften/Client/DummyStanzaChannel.h deleted file mode 100644 index d618167..0000000 --- a/Swiften/Client/DummyStanzaChannel.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - -#include <vector> - -#include "Swiften/Client/StanzaChannel.h" - -namespace Swift { - class DummyStanzaChannel : public StanzaChannel { - public: - DummyStanzaChannel() {} - - virtual void sendStanza(boost::shared_ptr<Stanza> stanza) { - sentStanzas.push_back(stanza); - } - - virtual void sendIQ(boost::shared_ptr<IQ> iq) { - sentStanzas.push_back(iq); - } - - virtual void sendMessage(boost::shared_ptr<Message> message) { - sentStanzas.push_back(message); - } - - virtual void sendPresence(boost::shared_ptr<Presence> presence) { - sentStanzas.push_back(presence); - } - - virtual String getNewIQID() { - return "test-id"; - } - - virtual bool isAvailable() { - return true; - } - - std::vector<boost::shared_ptr<Stanza> > sentStanzas; - }; -} diff --git a/Swiften/Client/StanzaChannel.h b/Swiften/Client/StanzaChannel.h deleted file mode 100644 index a0e291d..0000000 --- a/Swiften/Client/StanzaChannel.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include <boost/signal.hpp> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Queries/IQChannel.h" -#include "Swiften/Elements/Message.h" -#include "Swiften/Elements/Presence.h" - -namespace Swift { - class StanzaChannel : public IQChannel { - public: - virtual void sendMessage(boost::shared_ptr<Message>) = 0; - virtual void sendPresence(boost::shared_ptr<Presence>) = 0; - virtual bool isAvailable() = 0; - - boost::signal<void (boost::shared_ptr<Message>)> onMessageReceived; - boost::signal<void (boost::shared_ptr<Presence>) > onPresenceReceived; - }; -} diff --git a/Swiften/Client/UnitTest/ClientSessionTest.cpp b/Swiften/Client/UnitTest/ClientSessionTest.cpp deleted file mode 100644 index e035ba3..0000000 --- a/Swiften/Client/UnitTest/ClientSessionTest.cpp +++ /dev/null @@ -1,498 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <deque> -#include <boost/bind.hpp> -#include <boost/optional.hpp> - -#include "Swiften/Session/SessionStream.h" -#include "Swiften/Client/ClientSession.h" -#include "Swiften/Elements/StartTLSRequest.h" -#include "Swiften/Elements/StreamFeatures.h" -#include "Swiften/Elements/TLSProceed.h" -#include "Swiften/Elements/StartTLSFailure.h" -#include "Swiften/Elements/AuthRequest.h" -#include "Swiften/Elements/AuthSuccess.h" -#include "Swiften/Elements/AuthFailure.h" - -using namespace Swift; - -class ClientSessionTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(ClientSessionTest); - CPPUNIT_TEST(testStart_Error); - CPPUNIT_TEST(testStartTLS); - CPPUNIT_TEST(testStartTLS_ServerError); - CPPUNIT_TEST(testStartTLS_ConnectError); - CPPUNIT_TEST(testAuthenticate); - CPPUNIT_TEST(testAuthenticate_Unauthorized); - CPPUNIT_TEST(testAuthenticate_NoValidAuthMechanisms); - /* - CPPUNIT_TEST(testResourceBind); - CPPUNIT_TEST(testResourceBind_ChangeResource); - CPPUNIT_TEST(testResourceBind_EmptyResource); - CPPUNIT_TEST(testResourceBind_Error); - CPPUNIT_TEST(testSessionStart); - CPPUNIT_TEST(testSessionStart_Error); - CPPUNIT_TEST(testSessionStart_AfterResourceBind); - CPPUNIT_TEST(testWhitespacePing); - CPPUNIT_TEST(testReceiveElementAfterSessionStarted); - CPPUNIT_TEST(testSendElement); - */ - CPPUNIT_TEST_SUITE_END(); - - public: - void setUp() { - server = boost::shared_ptr<MockSessionStream>(new MockSessionStream()); - sessionFinishedReceived = false; - needCredentials = false; - } - - void testStart_Error() { - boost::shared_ptr<ClientSession> session(createSession()); - session->start(); - server->breakConnection(); - - CPPUNIT_ASSERT_EQUAL(ClientSession::Finished, session->getState()); - CPPUNIT_ASSERT(sessionFinishedReceived); - CPPUNIT_ASSERT(sessionFinishedError); - } - - void testStartTLS() { - boost::shared_ptr<ClientSession> session(createSession()); - session->start(); - server->receiveStreamStart(); - server->sendStreamStart(); - server->sendStreamFeaturesWithStartTLS(); - server->receiveStartTLS(); - CPPUNIT_ASSERT(!server->tlsEncrypted); - server->sendTLSProceed(); - CPPUNIT_ASSERT(server->tlsEncrypted); - server->onTLSEncrypted(); - server->receiveStreamStart(); - server->sendStreamStart(); - } - - void testStartTLS_ServerError() { - boost::shared_ptr<ClientSession> session(createSession()); - session->start(); - server->receiveStreamStart(); - server->sendStreamStart(); - server->sendStreamFeaturesWithStartTLS(); - server->receiveStartTLS(); - server->sendTLSFailure(); - - CPPUNIT_ASSERT(!server->tlsEncrypted); - CPPUNIT_ASSERT_EQUAL(ClientSession::Finished, session->getState()); - CPPUNIT_ASSERT(sessionFinishedReceived); - CPPUNIT_ASSERT(sessionFinishedError); - } - - void testStartTLS_ConnectError() { - boost::shared_ptr<ClientSession> session(createSession()); - session->start(); - server->receiveStreamStart(); - server->sendStreamStart(); - server->sendStreamFeaturesWithStartTLS(); - server->receiveStartTLS(); - server->sendTLSProceed(); - server->breakTLS(); - - CPPUNIT_ASSERT_EQUAL(ClientSession::Finished, session->getState()); - CPPUNIT_ASSERT(sessionFinishedReceived); - CPPUNIT_ASSERT(sessionFinishedError); - } - - void testAuthenticate() { - boost::shared_ptr<ClientSession> session(createSession()); - session->start(); - server->receiveStreamStart(); - server->sendStreamStart(); - server->sendStreamFeaturesWithPLAINAuthentication(); - CPPUNIT_ASSERT(needCredentials); - CPPUNIT_ASSERT_EQUAL(ClientSession::WaitingForCredentials, session->getState()); - session->sendCredentials("mypass"); - server->receiveAuthRequest("PLAIN"); - server->sendAuthSuccess(); - server->receiveStreamStart(); - } - - void testAuthenticate_Unauthorized() { - boost::shared_ptr<ClientSession> session(createSession()); - session->start(); - server->receiveStreamStart(); - server->sendStreamStart(); - server->sendStreamFeaturesWithPLAINAuthentication(); - CPPUNIT_ASSERT(needCredentials); - CPPUNIT_ASSERT_EQUAL(ClientSession::WaitingForCredentials, session->getState()); - session->sendCredentials("mypass"); - server->receiveAuthRequest("PLAIN"); - server->sendAuthFailure(); - - CPPUNIT_ASSERT_EQUAL(ClientSession::Finished, session->getState()); - CPPUNIT_ASSERT(sessionFinishedReceived); - CPPUNIT_ASSERT(sessionFinishedError); - } - - void testAuthenticate_NoValidAuthMechanisms() { - boost::shared_ptr<ClientSession> session(createSession()); - session->start(); - server->receiveStreamStart(); - server->sendStreamStart(); - server->sendStreamFeaturesWithUnknownAuthentication(); - - CPPUNIT_ASSERT_EQUAL(ClientSession::Finished, session->getState()); - CPPUNIT_ASSERT(sessionFinishedReceived); - CPPUNIT_ASSERT(sessionFinishedError); - } - - private: - boost::shared_ptr<ClientSession> createSession() { - boost::shared_ptr<ClientSession> session = ClientSession::create(JID("me@foo.com"), server); - session->onFinished.connect(boost::bind(&ClientSessionTest::handleSessionFinished, this, _1)); - session->onNeedCredentials.connect(boost::bind(&ClientSessionTest::handleSessionNeedCredentials, this)); - return session; - } - - void handleSessionFinished(boost::shared_ptr<Error> error) { - sessionFinishedReceived = true; - sessionFinishedError = error; - } - - void handleSessionNeedCredentials() { - needCredentials = true; - } - - class MockSessionStream : public SessionStream { - public: - struct Event { - Event(boost::shared_ptr<Element> element) : element(element), footer(false) {} - Event(const ProtocolHeader& header) : header(header), footer(false) {} - Event() : footer(true) {} - - boost::shared_ptr<Element> element; - boost::optional<ProtocolHeader> header; - bool footer; - }; - - MockSessionStream() : available(true), canTLSEncrypt(true), tlsEncrypted(false), compressed(false), whitespacePingEnabled(false), resetCount(0) { - } - - virtual bool isAvailable() { - return available; - } - - virtual void writeHeader(const ProtocolHeader& header) { - receivedEvents.push_back(Event(header)); - } - - virtual void writeFooter() { - receivedEvents.push_back(Event()); - } - - virtual void writeElement(boost::shared_ptr<Element> element) { - receivedEvents.push_back(Event(element)); - } - - virtual bool supportsTLSEncryption() { - return canTLSEncrypt; - } - - virtual void addTLSEncryption() { - tlsEncrypted = true; - } - - virtual void addZLibCompression() { - compressed = true; - } - - virtual void setWhitespacePingEnabled(bool enabled) { - whitespacePingEnabled = enabled; - } - - virtual void resetXMPPParser() { - resetCount++; - } - - void breakConnection() { - onError(boost::shared_ptr<SessionStream::Error>(new SessionStream::Error(SessionStream::Error::ConnectionReadError))); - } - - void breakTLS() { - onError(boost::shared_ptr<SessionStream::Error>(new SessionStream::Error(SessionStream::Error::TLSError))); - } - - - void sendStreamStart() { - ProtocolHeader header; - header.setTo("foo.com"); - return onStreamStartReceived(header); - } - - void sendStreamFeaturesWithStartTLS() { - boost::shared_ptr<StreamFeatures> streamFeatures(new StreamFeatures()); - streamFeatures->setHasStartTLS(); - onElementReceived(streamFeatures); - } - - void sendTLSProceed() { - onElementReceived(boost::shared_ptr<TLSProceed>(new TLSProceed())); - } - - void sendTLSFailure() { - onElementReceived(boost::shared_ptr<StartTLSFailure>(new StartTLSFailure())); - } - - void sendStreamFeaturesWithPLAINAuthentication() { - boost::shared_ptr<StreamFeatures> streamFeatures(new StreamFeatures()); - streamFeatures->addAuthenticationMechanism("PLAIN"); - onElementReceived(streamFeatures); - } - - void sendStreamFeaturesWithUnknownAuthentication() { - boost::shared_ptr<StreamFeatures> streamFeatures(new StreamFeatures()); - streamFeatures->addAuthenticationMechanism("UNKNOWN"); - onElementReceived(streamFeatures); - } - - void sendAuthSuccess() { - onElementReceived(boost::shared_ptr<AuthSuccess>(new AuthSuccess())); - } - - void sendAuthFailure() { - onElementReceived(boost::shared_ptr<AuthFailure>(new AuthFailure())); - } - - void receiveStreamStart() { - Event event = popEvent(); - CPPUNIT_ASSERT(event.header); - } - - void receiveStartTLS() { - Event event = popEvent(); - CPPUNIT_ASSERT(event.element); - CPPUNIT_ASSERT(boost::dynamic_pointer_cast<StartTLSRequest>(event.element)); - } - - void receiveAuthRequest(const String& mech) { - Event event = popEvent(); - CPPUNIT_ASSERT(event.element); - boost::shared_ptr<AuthRequest> request(boost::dynamic_pointer_cast<AuthRequest>(event.element)); - CPPUNIT_ASSERT(request); - CPPUNIT_ASSERT_EQUAL(mech, request->getMechanism()); - } - - Event popEvent() { - CPPUNIT_ASSERT(receivedEvents.size() > 0); - Event event = receivedEvents.front(); - receivedEvents.pop_front(); - return event; - } - - bool available; - bool canTLSEncrypt; - bool tlsEncrypted; - bool compressed; - bool whitespacePingEnabled; - int resetCount; - std::deque<Event> receivedEvents; - }; - - boost::shared_ptr<MockSessionStream> server; - bool sessionFinishedReceived; - bool needCredentials; - boost::shared_ptr<Error> sessionFinishedError; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(ClientSessionTest); - -#if 0 - void testAuthenticate() { - boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar")); - session->onNeedCredentials.connect(boost::bind(&ClientSessionTest::setNeedCredentials, this)); - getMockServer()->expectStreamStart(); - getMockServer()->sendStreamStart(); - getMockServer()->sendStreamFeaturesWithAuthentication(); - session->startSession(); - processEvents(); - CPPUNIT_ASSERT_EQUAL(ClientSession::WaitingForCredentials, session->getState()); - CPPUNIT_ASSERT(needCredentials_); - - getMockServer()->expectAuth("me", "mypass"); - getMockServer()->sendAuthSuccess(); - getMockServer()->expectStreamStart(); - getMockServer()->sendStreamStart(); - session->sendCredentials("mypass"); - CPPUNIT_ASSERT_EQUAL(ClientSession::Authenticating, session->getState()); - processEvents(); - CPPUNIT_ASSERT_EQUAL(ClientSession::Negotiating, session->getState()); - } - - void testAuthenticate_Unauthorized() { - boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar")); - getMockServer()->expectStreamStart(); - getMockServer()->sendStreamStart(); - getMockServer()->sendStreamFeaturesWithAuthentication(); - session->startSession(); - processEvents(); - - getMockServer()->expectAuth("me", "mypass"); - getMockServer()->sendAuthFailure(); - session->sendCredentials("mypass"); - processEvents(); - - CPPUNIT_ASSERT_EQUAL(ClientSession::Error, session->getState()); - CPPUNIT_ASSERT_EQUAL(ClientSession::AuthenticationFailedError, *session->getError()); - } - - void testAuthenticate_NoValidAuthMechanisms() { - boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar")); - getMockServer()->expectStreamStart(); - getMockServer()->sendStreamStart(); - getMockServer()->sendStreamFeaturesWithUnsupportedAuthentication(); - session->startSession(); - processEvents(); - - CPPUNIT_ASSERT_EQUAL(ClientSession::Error, session->getState()); - CPPUNIT_ASSERT_EQUAL(ClientSession::NoSupportedAuthMechanismsError, *session->getError()); - } - - void testResourceBind() { - boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar")); - getMockServer()->expectStreamStart(); - getMockServer()->sendStreamStart(); - getMockServer()->sendStreamFeaturesWithResourceBind(); - getMockServer()->expectResourceBind("Bar", "session-bind"); - // FIXME: Check CPPUNIT_ASSERT_EQUAL(ClientSession::BindingResource, session->getState()); - getMockServer()->sendResourceBindResponse("me@foo.com/Bar", "session-bind"); - session->startSession(); - - processEvents(); - - CPPUNIT_ASSERT_EQUAL(ClientSession::SessionStarted, session->getState()); - CPPUNIT_ASSERT_EQUAL(JID("me@foo.com/Bar"), session->getLocalJID()); - } - - void testResourceBind_ChangeResource() { - boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar")); - getMockServer()->expectStreamStart(); - getMockServer()->sendStreamStart(); - getMockServer()->sendStreamFeaturesWithResourceBind(); - getMockServer()->expectResourceBind("Bar", "session-bind"); - getMockServer()->sendResourceBindResponse("me@foo.com/Bar123", "session-bind"); - session->startSession(); - processEvents(); - - CPPUNIT_ASSERT_EQUAL(ClientSession::SessionStarted, session->getState()); - CPPUNIT_ASSERT_EQUAL(JID("me@foo.com/Bar123"), session->getLocalJID()); - } - - void testResourceBind_EmptyResource() { - boost::shared_ptr<MockSession> session(createSession("me@foo.com")); - getMockServer()->expectStreamStart(); - getMockServer()->sendStreamStart(); - getMockServer()->sendStreamFeaturesWithResourceBind(); - getMockServer()->expectResourceBind("", "session-bind"); - getMockServer()->sendResourceBindResponse("me@foo.com/NewResource", "session-bind"); - session->startSession(); - processEvents(); - - CPPUNIT_ASSERT_EQUAL(ClientSession::SessionStarted, session->getState()); - CPPUNIT_ASSERT_EQUAL(JID("me@foo.com/NewResource"), session->getLocalJID()); - } - - void testResourceBind_Error() { - boost::shared_ptr<MockSession> session(createSession("me@foo.com")); - getMockServer()->expectStreamStart(); - getMockServer()->sendStreamStart(); - getMockServer()->sendStreamFeaturesWithResourceBind(); - getMockServer()->expectResourceBind("", "session-bind"); - getMockServer()->sendError("session-bind"); - session->startSession(); - processEvents(); - - CPPUNIT_ASSERT_EQUAL(ClientSession::Error, session->getState()); - CPPUNIT_ASSERT_EQUAL(ClientSession::ResourceBindError, *session->getError()); - } - - void testSessionStart() { - boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar")); - session->onSessionStarted.connect(boost::bind(&ClientSessionTest::setSessionStarted, this)); - getMockServer()->expectStreamStart(); - getMockServer()->sendStreamStart(); - getMockServer()->sendStreamFeaturesWithSession(); - getMockServer()->expectSessionStart("session-start"); - // FIXME: Check CPPUNIT_ASSERT_EQUAL(ClientSession::StartingSession, session->getState()); - getMockServer()->sendSessionStartResponse("session-start"); - session->startSession(); - processEvents(); - - CPPUNIT_ASSERT_EQUAL(ClientSession::SessionStarted, session->getState()); - CPPUNIT_ASSERT(sessionStarted_); - } - - void testSessionStart_Error() { - boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar")); - getMockServer()->expectStreamStart(); - getMockServer()->sendStreamStart(); - getMockServer()->sendStreamFeaturesWithSession(); - getMockServer()->expectSessionStart("session-start"); - getMockServer()->sendError("session-start"); - session->startSession(); - processEvents(); - - CPPUNIT_ASSERT_EQUAL(ClientSession::Error, session->getState()); - CPPUNIT_ASSERT_EQUAL(ClientSession::SessionStartError, *session->getError()); - } - - void testSessionStart_AfterResourceBind() { - boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar")); - session->onSessionStarted.connect(boost::bind(&ClientSessionTest::setSessionStarted, this)); - getMockServer()->expectStreamStart(); - getMockServer()->sendStreamStart(); - getMockServer()->sendStreamFeaturesWithResourceBindAndSession(); - getMockServer()->expectResourceBind("Bar", "session-bind"); - getMockServer()->sendResourceBindResponse("me@foo.com/Bar", "session-bind"); - getMockServer()->expectSessionStart("session-start"); - getMockServer()->sendSessionStartResponse("session-start"); - session->startSession(); - processEvents(); - - CPPUNIT_ASSERT_EQUAL(ClientSession::SessionStarted, session->getState()); - CPPUNIT_ASSERT(sessionStarted_); - } - - void testWhitespacePing() { - boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar")); - getMockServer()->expectStreamStart(); - getMockServer()->sendStreamStart(); - getMockServer()->sendStreamFeatures(); - session->startSession(); - processEvents(); - CPPUNIT_ASSERT(session->getWhitespacePingLayer()); - } - - void testReceiveElementAfterSessionStarted() { - boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar")); - getMockServer()->expectStreamStart(); - getMockServer()->sendStreamStart(); - getMockServer()->sendStreamFeatures(); - session->startSession(); - processEvents(); - - getMockServer()->expectMessage(); - session->sendElement(boost::shared_ptr<Message>(new Message())); - } - - void testSendElement() { - boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar")); - session->onElementReceived.connect(boost::bind(&ClientSessionTest::addReceivedElement, this, _1)); - getMockServer()->expectStreamStart(); - getMockServer()->sendStreamStart(); - getMockServer()->sendStreamFeatures(); - getMockServer()->sendMessage(); - session->startSession(); - processEvents(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(receivedElements_.size())); - CPPUNIT_ASSERT(boost::dynamic_pointer_cast<Message>(receivedElements_[0])); - } -#endif diff --git a/Swiften/Compress/UnitTest/ZLibCompressorTest.cpp b/Swiften/Compress/UnitTest/ZLibCompressorTest.cpp deleted file mode 100644 index 7235f8e..0000000 --- a/Swiften/Compress/UnitTest/ZLibCompressorTest.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Compress/ZLibCompressor.h" - -using namespace Swift; - - -class ZLibCompressorTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(ZLibCompressorTest); - CPPUNIT_TEST(testProcess); - CPPUNIT_TEST(testProcess_Twice); - CPPUNIT_TEST_SUITE_END(); - - public: - ZLibCompressorTest() {} - - void testProcess() { - ZLibCompressor testling; - ByteArray result = testling.process("foo"); - - CPPUNIT_ASSERT_EQUAL(ByteArray("\x78\xda\x4a\xcb\xcf\x07\x00\x00\x00\xff\xff", 11), result); - } - - void testProcess_Twice() { - ZLibCompressor testling; - testling.process("foo"); - ByteArray result = testling.process("bar"); - - CPPUNIT_ASSERT_EQUAL(ByteArray("\x4a\x4a\x2c\x02\x00\x00\x00\xff\xff",9), result); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(ZLibCompressorTest); diff --git a/Swiften/Compress/UnitTest/ZLibDecompressorTest.cpp b/Swiften/Compress/UnitTest/ZLibDecompressorTest.cpp deleted file mode 100644 index 871a630..0000000 --- a/Swiften/Compress/UnitTest/ZLibDecompressorTest.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Compress/ZLibDecompressor.h" -#include "Swiften/Compress/ZLibCompressor.h" -#include "Swiften/Compress/ZLibException.h" - -using namespace Swift; - - -class ZLibDecompressorTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(ZLibDecompressorTest); - CPPUNIT_TEST(testProcess); - CPPUNIT_TEST(testProcess_Twice); - CPPUNIT_TEST(testProcess_Invalid); - CPPUNIT_TEST(testProcess_Huge); - CPPUNIT_TEST(testProcess_ChunkSize); - CPPUNIT_TEST_SUITE_END(); - - public: - ZLibDecompressorTest() {} - - void testProcess() { - ZLibDecompressor testling; - ByteArray result = testling.process(ByteArray("\x78\xda\x4a\xcb\xcf\x07\x00\x00\x00\xff\xff", 11)); - - CPPUNIT_ASSERT_EQUAL(ByteArray("foo"), result); - } - - void testProcess_Twice() { - ZLibDecompressor testling; - testling.process(ByteArray("\x78\xda\x4a\xcb\xcf\x07\x00\x00\x00\xff\xff", 11)); - ByteArray result = testling.process(ByteArray("\x4a\x4a\x2c\x02\x00\x00\x00\xff\xff", 9)); - - CPPUNIT_ASSERT_EQUAL(ByteArray("bar"), result); - } - - void testProcess_Invalid() { - ZLibDecompressor testling; - CPPUNIT_ASSERT_THROW(testling.process(ByteArray("invalid")), ZLibException); - } - - void testProcess_Huge() { - std::vector<char> data; - data.reserve(2048); - for (unsigned int i = 0; i < 2048; ++i) { - data.push_back(static_cast<char>(i)); - } - ByteArray original(&data[0], data.size()); - ByteArray compressed = ZLibCompressor().process(original); - ByteArray decompressed = ZLibDecompressor().process(compressed); - - CPPUNIT_ASSERT_EQUAL(original, decompressed); - } - - void testProcess_ChunkSize() { - std::vector<char> data; - data.reserve(1024); - for (unsigned int i = 0; i < 1024; ++i) { - data.push_back(static_cast<char>(i)); - } - ByteArray original(&data[0], data.size()); - ByteArray compressed = ZLibCompressor().process(original); - ByteArray decompressed = ZLibDecompressor().process(compressed); - - CPPUNIT_ASSERT_EQUAL(original, decompressed); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(ZLibDecompressorTest); diff --git a/Swiften/Compress/ZLibCodecompressor.cpp b/Swiften/Compress/ZLibCodecompressor.cpp deleted file mode 100644 index a14f09d..0000000 --- a/Swiften/Compress/ZLibCodecompressor.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "Swiften/Compress/ZLibCodecompressor.h" - -#include <cassert> - -#include "Swiften/Compress/ZLibException.h" - -namespace Swift { - -static const int CHUNK_SIZE = 1024; // If you change this, also change the unittest - -ZLibCodecompressor::ZLibCodecompressor() { - stream_.zalloc = Z_NULL; - stream_.zfree = Z_NULL; - stream_.opaque = Z_NULL; -} - -ZLibCodecompressor::~ZLibCodecompressor() { -} - -ByteArray ZLibCodecompressor::process(const ByteArray& input) { - ByteArray output; - stream_.avail_in = input.getSize(); - stream_.next_in = reinterpret_cast<Bytef*>(const_cast<char*>(input.getData())); - int outputPosition = 0; - do { - output.resize(outputPosition + CHUNK_SIZE); - stream_.avail_out = CHUNK_SIZE; - stream_.next_out = reinterpret_cast<Bytef*>(output.getData() + outputPosition); - int result = processZStream(); - if (result != Z_OK && result != Z_BUF_ERROR) { - throw ZLibException(/* stream_.msg */); - } - outputPosition += CHUNK_SIZE; - } - while (stream_.avail_out == 0); - if (stream_.avail_in != 0) { - throw ZLibException(); - } - output.resize(outputPosition - stream_.avail_out); - return output; -} - -} diff --git a/Swiften/Compress/ZLibCodecompressor.h b/Swiften/Compress/ZLibCodecompressor.h deleted file mode 100644 index dd032fa..0000000 --- a/Swiften/Compress/ZLibCodecompressor.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef SWIFTEN_ZLibCodecompressor_H -#define SWIFTEN_ZLibCodecompressor_H - -#include <zlib.h> - -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - class ZLibCodecompressor { - public: - ZLibCodecompressor(); - virtual ~ZLibCodecompressor(); - - ByteArray process(const ByteArray& data); - virtual int processZStream() = 0; - - protected: - z_stream stream_; - }; -} - -#endif diff --git a/Swiften/Compress/ZLibCompressor.h b/Swiften/Compress/ZLibCompressor.h deleted file mode 100644 index b5bace6..0000000 --- a/Swiften/Compress/ZLibCompressor.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef SWIFTEN_ZLibCompressor_H -#define SWIFTEN_ZLibCompressor_H - -#include <cassert> - -#include "Swiften/Compress/ZLibCodecompressor.h" -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - class ZLibCompressor : public ZLibCodecompressor { - public: - ZLibCompressor() { - int result = deflateInit(&stream_, COMPRESSION_LEVEL); - assert(result == Z_OK); - (void) result; - } - - ~ZLibCompressor() { - deflateEnd(&stream_); - } - - virtual int processZStream() { - return deflate(&stream_, Z_SYNC_FLUSH); - } - - private: - static const int COMPRESSION_LEVEL = 9; - }; -} - -#endif diff --git a/Swiften/Compress/ZLibDecompressor.h b/Swiften/Compress/ZLibDecompressor.h deleted file mode 100644 index 808feb2..0000000 --- a/Swiften/Compress/ZLibDecompressor.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef SWIFTEN_ZLibDecompressor_H -#define SWIFTEN_ZLibDecompressor_H - -#include <cassert> - -#include "Swiften/Compress/ZLibCodecompressor.h" -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - class ZLibDecompressor : public ZLibCodecompressor { - public: - ZLibDecompressor() { - int result = inflateInit(&stream_); - assert(result == Z_OK); - (void) result; - } - - ~ZLibDecompressor() { - inflateEnd(&stream_); - } - - virtual int processZStream() { - return inflate(&stream_, Z_SYNC_FLUSH); - } - }; -} - -#endif diff --git a/Swiften/Compress/ZLibException.h b/Swiften/Compress/ZLibException.h deleted file mode 100644 index f16b4ed..0000000 --- a/Swiften/Compress/ZLibException.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef SWIFTEN_ZLIBEXCEPTION_H -#define SWIFTEN_ZLIBEXCEPTION_H - -namespace Swift { - class ZLibException { - public: - ZLibException() {} - }; -} - -#endif diff --git a/Swiften/Disco/CapsInfoGenerator.cpp b/Swiften/Disco/CapsInfoGenerator.cpp deleted file mode 100644 index 8d9e407..0000000 --- a/Swiften/Disco/CapsInfoGenerator.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "Swiften/Disco/CapsInfoGenerator.h" - -#include <algorithm> - -#include "Swiften/Base/foreach.h" -#include "Swiften/Elements/DiscoInfo.h" -#include "Swiften/StringCodecs/SHA1.h" -#include "Swiften/StringCodecs/Base64.h" - -namespace Swift { - -CapsInfoGenerator::CapsInfoGenerator(const String& node) : node_(node) { -} - -CapsInfo CapsInfoGenerator::generateCapsInfo(const DiscoInfo& discoInfo) const { - String serializedCaps; - - std::vector<DiscoInfo::Identity> identities(discoInfo.getIdentities()); - std::sort(identities.begin(), identities.end()); - foreach (const DiscoInfo::Identity& identity, identities) { - serializedCaps += identity.getCategory() + "/" + identity.getType() + "/" + identity.getLanguage() + "/" + identity.getName() + "<"; - } - - std::vector<String> features(discoInfo.getFeatures()); - std::sort(features.begin(), features.end()); - foreach (const String& feature, features) { - serializedCaps += feature + "<"; - } - - String version(Base64::encode(SHA1::getHash(serializedCaps))); - return CapsInfo(node_, version, "sha-1"); -} - -} diff --git a/Swiften/Disco/CapsInfoGenerator.h b/Swiften/Disco/CapsInfoGenerator.h deleted file mode 100644 index 66949ab..0000000 --- a/Swiften/Disco/CapsInfoGenerator.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef SWIFTEN_CapsInfoGenerator_H -#define SWIFTEN_CapsInfoGenerator_H - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/CapsInfo.h" - -namespace Swift { - class DiscoInfo; - - class CapsInfoGenerator { - public: - CapsInfoGenerator(const String& node); - - CapsInfo generateCapsInfo(const DiscoInfo& discoInfo) const; - - private: - String node_; - }; -} - -#endif diff --git a/Swiften/Disco/UnitTest/CapsInfoGeneratorTest.cpp b/Swiften/Disco/UnitTest/CapsInfoGeneratorTest.cpp deleted file mode 100644 index 94b9913..0000000 --- a/Swiften/Disco/UnitTest/CapsInfoGeneratorTest.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Elements/DiscoInfo.h" -#include "Swiften/Disco/CapsInfoGenerator.h" - -using namespace Swift; - -class CapsInfoGeneratorTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(CapsInfoGeneratorTest); - CPPUNIT_TEST(testGenerate_XEP0115SimpleExample); - CPPUNIT_TEST_SUITE_END(); - - public: - CapsInfoGeneratorTest() {} - - void testGenerate_XEP0115SimpleExample() { - DiscoInfo discoInfo; - discoInfo.addIdentity(DiscoInfo::Identity("Exodus 0.9.1", "client", "pc")); - discoInfo.addFeature("http://jabber.org/protocol/disco#items"); - discoInfo.addFeature("http://jabber.org/protocol/caps"); - discoInfo.addFeature("http://jabber.org/protocol/disco#info"); - discoInfo.addFeature("http://jabber.org/protocol/muc"); - - CapsInfoGenerator testling("http://code.google.com/p/exodus"); - CapsInfo result = testling.generateCapsInfo(discoInfo); - - CPPUNIT_ASSERT_EQUAL(String("http://code.google.com/p/exodus"), result.getNode()); - CPPUNIT_ASSERT_EQUAL(String("sha-1"), result.getHash()); - CPPUNIT_ASSERT_EQUAL(String("QgayPKawpkPSDYmwT/WM94uAlu0="), result.getVersion()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(CapsInfoGeneratorTest); diff --git a/Swiften/Elements/AuthChallenge.h b/Swiften/Elements/AuthChallenge.h deleted file mode 100644 index b8a9297..0000000 --- a/Swiften/Elements/AuthChallenge.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include "Swiften/Base/ByteArray.h" -#include "Swiften/Elements/Element.h" - -namespace Swift { - class AuthChallenge : public Element { - public: - AuthChallenge(const ByteArray& value = "") : value(value) { - } - - const ByteArray& getValue() const { - return value; - } - - void setValue(const ByteArray& value) { - this->value = value; - } - - private: - ByteArray value; - }; -} diff --git a/Swiften/Elements/AuthFailure.h b/Swiften/Elements/AuthFailure.h deleted file mode 100644 index b1857b3..0000000 --- a/Swiften/Elements/AuthFailure.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef SWIFTEN_AuthFailure_H -#define SWIFTEN_AuthFailure_H - -#include "Swiften/Elements/Element.h" - -namespace Swift { - class AuthFailure : public Element { - public: - AuthFailure() {} - }; -} - -#endif diff --git a/Swiften/Elements/AuthRequest.h b/Swiften/Elements/AuthRequest.h deleted file mode 100644 index 1f49175..0000000 --- a/Swiften/Elements/AuthRequest.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef SWIFTEN_AuthRequest_H -#define SWIFTEN_AuthRequest_H - -#include "Swiften/Base/ByteArray.h" -#include "Swiften/Elements/Element.h" - -namespace Swift { - class AuthRequest : public Element { - public: - AuthRequest(const String& mechanism = "", const ByteArray& message = "") : - mechanism_(mechanism), message_(message) { - } - - const ByteArray& getMessage() const { - return message_; - } - - void setMessage(const ByteArray& message) { - message_ = message; - } - - const String& getMechanism() const { - return mechanism_; - } - - void setMechanism(const String& mechanism) { - mechanism_ = mechanism; - } - - private: - String mechanism_; - ByteArray message_; - }; -} - -#endif diff --git a/Swiften/Elements/AuthResponse.h b/Swiften/Elements/AuthResponse.h deleted file mode 100644 index 8a0679f..0000000 --- a/Swiften/Elements/AuthResponse.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include "Swiften/Base/ByteArray.h" -#include "Swiften/Elements/Element.h" - -namespace Swift { - class AuthResponse : public Element { - public: - AuthResponse(const ByteArray& value = "") : value(value) { - } - - const ByteArray& getValue() const { - return value; - } - - void setValue(const ByteArray& value) { - this->value = value; - } - - private: - ByteArray value; - }; -} diff --git a/Swiften/Elements/AuthSuccess.h b/Swiften/Elements/AuthSuccess.h deleted file mode 100644 index 1db1729..0000000 --- a/Swiften/Elements/AuthSuccess.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include "Swiften/Elements/Element.h" -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - class AuthSuccess : public Element { - public: - AuthSuccess() {} - - const ByteArray& getValue() const { - return value; - } - - void setValue(const ByteArray& value) { - this->value = value; - } - - private: - ByteArray value; - }; -} diff --git a/Swiften/Elements/Body.h b/Swiften/Elements/Body.h deleted file mode 100644 index d78cecf..0000000 --- a/Swiften/Elements/Body.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef SWIFTEN_Body_H -#define SWIFTEN_Body_H - -#include "Swiften/Elements/Payload.h" -#include "Swiften/Base/String.h" - -namespace Swift { - class Body : public Payload { - public: - Body(const String& text = "") : text_(text) { - } - - void setText(const String& text) { - text_ = text; - } - - const String& getText() const { - return text_; - } - - private: - String text_; - }; -} - -#endif diff --git a/Swiften/Elements/CapsInfo.h b/Swiften/Elements/CapsInfo.h deleted file mode 100644 index 4b478aa..0000000 --- a/Swiften/Elements/CapsInfo.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef SWIFTEN_CapsInfo_H -#define SWIFTEN_CapsInfo_H - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class CapsInfo : public Payload { - public: - CapsInfo(const String& node, const String& version, const String& hash = "sha-1") : node_(node), version_(version), hash_(hash) {} - - const String& getNode() const { return node_; } - const String& getVersion() const { return version_; } - const String& getHash() const { return hash_; } - - private: - String node_; - String version_; - String hash_; - }; -} - -#endif diff --git a/Swiften/Elements/ChatState.h b/Swiften/Elements/ChatState.h deleted file mode 100644 index 3378cc3..0000000 --- a/Swiften/Elements/ChatState.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class ChatState : public Payload { - public: - enum ChatStateType {Active, Composing, Paused, Inactive, Gone}; - ChatState(ChatStateType state = Active) { - state_ = state; - } - - ChatStateType getChatState() { return state_; } - void setChatState(ChatStateType state) {state_ = state;} - - private: - ChatStateType state_; - }; -} diff --git a/Swiften/Elements/CompressFailure.h b/Swiften/Elements/CompressFailure.h deleted file mode 100644 index 880f71a..0000000 --- a/Swiften/Elements/CompressFailure.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef SWIFTEN_CompressFailure_H -#define SWIFTEN_CompressFailure_H - -#include "Swiften/Elements/Element.h" - -namespace Swift { - class CompressFailure : public Element { - public: - CompressFailure() {} - }; -} - -#endif diff --git a/Swiften/Elements/CompressRequest.h b/Swiften/Elements/CompressRequest.h deleted file mode 100644 index 53c0805..0000000 --- a/Swiften/Elements/CompressRequest.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef SWIFTEN_CompressRequest_H -#define SWIFTEN_CompressRequest_H - -#include "Swiften/Elements/Element.h" - -namespace Swift { - class CompressRequest : public Element - { - public: - CompressRequest(const String& method = "") : method_(method) {} - - const String& getMethod() const { - return method_; - } - - void setMethod(const String& method) { - method_ = method; - } - - private: - String method_; - }; -} - -#endif diff --git a/Swiften/Elements/Compressed.h b/Swiften/Elements/Compressed.h deleted file mode 100644 index 37113d8..0000000 --- a/Swiften/Elements/Compressed.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_COMPRESSED_H -#define SWIFTEN_COMPRESSED_H - -#include "Swiften/Elements/Element.h" - -namespace Swift { - class Compressed : public Element - { - public: - Compressed() {} - }; -} - -#endif diff --git a/Swiften/Elements/DiscoInfo.cpp b/Swiften/Elements/DiscoInfo.cpp deleted file mode 100644 index 63ee051..0000000 --- a/Swiften/Elements/DiscoInfo.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include "Swiften/Elements/DiscoInfo.h" - -namespace Swift { - -bool DiscoInfo::Identity::operator<(const Identity& other) const { - if (category_ == other.category_) { - if (type_ == other.type_) { - if (lang_ == other.lang_) { - return name_ < other.name_; - } - else { - return lang_ < other.lang_; - } - } - else { - return type_ < other.type_; - } - } - else { - return category_ < other.category_; - } -} - -const std::string DiscoInfo::SecurityLabels = "urn:xmpp:sec-label:0"; -} diff --git a/Swiften/Elements/DiscoInfo.h b/Swiften/Elements/DiscoInfo.h deleted file mode 100644 index 8caeaf9..0000000 --- a/Swiften/Elements/DiscoInfo.h +++ /dev/null @@ -1,83 +0,0 @@ -#ifndef SWIFTEN_DiscoInfo_H -#define SWIFTEN_DiscoInfo_H - -#include <vector> -#include <algorithm> - -#include "Swiften/Elements/Payload.h" -#include "Swiften/Base/String.h" - -namespace Swift { - class DiscoInfo : public Payload { - public: - const static std::string SecurityLabels; - class Identity { - public: - Identity(const String& name, const String& category = "client", const String& type = "pc", const String& lang = "") : name_(name), category_(category), type_(type), lang_(lang) { - } - - const String& getCategory() const { - return category_; - } - - const String& getType() const { - return type_; - } - - const String& getLanguage() const { - return lang_; - } - - const String& getName() const { - return name_; - } - - // Sorted according to XEP-115 rules - bool operator<(const Identity& other) const; - - private: - String name_; - String category_; - String type_; - String lang_; - }; - - DiscoInfo() { - } - - const String& getNode() const { - return node_; - } - - void setNode(const String& node) { - node_ = node; - } - - const std::vector<Identity> getIdentities() const { - return identities_; - } - - void addIdentity(const Identity& identity) { - identities_.push_back(identity); - } - - const std::vector<String>& getFeatures() const { - return features_; - } - - void addFeature(const String& feature) { - features_.push_back(feature); - } - - bool hasFeature(const String& feature) const { - return std::find(features_.begin(), features_.end(), feature) != features_.end(); - } - - private: - String node_; - std::vector<Identity> identities_; - std::vector<String> features_; - }; -} - -#endif diff --git a/Swiften/Elements/Element.cpp b/Swiften/Elements/Element.cpp deleted file mode 100644 index a62aad9..0000000 --- a/Swiften/Elements/Element.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Elements/Element.h" - -namespace Swift { - -Element::~Element() { -} - -} diff --git a/Swiften/Elements/Element.h b/Swiften/Elements/Element.h deleted file mode 100644 index d1e9c6a..0000000 --- a/Swiften/Elements/Element.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef SWIFTEN_ELEMENT_H -#define SWIFTEN_ELEMENT_H - -namespace Swift { - class Element { - public: - virtual ~Element(); - }; -} - -#endif diff --git a/Swiften/Elements/ErrorPayload.h b/Swiften/Elements/ErrorPayload.h deleted file mode 100644 index 32fd067..0000000 --- a/Swiften/Elements/ErrorPayload.h +++ /dev/null @@ -1,67 +0,0 @@ -#pragma once - -#include "Swiften/Elements/Payload.h" -#include "Swiften/Base/String.h" - -namespace Swift { - class ErrorPayload : public Payload { - public: - enum Type { Cancel, Continue, Modify, Auth, Wait }; - - enum Condition { - BadRequest, - Conflict, - FeatureNotImplemented, - Forbidden, - Gone, - InternalServerError, - ItemNotFound, - JIDMalformed, - NotAcceptable, - NotAllowed, - NotAuthorized, - PaymentRequired, - RecipientUnavailable, - Redirect, - RegistrationRequired, - RemoteServerNotFound, - RemoteServerTimeout, - ResourceConstraint, - ServiceUnavailable, - SubscriptionRequired, - UndefinedCondition, - UnexpectedRequest - }; - - ErrorPayload(Condition condition = UndefinedCondition, Type type = Cancel, const String& text = String()) : type_(type), condition_(condition), text_(text) { } - - Type getType() const { - return type_; - } - - void setType(Type type) { - type_ = type; - } - - Condition getCondition() const { - return condition_; - } - - void setCondition(Condition condition) { - condition_ = condition; - } - - void setText(const String& text) { - text_ = text; - } - - const String& getText() const { - return text_; - } - - private: - Type type_; - Condition condition_; - String text_; - }; -} diff --git a/Swiften/Elements/IQ.cpp b/Swiften/Elements/IQ.cpp deleted file mode 100644 index 53dec53..0000000 --- a/Swiften/Elements/IQ.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "Swiften/Elements/IQ.h" - -namespace Swift { - -boost::shared_ptr<IQ> IQ::createRequest( - Type type, const JID& to, const String& id, boost::shared_ptr<Payload> payload) { - boost::shared_ptr<IQ> iq(new IQ(type)); - if (to.isValid()) { - iq->setTo(to); - } - iq->setID(id); - if (payload) { - iq->addPayload(payload); - } - return iq; -} - -boost::shared_ptr<IQ> IQ::createResult( - const JID& to, const String& id, boost::shared_ptr<Payload> payload) { - boost::shared_ptr<IQ> iq(new IQ(Result)); - iq->setTo(to); - iq->setID(id); - if (payload) { - iq->addPayload(payload); - } - return iq; -} - -boost::shared_ptr<IQ> IQ::createError(const JID& to, const String& id, ErrorPayload::Condition condition, ErrorPayload::Type type) { - boost::shared_ptr<IQ> iq(new IQ(IQ::Error)); - iq->setTo(to); - iq->setID(id); - iq->addPayload(boost::shared_ptr<Swift::ErrorPayload>(new Swift::ErrorPayload(condition, type))); - return iq; -} - -} diff --git a/Swiften/Elements/IQ.h b/Swiften/Elements/IQ.h deleted file mode 100644 index 80c2913..0000000 --- a/Swiften/Elements/IQ.h +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#include "Swiften/Elements/Stanza.h" -#include "Swiften/Elements/ErrorPayload.h" - -namespace Swift -{ - class IQ : public Stanza - { - public: - enum Type { Get, Set, Result, Error }; - - IQ(Type type = Get) : type_(type) { } - - Type getType() const { return type_; } - void setType(Type type) { type_ = type; } - - static boost::shared_ptr<IQ> createRequest( - Type type, - const JID& to, - const String& id, - boost::shared_ptr<Payload> payload); - static boost::shared_ptr<IQ> createResult( - const JID& to, - const String& id, - boost::shared_ptr<Payload> payload = boost::shared_ptr<Payload>()); - static boost::shared_ptr<IQ> createError( - const JID& to, - const String& id, - ErrorPayload::Condition condition, - ErrorPayload::Type type); - - private: - Type type_; - }; -} diff --git a/Swiften/Elements/MUCPayload.h b/Swiften/Elements/MUCPayload.h deleted file mode 100644 index 97932a1..0000000 --- a/Swiften/Elements/MUCPayload.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class MUCPayload : public Payload { - public: - MUCPayload() { - } - }; -} diff --git a/Swiften/Elements/Message.h b/Swiften/Elements/Message.h deleted file mode 100644 index 6d9171f..0000000 --- a/Swiften/Elements/Message.h +++ /dev/null @@ -1,43 +0,0 @@ -#pragma once - -#include <boost/optional.hpp> - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Body.h" -#include "Swiften/Elements/ErrorPayload.h" -#include "Swiften/Elements/Stanza.h" - -namespace Swift -{ - class Message : public Stanza - { - public: - enum Type { Normal, Chat, Error, Groupchat, Headline }; - - Message() : type_(Chat) { } - - String getBody() const { - boost::shared_ptr<Body> body(getPayload<Body>()); - if (body) { - return body->getText(); - } - return ""; - } - - void setBody(const String& body) { - updatePayload(boost::shared_ptr<Body>(new Body(body))); - } - - bool isError() { - boost::shared_ptr<Swift::ErrorPayload> error(getPayload<Swift::ErrorPayload>()); - return getType() == Message::Error || error; - } - - Type getType() const { return type_; } - void setType(Type type) { type_ = type; } - - private: - String body_; - Type type_; - }; -} diff --git a/Swiften/Elements/Payload.cpp b/Swiften/Elements/Payload.cpp deleted file mode 100644 index d929fad..0000000 --- a/Swiften/Elements/Payload.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Elements/Payload.h" - -namespace Swift { - -Payload::~Payload() { -} - -} diff --git a/Swiften/Elements/Payload.h b/Swiften/Elements/Payload.h deleted file mode 100644 index 829dc24..0000000 --- a/Swiften/Elements/Payload.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef SWIFTEN_PAYLOAD_H -#define SWIFTEN_PAYLOAD_H - -namespace Swift { - class Payload { - public: - virtual ~Payload(); - }; -} - -#endif diff --git a/Swiften/Elements/Presence.h b/Swiften/Elements/Presence.h deleted file mode 100644 index f748e44..0000000 --- a/Swiften/Elements/Presence.h +++ /dev/null @@ -1,62 +0,0 @@ -#pragma once - -#include "Swiften/Elements/Stanza.h" -#include "Swiften/Elements/Status.h" -#include "Swiften/Elements/StatusShow.h" -#include "Swiften/Elements/Priority.h" - -namespace Swift { - class Presence : public Stanza - { - public: - enum Type { Available, Error, Probe, Subscribe, Subscribed, Unavailable, Unsubscribe, Unsubscribed }; - - Presence() : type_(Available) /*, showType_(Online)*/ {} - Presence(const String& status) : type_(Available) { - setStatus(status); - } - - Type getType() const { return type_; } - void setType(Type type) { type_ = type; } - - StatusShow::Type getShow() const { - boost::shared_ptr<StatusShow> show(getPayload<StatusShow>()); - if (show) { - return show->getType(); - } - return type_ == Available ? StatusShow::Online : StatusShow::None; - } - - void setShow(const StatusShow::Type &show) { - updatePayload(boost::shared_ptr<StatusShow>(new StatusShow(show))); - } - - String getStatus() const { - boost::shared_ptr<Status> status(getPayload<Status>()); - if (status) { - return status->getText(); - } - return ""; - } - - void setStatus(const String& status) { - updatePayload(boost::shared_ptr<Status>(new Status(status))); - } - - int getPriority() const { - boost::shared_ptr<Priority> priority(getPayload<Priority>()); - return (priority ? priority->getPriority() : 0); - } - - void setPriority(int priority) { - updatePayload(boost::shared_ptr<Priority>(new Priority(priority))); - } - - boost::shared_ptr<Presence> clone() const { - return boost::shared_ptr<Presence>(new Presence(*this)); - } - - private: - Presence::Type type_; - }; -} diff --git a/Swiften/Elements/Priority.h b/Swiften/Elements/Priority.h deleted file mode 100644 index fd6080e..0000000 --- a/Swiften/Elements/Priority.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef SWIFTEN_Priority_H -#define SWIFTEN_Priority_H - -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class Priority : public Payload { - public: - Priority(int priority = 0) : priority_(priority) { - } - - void setPriority(int priority) { - priority_ = priority; - } - - int getPriority() const { - return priority_; - } - - private: - int priority_; - }; -} - -#endif diff --git a/Swiften/Elements/PrivateStorage.h b/Swiften/Elements/PrivateStorage.h deleted file mode 100644 index 93f1cfe..0000000 --- a/Swiften/Elements/PrivateStorage.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class PrivateStorage : public Payload { - public: - PrivateStorage(boost::shared_ptr<Payload> payload = boost::shared_ptr<Payload>()) : payload(payload) { - } - - boost::shared_ptr<Payload> getPayload() const { - return payload; - } - - void setPayload(boost::shared_ptr<Payload> p) { - payload = p; - } - - private: - boost::shared_ptr<Payload> payload; - }; -} diff --git a/Swiften/Elements/ProtocolHeader.h b/Swiften/Elements/ProtocolHeader.h deleted file mode 100644 index da64811..0000000 --- a/Swiften/Elements/ProtocolHeader.h +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" - -namespace Swift { - class ProtocolHeader { - public: - ProtocolHeader() : version("1.0") {} - - const String& getTo() const { return to; } - void setTo(const String& a) { - to = a; - } - - const String& getFrom() const { return from; } - void setFrom(const String& a) { - from = a; - } - - const String& getVersion() const { return version; } - void setVersion(const String& a) { - version = a; - } - - const String& getID() const { return id; } - void setID(const String& a) { - id = a; - } - - private: - String to; - String from; - String id; - String version; - }; -} diff --git a/Swiften/Elements/RawXMLPayload.h b/Swiften/Elements/RawXMLPayload.h deleted file mode 100644 index c2ee439..0000000 --- a/Swiften/Elements/RawXMLPayload.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class RawXMLPayload : public Payload { - public: - RawXMLPayload() {} - - void setRawXML(const String& data) { - rawXML_ = data; - } - - const String& getRawXML() const { - return rawXML_; - } - - private: - String rawXML_; - }; -} diff --git a/Swiften/Elements/ResourceBind.h b/Swiften/Elements/ResourceBind.h deleted file mode 100644 index 3b6c632..0000000 --- a/Swiften/Elements/ResourceBind.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef SWIFTEN_ResourceBind_H -#define SWIFTEN_ResourceBind_H - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Payload.h" -#include "Swiften/JID/JID.h" - -namespace Swift { - class ResourceBind : public Payload - { - public: - ResourceBind() {} - - void setJID(const JID& jid) { - jid_ = jid; - } - - const JID& getJID() const { - return jid_; - } - - void setResource(const String& resource) { - resource_ = resource; - } - - const String& getResource() const { - return resource_; - } - - private: - JID jid_; - String resource_; - }; -} - -#endif diff --git a/Swiften/Elements/RosterItemPayload.h b/Swiften/Elements/RosterItemPayload.h deleted file mode 100644 index 3925117..0000000 --- a/Swiften/Elements/RosterItemPayload.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef SWIFTEN_RosterItemPayloadPayload_H -#define SWIFTEN_RosterItemPayloadPayload_H - -#include <vector> - -#include "Swiften/JID/JID.h" -#include "Swiften/Base/String.h" - -namespace Swift { - class RosterItemPayload - { - public: - enum Subscription { None, To, From, Both, Remove }; - - RosterItemPayload() : subscription_(None), ask_(false) {} - RosterItemPayload(const JID& jid, const String& name, Subscription subscription) : jid_(jid), name_(name), subscription_(subscription), ask_(false) { } - - void setJID(const JID& jid) { jid_ = jid; } - const JID& getJID() const { return jid_; } - - void setName(const String& name) { name_ = name; } - const String& getName() const { return name_; } - - void setSubscription(Subscription subscription) { subscription_ = subscription; } - const Subscription& getSubscription() const { return subscription_; } - - void addGroup(const String& group) { groups_.push_back(group); } - void setGroups(const std::vector<String>& groups) { groups_ = groups; } - const std::vector<String>& getGroups() const { return groups_; } - - void setSubscriptionRequested() { ask_ = true; } - bool getSubscriptionRequested() const { return ask_; } - - private: - JID jid_; - String name_; - Subscription subscription_; - std::vector<String> groups_; - bool ask_; - }; -} - -#endif diff --git a/Swiften/Elements/RosterPayload.cpp b/Swiften/Elements/RosterPayload.cpp deleted file mode 100644 index 1aecde9..0000000 --- a/Swiften/Elements/RosterPayload.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "Swiften/Elements/RosterPayload.h" -#include "Swiften/Base/foreach.h" - -namespace Swift { - -boost::optional<RosterItemPayload> RosterPayload::getItem(const JID& jid) const { - foreach(const RosterItemPayload& item, items_) { - // FIXME: MSVC rejects this. Find out why. - //if (item.getJID() == jid) { - if (item.getJID().equals(jid, JID::WithResource)) { - return boost::optional<RosterItemPayload>(item); - } - } - return boost::optional<RosterItemPayload>(); -} - -} diff --git a/Swiften/Elements/RosterPayload.h b/Swiften/Elements/RosterPayload.h deleted file mode 100644 index afb68c2..0000000 --- a/Swiften/Elements/RosterPayload.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef SWIFTEN_RosterPayload_H -#define SWIFTEN_RosterPayload_H - -#include <vector> -#include <boost/optional.hpp> - -#include "Swiften/Elements/RosterItemPayload.h" -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class RosterPayload : public Payload { - public: - typedef std::vector<RosterItemPayload> RosterItemPayloads; - - public: - RosterPayload() {} - - boost::optional<RosterItemPayload> getItem(const JID& jid) const; - - void addItem(const RosterItemPayload& item) { - items_.push_back(item); - } - - const RosterItemPayloads& getItems() const { - return items_; - } - - private: - RosterItemPayloads items_; - }; -} - -#endif diff --git a/Swiften/Elements/SecurityLabel.h b/Swiften/Elements/SecurityLabel.h deleted file mode 100644 index 65bdb4f..0000000 --- a/Swiften/Elements/SecurityLabel.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef SWIFTEN_SecurityLabel_H -#define SWIFTEN_SecurityLabel_H - -#include <vector> - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class SecurityLabel : public Payload { - public: - SecurityLabel() {} - - const String& getDisplayMarking() const { return displayMarking_; } - - void setDisplayMarking(const String& displayMarking) { - displayMarking_ = displayMarking; - } - - const String& getForegroundColor() const { - return foregroundColor_; - } - - void setForegroundColor(const String& foregroundColor) { - foregroundColor_ = foregroundColor; - } - - const String& getBackgroundColor() const { - return backgroundColor_; - } - - void setBackgroundColor(const String& backgroundColor) { - backgroundColor_ = backgroundColor; - } - - const String& getLabel() const { return label_; } - - void setLabel(const String& label) { - label_ = label; - } - - const std::vector<String>& getEquivalentLabels() const { return equivalentLabels_; } - - void addEquivalentLabel(const String& label) { - equivalentLabels_.push_back(label); - } - - private: - String displayMarking_; - String foregroundColor_; - String backgroundColor_; - String label_; - std::vector<String> equivalentLabels_; - }; -} - -#endif diff --git a/Swiften/Elements/SecurityLabelsCatalog.h b/Swiften/Elements/SecurityLabelsCatalog.h deleted file mode 100644 index 611c26b..0000000 --- a/Swiften/Elements/SecurityLabelsCatalog.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef SWIFTEN_SecurityLabelsCatalog_H -#define SWIFTEN_SecurityLabelsCatalog_H - -#include <vector> - -#include "Swiften/JID/JID.h" -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Payload.h" -#include "Swiften/Elements/SecurityLabel.h" - -namespace Swift { - class SecurityLabelsCatalog : public Payload { - public: - SecurityLabelsCatalog(const JID& to = JID()) : to_(to) {} - - const std::vector<SecurityLabel>& getLabels() const { - return labels_; - } - - void addLabel(const SecurityLabel& label) { - labels_.push_back(label); - } - - const JID& getTo() const { - return to_; - } - - void setTo(const JID& to) { - to_ = to; - } - - const String& getName() const { - return name_; - } - - void setName(const String& name) { - name_ = name; - } - - const String& getDescription() const { - return description_; - } - - void setDescription(const String& description) { - description_ = description; - } - - private: - JID to_; - String name_; - String description_; - std::vector<SecurityLabel> labels_; - }; -} - -#endif diff --git a/Swiften/Elements/SoftwareVersion.h b/Swiften/Elements/SoftwareVersion.h deleted file mode 100644 index d064414..0000000 --- a/Swiften/Elements/SoftwareVersion.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef SWIFTEN_SoftwareVersion_H -#define SWIFTEN_SoftwareVersion_H - -#include "Swiften/Elements/Payload.h" -#include "Swiften/Base/String.h" - -namespace Swift { - class SoftwareVersion : public Payload { - public: - SoftwareVersion( - const String& name = "", - const String& version = "", - const String& os = "") : - name_(name), version_(version), os_(os) {} - - const String& getName() const { - return name_; - } - - void setName(const String& name) { - name_ = name; - } - - const String& getVersion() const { - return version_; - } - - void setVersion(const String& version) { - version_ = version; - } - - const String& getOS() const { - return os_; - } - - void setOS(const String& os) { - os_ = os; - } - - private: - String name_; - String version_; - String os_; - }; -} - -#endif diff --git a/Swiften/Elements/Stanza.cpp b/Swiften/Elements/Stanza.cpp deleted file mode 100644 index e644665..0000000 --- a/Swiften/Elements/Stanza.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "Swiften/Elements/Stanza.h" - -#include <typeinfo> - -namespace Swift { - -Stanza::~Stanza() { - payloads_.clear(); -} - -void Stanza::updatePayload(boost::shared_ptr<Payload> payload) { - foreach (boost::shared_ptr<Payload>& i, payloads_) { - if (typeid(*i.get()) == typeid(*payload.get())) { - i = payload; - return; - } - } - addPayload(payload); -} - -boost::shared_ptr<Payload> Stanza::getPayloadOfSameType(boost::shared_ptr<Payload> payload) const { - foreach (const boost::shared_ptr<Payload>& i, payloads_) { - if (typeid(*i.get()) == typeid(*payload.get())) { - return i; - } - } - return boost::shared_ptr<Payload>(); -} - - -} diff --git a/Swiften/Elements/Stanza.h b/Swiften/Elements/Stanza.h deleted file mode 100644 index e60ab21..0000000 --- a/Swiften/Elements/Stanza.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef SWIFTEN_STANZAS_STANZA_H -#define SWIFTEN_STANZAS_STANZA_H - -#include <vector> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/Element.h" -#include "Swiften/Elements/Payload.h" -#include "Swiften/Base/String.h" -#include "Swiften/Base/foreach.h" -#include "Swiften/JID/JID.h" - -namespace Swift { - class Stanza : public Element { - public: - virtual ~Stanza(); - - template<typename T> - boost::shared_ptr<T> getPayload() const { - foreach (const boost::shared_ptr<Payload>& i, payloads_) { - boost::shared_ptr<T> result(boost::dynamic_pointer_cast<T>(i)); - if (result) { - return result; - } - } - return boost::shared_ptr<T>(); - } - - const std::vector< boost::shared_ptr<Payload> >& getPayloads() const { - return payloads_; - } - - void addPayload(boost::shared_ptr<Payload> payload) { - payloads_.push_back(payload); - } - - void updatePayload(boost::shared_ptr<Payload> payload); - - boost::shared_ptr<Payload> getPayloadOfSameType(boost::shared_ptr<Payload>) const; - - const JID& getFrom() const { return from_; } - void setFrom(const JID& from) { from_ = from; } - - const JID& getTo() const { return to_; } - void setTo(const JID& to) { to_ = to; } - - const String& getID() const { return id_; } - void setID(const String& id) { id_ = id; } - - private: - String id_; - JID from_; - JID to_; - - typedef std::vector< boost::shared_ptr<Payload> > Payloads; - Payloads payloads_; - }; -} - -#endif diff --git a/Swiften/Elements/StartSession.h b/Swiften/Elements/StartSession.h deleted file mode 100644 index 2b46d05..0000000 --- a/Swiften/Elements/StartSession.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_StartSession_H -#define SWIFTEN_StartSession_H - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class StartSession : public Payload { - public: - StartSession() {} - }; -} - -#endif diff --git a/Swiften/Elements/StartTLSFailure.h b/Swiften/Elements/StartTLSFailure.h deleted file mode 100644 index 17a1750..0000000 --- a/Swiften/Elements/StartTLSFailure.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef SWIFTEN_StartTLSFailure_H -#define SWIFTEN_StartTLSFailure_H - -#include "Swiften/Elements/Element.h" - -namespace Swift { - class StartTLSFailure : public Element { - public: - StartTLSFailure() {} - }; -} - -#endif diff --git a/Swiften/Elements/StartTLSRequest.h b/Swiften/Elements/StartTLSRequest.h deleted file mode 100644 index c40499a..0000000 --- a/Swiften/Elements/StartTLSRequest.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_StartTLSRequest_H -#define SWIFTEN_StartTLSRequest_H - -#include "Swiften/Elements/Element.h" - -namespace Swift { - class StartTLSRequest : public Element - { - public: - StartTLSRequest() {} - }; -} - -#endif diff --git a/Swiften/Elements/Status.h b/Swiften/Elements/Status.h deleted file mode 100644 index 0b80682..0000000 --- a/Swiften/Elements/Status.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef SWIFTEN_Status_H -#define SWIFTEN_Status_H - -#include "Swiften/Elements/Payload.h" -#include "Swiften/Base/String.h" - -namespace Swift { - class Status : public Payload { - public: - Status(const String& text = "") : text_(text) { - } - - void setText(const String& text) { - text_ = text; - } - - const String& getText() const { - return text_; - } - - private: - String text_; - }; -} - -#endif diff --git a/Swiften/Elements/StatusShow.h b/Swiften/Elements/StatusShow.h deleted file mode 100644 index a001657..0000000 --- a/Swiften/Elements/StatusShow.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef SWIFTEN_StatusShow_H -#define SWIFTEN_StatusShow_H - -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class StatusShow : public Payload { - public: - enum Type { Online, Away, FFC, XA, DND, None }; - - StatusShow(const Type& type = Online) : type_(type) { - } - - void setType(const Type& type) { - type_ = type; - } - - const Type& getType() const { - return type_; - } - - private: - Type type_; - }; -} - -#endif diff --git a/Swiften/Elements/Storage.h b/Swiften/Elements/Storage.h deleted file mode 100644 index 1458836..0000000 --- a/Swiften/Elements/Storage.h +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#include <vector> - -#include "Swiften/Elements/Payload.h" -#include "Swiften/Base/String.h" -#include "Swiften/JID/JID.h" - -namespace Swift { - class Storage : public Payload { - public: - struct Conference { - Conference() : autoJoin(false) {} - - String name; - JID jid; - bool autoJoin; - String nick; - String password; - }; - - Storage() { - } - - const std::vector<Conference>& getConferences() const { - return conferences; - } - - void addConference(const Conference& conference) { - conferences.push_back(conference); - } - - private: - std::vector<Conference> conferences; - }; -} diff --git a/Swiften/Elements/StreamFeatures.h b/Swiften/Elements/StreamFeatures.h deleted file mode 100644 index 2d5f4d6..0000000 --- a/Swiften/Elements/StreamFeatures.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef SWIFTEN_StreamFeatures_H -#define SWIFTEN_StreamFeatures_H - -#include <vector> -#include <algorithm> - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Element.h" - -namespace Swift { - class StreamFeatures : public Element - { - public: - StreamFeatures() : hasStartTLS_(false), hasResourceBind_(false), hasSession_(false) {} - - void setHasStartTLS() { - hasStartTLS_ = true; - } - - bool hasStartTLS() const { - return hasStartTLS_; - } - - void setHasSession() { - hasSession_ = true; - } - - bool hasSession() const { - return hasSession_; - } - - void setHasResourceBind() { - hasResourceBind_ = true; - } - - bool hasResourceBind() const { - return hasResourceBind_; - } - - const std::vector<String>& getCompressionMethods() const { - return compressionMethods_; - } - - void addCompressionMethod(const String& mechanism) { - compressionMethods_.push_back(mechanism); - } - - bool hasCompressionMethod(const String& mechanism) const { - return std::find(compressionMethods_.begin(), compressionMethods_.end(), mechanism) != compressionMethods_.end(); - } - - const std::vector<String>& getAuthenticationMechanisms() const { - return authenticationMechanisms_; - } - - void addAuthenticationMechanism(const String& mechanism) { - authenticationMechanisms_.push_back(mechanism); - } - - bool hasAuthenticationMechanism(const String& mechanism) const { - return std::find(authenticationMechanisms_.begin(), authenticationMechanisms_.end(), mechanism) != authenticationMechanisms_.end(); - } - - bool hasAuthenticationMechanisms() const { - return !authenticationMechanisms_.empty(); - } - - private: - bool hasStartTLS_; - std::vector<String> compressionMethods_; - std::vector<String> authenticationMechanisms_; - bool hasResourceBind_; - bool hasSession_; - }; -} - -#endif diff --git a/Swiften/Elements/TLSProceed.h b/Swiften/Elements/TLSProceed.h deleted file mode 100644 index 41f0341..0000000 --- a/Swiften/Elements/TLSProceed.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_TLSProceed_H -#define SWIFTEN_TLSProceed_H - -#include "Swiften/Elements/Element.h" - -namespace Swift { - class TLSProceed : public Element - { - public: - TLSProceed() {} - }; -} - -#endif diff --git a/Swiften/Elements/UnitTest/IQTest.cpp b/Swiften/Elements/UnitTest/IQTest.cpp deleted file mode 100644 index a5e6dc8..0000000 --- a/Swiften/Elements/UnitTest/IQTest.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/IQ.h" -#include "Swiften/Elements/SoftwareVersion.h" - -using namespace Swift; - -class IQTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(IQTest); - CPPUNIT_TEST(testCreateResult); - CPPUNIT_TEST(testCreateResult_WithoutPayload); - CPPUNIT_TEST(testCreateError); - CPPUNIT_TEST_SUITE_END(); - - public: - IQTest() {} - - void testCreateResult() { - boost::shared_ptr<Payload> payload(new SoftwareVersion("myclient")); - boost::shared_ptr<IQ> iq(IQ::createResult(JID("foo@bar/fum"), "myid", payload)); - - CPPUNIT_ASSERT_EQUAL(JID("foo@bar/fum"), iq->getTo()); - CPPUNIT_ASSERT_EQUAL(String("myid"), iq->getID()); - CPPUNIT_ASSERT(iq->getPayload<SoftwareVersion>()); - CPPUNIT_ASSERT(payload == iq->getPayload<SoftwareVersion>()); - } - - void testCreateResult_WithoutPayload() { - boost::shared_ptr<IQ> iq(IQ::createResult(JID("foo@bar/fum"), "myid")); - - CPPUNIT_ASSERT_EQUAL(JID("foo@bar/fum"), iq->getTo()); - CPPUNIT_ASSERT_EQUAL(String("myid"), iq->getID()); - CPPUNIT_ASSERT(!iq->getPayload<SoftwareVersion>()); - } - - void testCreateError() { - boost::shared_ptr<IQ> iq(IQ::createError(JID("foo@bar/fum"), "myid", ErrorPayload::BadRequest, ErrorPayload::Modify)); - - CPPUNIT_ASSERT_EQUAL(JID("foo@bar/fum"), iq->getTo()); - CPPUNIT_ASSERT_EQUAL(String("myid"), iq->getID()); - boost::shared_ptr<ErrorPayload> error(iq->getPayload<ErrorPayload>()); - CPPUNIT_ASSERT(error); - CPPUNIT_ASSERT_EQUAL(ErrorPayload::BadRequest, error->getCondition()); - CPPUNIT_ASSERT_EQUAL(ErrorPayload::Modify, error->getType()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(IQTest); diff --git a/Swiften/Elements/UnitTest/StanzaTest.cpp b/Swiften/Elements/UnitTest/StanzaTest.cpp deleted file mode 100644 index b905957..0000000 --- a/Swiften/Elements/UnitTest/StanzaTest.cpp +++ /dev/null @@ -1,155 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/Stanza.h" -#include "Swiften/Elements/Payload.h" -#include "Swiften/Elements/Message.h" - -using namespace Swift; - -class StanzaTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(StanzaTest); - CPPUNIT_TEST(testConstructor_Copy); - CPPUNIT_TEST(testGetPayload); - CPPUNIT_TEST(testGetPayload_NoSuchPayload); - CPPUNIT_TEST(testDestructor); - CPPUNIT_TEST(testDestructor_Copy); - CPPUNIT_TEST(testUpdatePayload_ExistingPayload); - CPPUNIT_TEST(testUpdatePayload_NewPayload); - CPPUNIT_TEST(testGetPayloadOfSameType); - CPPUNIT_TEST(testGetPayloadOfSameType_NoSuchPayload); - CPPUNIT_TEST_SUITE_END(); - - public: - class MyPayload1 : public Payload { - public: - MyPayload1() {} - }; - - class MyPayload2 : public Payload { - public: - MyPayload2(const String& s = "") : text_(s) {} - - String text_; - }; - - class MyPayload3 : public Payload { - public: - MyPayload3() {} - }; - - class DestroyingPayload : public Payload { - public: - DestroyingPayload(bool* alive) : alive_(alive) { - } - - ~DestroyingPayload() { - (*alive_) = false; - } - - private: - bool* alive_; - }; - - StanzaTest() {} - - void testConstructor_Copy() { - Message m; - m.addPayload(boost::shared_ptr<MyPayload1>(new MyPayload1())); - m.addPayload(boost::shared_ptr<MyPayload2>(new MyPayload2())); - Message copy(m); - - CPPUNIT_ASSERT(copy.getPayload<MyPayload1>()); - CPPUNIT_ASSERT(copy.getPayload<MyPayload2>()); - } - - void testDestructor() { - bool payloadAlive = true; - { - Message m; - m.addPayload(boost::shared_ptr<DestroyingPayload>(new DestroyingPayload(&payloadAlive))); - } - - CPPUNIT_ASSERT(!payloadAlive); - } - - void testDestructor_Copy() { - bool payloadAlive = true; - Message* m1 = new Message(); - m1->addPayload(boost::shared_ptr<DestroyingPayload>(new DestroyingPayload(&payloadAlive))); - Message* m2 = new Message(*m1); - - delete m1; - CPPUNIT_ASSERT(payloadAlive); - - delete m2; - CPPUNIT_ASSERT(!payloadAlive); - } - - void testGetPayload() { - Message m; - m.addPayload(boost::shared_ptr<MyPayload1>(new MyPayload1())); - m.addPayload(boost::shared_ptr<MyPayload2>(new MyPayload2())); - m.addPayload(boost::shared_ptr<MyPayload3>(new MyPayload3())); - - boost::shared_ptr<MyPayload2> p(m.getPayload<MyPayload2>()); - CPPUNIT_ASSERT(p); - } - - void testGetPayload_NoSuchPayload() { - Message m; - m.addPayload(boost::shared_ptr<MyPayload1>(new MyPayload1())); - m.addPayload(boost::shared_ptr<MyPayload3>(new MyPayload3())); - - boost::shared_ptr<MyPayload2> p(m.getPayload<MyPayload2>()); - CPPUNIT_ASSERT(!p); - } - - void testUpdatePayload_ExistingPayload() { - Message m; - m.addPayload(boost::shared_ptr<MyPayload1>(new MyPayload1())); - m.addPayload(boost::shared_ptr<MyPayload2>(new MyPayload2("foo"))); - m.addPayload(boost::shared_ptr<MyPayload3>(new MyPayload3())); - - m.updatePayload(boost::shared_ptr<MyPayload2>(new MyPayload2("bar"))); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), m.getPayloads().size()); - boost::shared_ptr<MyPayload2> p(m.getPayload<MyPayload2>()); - CPPUNIT_ASSERT_EQUAL(String("bar"), p->text_); - } - - void testUpdatePayload_NewPayload() { - Message m; - m.addPayload(boost::shared_ptr<MyPayload1>(new MyPayload1())); - m.addPayload(boost::shared_ptr<MyPayload3>(new MyPayload3())); - - m.updatePayload(boost::shared_ptr<MyPayload2>(new MyPayload2("bar"))); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), m.getPayloads().size()); - boost::shared_ptr<MyPayload2> p(m.getPayload<MyPayload2>()); - CPPUNIT_ASSERT_EQUAL(String("bar"), p->text_); - } - - void testGetPayloadOfSameType() { - Message m; - m.addPayload(boost::shared_ptr<MyPayload1>(new MyPayload1())); - m.addPayload(boost::shared_ptr<MyPayload2>(new MyPayload2("foo"))); - m.addPayload(boost::shared_ptr<MyPayload3>(new MyPayload3())); - - boost::shared_ptr<MyPayload2> payload(boost::dynamic_pointer_cast<MyPayload2>(m.getPayloadOfSameType(boost::shared_ptr<MyPayload2>(new MyPayload2("bar"))))); - CPPUNIT_ASSERT(payload); - CPPUNIT_ASSERT_EQUAL(String("foo"), payload->text_); - } - - void testGetPayloadOfSameType_NoSuchPayload() { - Message m; - m.addPayload(boost::shared_ptr<MyPayload1>(new MyPayload1())); - m.addPayload(boost::shared_ptr<MyPayload3>(new MyPayload3())); - - CPPUNIT_ASSERT(!m.getPayloadOfSameType(boost::shared_ptr<MyPayload2>(new MyPayload2("bar")))); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(StanzaTest); diff --git a/Swiften/Elements/UnitTest/StanzasTest.cpp b/Swiften/Elements/UnitTest/StanzasTest.cpp deleted file mode 100644 index 35b84e7..0000000 --- a/Swiften/Elements/UnitTest/StanzasTest.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include "Swiften/Elements/Message.h" -#include "Swiften/Elements/IQ.h" -#include "Swiften/Elements/Presence.h" diff --git a/Swiften/Elements/UnknownElement.h b/Swiften/Elements/UnknownElement.h deleted file mode 100644 index 3d2c219..0000000 --- a/Swiften/Elements/UnknownElement.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef SWIFTEN_UnknownElement_H -#define SWIFTEN_UnknownElement_H - -#include "Swiften/Elements/Element.h" - -namespace Swift { - class UnknownElement : public Element { - public: - UnknownElement() {} - }; -} - -#endif diff --git a/Swiften/Elements/VCard.h b/Swiften/Elements/VCard.h deleted file mode 100644 index a42d7e3..0000000 --- a/Swiften/Elements/VCard.h +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" -#include "Swiften/Base/ByteArray.h" -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class VCard : public Payload { - public: - VCard() {} - - void setFullName(const String& fullName) { fullName_ = fullName; } - const String& getFullName() const { return fullName_; } - - void setFamilyName(const String& familyName) { familyName_ = familyName; } - const String& getFamilyName() const { return familyName_; } - - void setGivenName(const String& givenName) { givenName_ = givenName; } - const String& getGivenName() const { return givenName_; } - - void setEMail(const String& email) { email_ = email; } - const String& getEMail() const { return email_; } - - void setNickname(const String& nick) { nick_ = nick; } - const String& getNickname() const { return nick_; } - - void setPhoto(const ByteArray& photo) { photo_ = photo; } - const ByteArray& getPhoto() { return photo_; } - - void setPhotoType(const String& photoType) { photoType_ = photoType; } - const String& getPhotoType() { return photoType_; } - - private: - String fullName_; - String familyName_; - String givenName_; - String email_; - ByteArray photo_; - String photoType_; - String nick_; - }; -} diff --git a/Swiften/Elements/VCardUpdate.h b/Swiften/Elements/VCardUpdate.h deleted file mode 100644 index 6bb79cc..0000000 --- a/Swiften/Elements/VCardUpdate.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class VCardUpdate : public Payload { - public: - VCardUpdate(const String& photoHash = "") : photoHash_(photoHash) {} - - void setPhotoHash(const String& photoHash) { photoHash_ = photoHash; } - const String& getPhotoHash() { return photoHash_; } - - private: - String photoHash_; - }; -} diff --git a/Swiften/Elements/Version.h b/Swiften/Elements/Version.h deleted file mode 100644 index 327178e..0000000 --- a/Swiften/Elements/Version.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef SWIFTEN_STANZAS_VERSION_H -#define SWIFTEN_STANZAS_VERSION_H - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class Version : public Payload - { - public: - Version(const String& name = "", const String& version = "", const String& os = "") : name_(name), version_(version), os_(os) { } - - const String& getName() const { return name_; } - const String& getVersion() const { return version_; } - const String& getOS() const { return os_; } - - private: - String name_; - String version_; - String os_; - }; -} - -#endif diff --git a/Swiften/EventLoop/Cocoa/CocoaEvent.h b/Swiften/EventLoop/Cocoa/CocoaEvent.h deleted file mode 100644 index 0ff4453..0000000 --- a/Swiften/EventLoop/Cocoa/CocoaEvent.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include <Cocoa/Cocoa.h> - -namespace Swift { - class Event; - class CocoaEventLoop; -} - -@interface CocoaEvent : NSObject { - Swift::Event* event; - Swift::CocoaEventLoop* eventLoop; -} - -// Takes ownership of event -- (id) initWithEvent: (Swift::Event*) e eventLoop: (Swift::CocoaEventLoop*) el; -- (void) process; -- (void) dealloc; - -@end diff --git a/Swiften/EventLoop/Cocoa/CocoaEvent.mm b/Swiften/EventLoop/Cocoa/CocoaEvent.mm deleted file mode 100644 index 8a90983..0000000 --- a/Swiften/EventLoop/Cocoa/CocoaEvent.mm +++ /dev/null @@ -1,25 +0,0 @@ -#include "Swiften/EventLoop/Cocoa/CocoaEvent.h" -#include "Swiften/EventLoop/Event.h" -#include "Swiften/EventLoop/Cocoa/CocoaEventLoop.h" - -@implementation CocoaEvent - -- (id) initWithEvent: (Swift::Event*) e eventLoop: (Swift::CocoaEventLoop*) el { - self = [super init]; - if (self != nil) { - event = e; - eventLoop = el; - } - return self; -} - -- (void) process { - eventLoop->handleEvent(*event); -} - -- (void) dealloc { - delete event; - [super dealloc]; -} - -@end diff --git a/Swiften/EventLoop/Cocoa/CocoaEventLoop.h b/Swiften/EventLoop/Cocoa/CocoaEventLoop.h deleted file mode 100644 index ad8e456..0000000 --- a/Swiften/EventLoop/Cocoa/CocoaEventLoop.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include "Swiften/EventLoop/EventLoop.h" - -namespace Swift { - class CocoaEventLoop : public EventLoop { - public: - CocoaEventLoop(); - - virtual void post(const Event& event); - - using EventLoop::handleEvent; - }; -} diff --git a/Swiften/EventLoop/Cocoa/CocoaEventLoop.mm b/Swiften/EventLoop/Cocoa/CocoaEventLoop.mm deleted file mode 100644 index b90f3c6..0000000 --- a/Swiften/EventLoop/Cocoa/CocoaEventLoop.mm +++ /dev/null @@ -1,21 +0,0 @@ -#include "Swiften/EventLoop/Cocoa/CocoaEventLoop.h" -#include "Swiften/EventLoop/Cocoa/CocoaEvent.h" - -#pragma GCC diagnostic ignored "-Wold-style-cast" - -namespace Swift { - -CocoaEventLoop::CocoaEventLoop() { -} - -void CocoaEventLoop::post(const Event& event) { - Event* eventCopy = new Event(event); - CocoaEvent* cocoaEvent = [[CocoaEvent alloc] initWithEvent: eventCopy eventLoop: this]; - [cocoaEvent - performSelectorOnMainThread:@selector(process) - withObject: nil - waitUntilDone: NO]; - [cocoaEvent release]; -} - -} diff --git a/Swiften/EventLoop/Deleter.h b/Swiften/EventLoop/Deleter.h deleted file mode 100644 index 217a17f..0000000 --- a/Swiften/EventLoop/Deleter.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef SWIFTEN_Deleter_H -#define SWIFTEN_Deleter_H - -#include <cassert> - -namespace Swift { - template<typename T> - class Deleter { - public: - Deleter(T* object) : object_(object) { - } - - void operator()() { - assert(object_); - delete object_; - object_ = 0; - } - - private: - T* object_; - }; -} -#endif diff --git a/Swiften/EventLoop/DummyEventLoop.h b/Swiften/EventLoop/DummyEventLoop.h deleted file mode 100644 index 7766bd4..0000000 --- a/Swiften/EventLoop/DummyEventLoop.h +++ /dev/null @@ -1,41 +0,0 @@ -#pragma once - -#include <deque> -#include <iostream> -#include <boost/function.hpp> - -#include "Swiften/EventLoop/EventLoop.h" -#include "Swiften/Base/foreach.h" - -namespace Swift { - class DummyEventLoop : public EventLoop { - public: - DummyEventLoop() { - } - - ~DummyEventLoop() { - if (!events_.empty()) { - std::cerr << "DummyEventLoop: Unhandled events at destruction time" << std::endl; - } - events_.clear(); - } - - void processEvents() { - while (!events_.empty()) { - handleEvent(events_[0]); - events_.pop_front(); - } - } - - bool hasEvents() { - return events_.size() > 0; - } - - virtual void post(const Event& event) { - events_.push_back(event); - } - - private: - std::deque<Event> events_; - }; -} diff --git a/Swiften/EventLoop/Event.h b/Swiften/EventLoop/Event.h deleted file mode 100644 index edd35f4..0000000 --- a/Swiften/EventLoop/Event.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/function.hpp> - -#include "Swiften/EventLoop/EventOwner.h" - -namespace Swift { - struct Event { - Event(boost::shared_ptr<EventOwner> owner, const boost::function<void()>& callback) : - owner(owner), callback(callback) { - } - - bool operator==(const Event& o) const { - return o.id == id; - } - - unsigned int id; - boost::shared_ptr<EventOwner> owner; - boost::function<void()> callback; - }; -} diff --git a/Swiften/EventLoop/EventLoop.cpp b/Swiften/EventLoop/EventLoop.cpp deleted file mode 100644 index 3c3c356..0000000 --- a/Swiften/EventLoop/EventLoop.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include "Swiften/EventLoop/EventLoop.h" - -#include <algorithm> -#include <boost/bind.hpp> - -#include "Swiften/EventLoop/MainEventLoop.h" - -namespace Swift { - -EventLoop::EventLoop() : nextEventID_(0) { - MainEventLoop::setInstance(this); -} - -EventLoop::~EventLoop() { - MainEventLoop::resetInstance(); -} - -void EventLoop::handleEvent(const Event& event) { - bool doCallback = false; - { - boost::lock_guard<boost::mutex> lock(eventsMutex_); - std::list<Event>::iterator i = std::find(events_.begin(), events_.end(), event); - if (i != events_.end()) { - doCallback = true; - events_.erase(i); - } - } - if (doCallback) { - event.callback(); - } -} - -void EventLoop::postEvent(boost::function<void ()> callback, boost::shared_ptr<EventOwner> owner) { - Event event(owner, callback); - { - boost::lock_guard<boost::mutex> lock(eventsMutex_); - event.id = nextEventID_; - nextEventID_++; - events_.push_back(event); - } - post(event); -} - -void EventLoop::removeEventsFromOwner(boost::shared_ptr<EventOwner> owner) { - boost::lock_guard<boost::mutex> lock(eventsMutex_); - events_.remove_if(HasOwner(owner)); -} - -} diff --git a/Swiften/EventLoop/EventLoop.h b/Swiften/EventLoop/EventLoop.h deleted file mode 100644 index 2b45288..0000000 --- a/Swiften/EventLoop/EventLoop.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - -#include <boost/function.hpp> -#include <boost/thread/mutex.hpp> -#include <list> - -#include "Swiften/EventLoop/Event.h" - -namespace Swift { - class EventOwner; - class EventLoop { - public: - EventLoop(); - virtual ~EventLoop(); - - void postEvent(boost::function<void ()> event, boost::shared_ptr<EventOwner> owner = boost::shared_ptr<EventOwner>()); - void removeEventsFromOwner(boost::shared_ptr<EventOwner> owner); - - protected: - /** - * Reimplement this to call handleEvent(event) from the thread in which - * the event loop is residing. - */ - virtual void post(const Event& event) = 0; - - void handleEvent(const Event& event); - - private: - struct HasOwner { - HasOwner(boost::shared_ptr<EventOwner> owner) : owner(owner) {} - bool operator()(const Event& event) { return event.owner == owner; } - boost::shared_ptr<EventOwner> owner; - }; - boost::mutex eventsMutex_; - unsigned int nextEventID_; - std::list<Event> events_; - }; -} diff --git a/Swiften/EventLoop/EventOwner.cpp b/Swiften/EventLoop/EventOwner.cpp deleted file mode 100644 index 4818b3c..0000000 --- a/Swiften/EventLoop/EventOwner.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/EventLoop/EventOwner.h" - -namespace Swift { - -EventOwner::~EventOwner() { -} - -} diff --git a/Swiften/EventLoop/EventOwner.h b/Swiften/EventLoop/EventOwner.h deleted file mode 100644 index 8da95e0..0000000 --- a/Swiften/EventLoop/EventOwner.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -namespace Swift { - class EventOwner { - public: - virtual ~EventOwner(); - }; -} diff --git a/Swiften/EventLoop/MainEventLoop.cpp b/Swiften/EventLoop/MainEventLoop.cpp deleted file mode 100644 index d7de6c6..0000000 --- a/Swiften/EventLoop/MainEventLoop.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "Swiften/EventLoop/MainEventLoop.h" - -#include <iostream> -#include <typeinfo> - -namespace Swift { - -EventLoop* MainEventLoop::getInstance() { - if (!instance_) { - std::cerr << "No main event loop instantiated. Please instantiate the appropriate subclass of EventLoop (e.g. SimpleEventLoop, QtEventLoop) at the start of your application." << std::endl; - exit(-1); - } - return instance_; -} - -void MainEventLoop::setInstance(EventLoop* loop) { - assert(!instance_); - instance_ = loop; -} - -void MainEventLoop::resetInstance() { - assert(instance_); - instance_ = 0; -} - -void MainEventLoop::postEvent(boost::function<void ()> event, boost::shared_ptr<EventOwner> owner) { - getInstance()->postEvent(event, owner); -} - -void MainEventLoop::removeEventsFromOwner(boost::shared_ptr<EventOwner> owner) { - getInstance()->removeEventsFromOwner(owner); -} - -EventLoop* MainEventLoop::instance_ = 0; - -} diff --git a/Swiften/EventLoop/MainEventLoop.h b/Swiften/EventLoop/MainEventLoop.h deleted file mode 100644 index fbb7079..0000000 --- a/Swiften/EventLoop/MainEventLoop.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef SWIFTEN_MainEventLoop_H -#define SWIFTEN_MainEventLoop_H - -#include <boost/function.hpp> - -#include "Swiften/EventLoop/Deleter.h" -#include "Swiften/EventLoop/EventLoop.h" - -namespace Swift { - class EventLoop; - class EventOwner; - - class MainEventLoop { - friend class EventLoop; - - public: - /** - * Post an event from the given owner to the event loop. - * If the owner is destroyed, all events should be removed from the - * loop using removeEventsFromOwner(). - */ - static void postEvent(boost::function<void ()> event, boost::shared_ptr<EventOwner> owner = boost::shared_ptr<EventOwner>()); - - static void removeEventsFromOwner(boost::shared_ptr<EventOwner> owner); - - template<typename T> - static void deleteLater(T* t) { - getInstance()->postEvent(Deleter<T>(t), 0); - } - - private: - static void setInstance(EventLoop*); - static void resetInstance(); - static EventLoop* getInstance(); - - private: - static EventLoop* instance_; - }; -} - -#endif diff --git a/Swiften/EventLoop/Qt/QtEventLoop.h b/Swiften/EventLoop/Qt/QtEventLoop.h deleted file mode 100644 index 40e927e..0000000 --- a/Swiften/EventLoop/Qt/QtEventLoop.h +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#include <QObject> -#include <QEvent> -#include <QCoreApplication> - -#include "Swiften/EventLoop/EventLoop.h" - -class QtEventLoop : public QObject, public Swift::EventLoop { - public: - QtEventLoop() {} - - virtual void post(const Swift::Event& event) { - QCoreApplication::postEvent(this, new Event(event)); - } - - virtual bool event(QEvent* qevent) { - Event* event = dynamic_cast<Event*>(qevent); - if (event) { - handleEvent(event->event_); - //event->deleteLater(); FIXME: Leak? - return true; - } - - return false; - } - - private: - struct Event : public QEvent { - Event(const Swift::Event& event) : - QEvent(QEvent::User), event_(event) { - } - - Swift::Event event_; - }; -}; diff --git a/Swiften/EventLoop/SConscript b/Swiften/EventLoop/SConscript deleted file mode 100644 index 5d1c3cb..0000000 --- a/Swiften/EventLoop/SConscript +++ /dev/null @@ -1,17 +0,0 @@ -Import("swiften_env") - -sources = [ - "EventLoop.cpp", - "EventOwner.cpp", - "MainEventLoop.cpp", - "SimpleEventLoop.cpp", - ] - -if swiften_env["PLATFORM"] == "darwin" and swiften_env["target"] == "native": - sources += [ - "Cocoa/CocoaEventLoop.mm", - "Cocoa/CocoaEvent.mm" - ] - -objects = swiften_env.StaticObject(sources) -swiften_env.Append(SWIFTEN_OBJECTS = [objects]) diff --git a/Swiften/EventLoop/SimpleEventLoop.cpp b/Swiften/EventLoop/SimpleEventLoop.cpp deleted file mode 100644 index 7c46ed3..0000000 --- a/Swiften/EventLoop/SimpleEventLoop.cpp +++ /dev/null @@ -1,54 +0,0 @@ -#include "Swiften/EventLoop/SimpleEventLoop.h" - -#include <boost/bind.hpp> - -#include "Swiften/Base/foreach.h" - - -namespace Swift { - -void nop() {} - -SimpleEventLoop::SimpleEventLoop() : isRunning_(true) { -} - -SimpleEventLoop::~SimpleEventLoop() { - if (!events_.empty()) { - std::cerr << "Warning: Pending events in SimpleEventLoop at destruction time" << std::endl; - } -} - -void SimpleEventLoop::run() { - while (isRunning_) { - std::vector<Event> events; - { - boost::unique_lock<boost::mutex> lock(eventsMutex_); - while (events_.size() == 0) { - eventsAvailable_.wait(lock); - } - events.swap(events_); - } - foreach(const Event& event, events) { - handleEvent(event); - } - } -} - -void SimpleEventLoop::stop() { - postEvent(boost::bind(&SimpleEventLoop::doStop, this)); -} - -void SimpleEventLoop::doStop() { - isRunning_ = false; -} - -void SimpleEventLoop::post(const Event& event) { - { - boost::lock_guard<boost::mutex> lock(eventsMutex_); - events_.push_back(event); - } - eventsAvailable_.notify_one(); -} - - -} diff --git a/Swiften/EventLoop/SimpleEventLoop.h b/Swiften/EventLoop/SimpleEventLoop.h deleted file mode 100644 index bd0a07f..0000000 --- a/Swiften/EventLoop/SimpleEventLoop.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -#include <vector> -#include <boost/function.hpp> -#include <boost/thread/mutex.hpp> -#include <boost/thread/condition_variable.hpp> - -#include "Swiften/EventLoop/EventLoop.h" - -namespace Swift { - class SimpleEventLoop : public EventLoop { - public: - SimpleEventLoop(); - ~SimpleEventLoop(); - - void run(); - void stop(); - - virtual void post(const Event& event); - - private: - void doStop(); - - private: - bool isRunning_; - std::vector<Event> events_; - boost::mutex eventsMutex_; - boost::condition_variable eventsAvailable_; - }; -} diff --git a/Swiften/EventLoop/UnitTest/EventLoopTest.cpp b/Swiften/EventLoop/UnitTest/EventLoopTest.cpp deleted file mode 100644 index 9475ac9..0000000 --- a/Swiften/EventLoop/UnitTest/EventLoopTest.cpp +++ /dev/null @@ -1,67 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/thread.hpp> -#include <boost/bind.hpp> - -#include "Swiften/EventLoop/EventOwner.h" -#include "Swiften/EventLoop/SimpleEventLoop.h" -#include "Swiften/Base/sleep.h" - -using namespace Swift; - -class EventLoopTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(EventLoopTest); - CPPUNIT_TEST(testPost); - CPPUNIT_TEST(testRemove); - CPPUNIT_TEST_SUITE_END(); - - public: - EventLoopTest() {} - - void setUp() { - events_.clear(); - } - - void testPost() { - SimpleEventLoop testling; - - testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 1)); - testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 2)); - testling.stop(); - testling.run(); - - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(events_.size())); - CPPUNIT_ASSERT_EQUAL(1, events_[0]); - CPPUNIT_ASSERT_EQUAL(2, events_[1]); - } - - void testRemove() { - SimpleEventLoop testling; - boost::shared_ptr<MyEventOwner> eventOwner1(new MyEventOwner()); - boost::shared_ptr<MyEventOwner> eventOwner2(new MyEventOwner()); - - testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 1), eventOwner1); - testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 2), eventOwner2); - testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 3), eventOwner1); - testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 4), eventOwner2); - testling.removeEventsFromOwner(eventOwner2); - testling.stop(); - testling.run(); - - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(events_.size())); - CPPUNIT_ASSERT_EQUAL(1, events_[0]); - CPPUNIT_ASSERT_EQUAL(3, events_[1]); - } - - private: - struct MyEventOwner : public EventOwner {}; - void logEvent(int i) { - events_.push_back(i); - } - - private: - std::vector<int> events_; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(EventLoopTest); diff --git a/Swiften/EventLoop/UnitTest/SimpleEventLoopTest.cpp b/Swiften/EventLoop/UnitTest/SimpleEventLoopTest.cpp deleted file mode 100644 index 14f24c7..0000000 --- a/Swiften/EventLoop/UnitTest/SimpleEventLoopTest.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/thread.hpp> -#include <boost/bind.hpp> - -#include "Swiften/EventLoop/SimpleEventLoop.h" -#include "Swiften/Base/sleep.h" - -using namespace Swift; - -class SimpleEventLoopTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(SimpleEventLoopTest); - CPPUNIT_TEST(testRun); - CPPUNIT_TEST(testPostFromMainThread); - CPPUNIT_TEST_SUITE_END(); - - public: - SimpleEventLoopTest() {} - - void setUp() { - counter_ = 0; - } - - void testRun() { - SimpleEventLoop testling; - boost::thread thread(boost::bind(&SimpleEventLoopTest::runIncrementingThread, this, &testling)); - testling.run(); - - CPPUNIT_ASSERT_EQUAL(10, counter_); - } - - void testPostFromMainThread() { - SimpleEventLoop testling; - testling.postEvent(boost::bind(&SimpleEventLoopTest::incrementCounterAndStop, this, &testling)); - testling.run(); - - CPPUNIT_ASSERT_EQUAL(1, counter_); - } - - private: - void runIncrementingThread(SimpleEventLoop* loop) { - for (unsigned int i = 0; i < 10; ++i) { - Swift::sleep(1); - loop->postEvent(boost::bind(&SimpleEventLoopTest::incrementCounter, this)); - } - loop->stop(); - } - - void incrementCounter() { - counter_++; - } - - void incrementCounterAndStop(SimpleEventLoop* loop) { - counter_++; - loop->stop(); - } - - int counter_; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(SimpleEventLoopTest); diff --git a/Swiften/Events/MessageEvent.h b/Swiften/Events/MessageEvent.h deleted file mode 100644 index 43174a1..0000000 --- a/Swiften/Events/MessageEvent.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef SWIFTEN_MessageEvent_H -#define SWIFTEN_MessageEvent_H - -#include <cassert> - -#include <boost/signals.hpp> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Events/StanzaEvent.h" -#include "Swiften/Elements/Message.h" - -namespace Swift { - class MessageEvent : public StanzaEvent { - public: - MessageEvent(boost::shared_ptr<Message> stanza) : stanza_(stanza){}; - virtual ~MessageEvent(){}; - boost::shared_ptr<Message> getStanza() {return stanza_;} - - bool isReadable() { - return getStanza()->isError() || !getStanza()->getBody().isEmpty(); - } - - void read() { - assert (isReadable()); - conclude(); - } - - private: - boost::shared_ptr<Message> stanza_; - }; -} - -#endif diff --git a/Swiften/Events/StanzaEvent.h b/Swiften/Events/StanzaEvent.h deleted file mode 100644 index b1dc537..0000000 --- a/Swiften/Events/StanzaEvent.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include <boost/signals.hpp> -#include <boost/shared_ptr.hpp> - -namespace Swift { - class StanzaEvent { - public: - StanzaEvent(){concluded_ = false;}; - virtual ~StanzaEvent() {}; - void conclude() {concluded_ = true; onConclusion();}; - /** Do not call this directly from outside the class */ - boost::signal<void()> onConclusion; - bool getConcluded() {return concluded_;}; - private: - bool concluded_; - }; -} diff --git a/Swiften/Events/SubscriptionRequestEvent.h b/Swiften/Events/SubscriptionRequestEvent.h deleted file mode 100644 index ed063d7..0000000 --- a/Swiften/Events/SubscriptionRequestEvent.h +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#include <cassert> - -#include <boost/signals.hpp> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Events/StanzaEvent.h" -#include "Swiften/Base/String.h" -#include "Swiften/JID/JID.h" - -namespace Swift { - class SubscriptionRequestEvent : public StanzaEvent { - public: - SubscriptionRequestEvent(const JID& jid, const String& reason) : jid_(jid), reason_(reason){}; - virtual ~SubscriptionRequestEvent(){}; - const JID& getJID() const {return jid_;}; - const String& getReason() const {return reason_;}; - boost::signal<void()> onAccept; - boost::signal<void()> onDecline; - void accept() { - onAccept(); - conclude(); - }; - - void decline() { - onDecline(); - conclude(); - }; - - private: - JID jid_; - String reason_; - }; -} - diff --git a/Swiften/Examples/EchoBot/.gitignore b/Swiften/Examples/EchoBot/.gitignore deleted file mode 100644 index 9200f42..0000000 --- a/Swiften/Examples/EchoBot/.gitignore +++ /dev/null @@ -1 +0,0 @@ -EchoBot diff --git a/Swiften/Examples/EchoBot/EchoBot.cpp b/Swiften/Examples/EchoBot/EchoBot.cpp deleted file mode 100644 index 872d901..0000000 --- a/Swiften/Examples/EchoBot/EchoBot.cpp +++ /dev/null @@ -1,56 +0,0 @@ -#include <boost/bind.hpp> - -#include "Swiften/Client/Client.h" -#include "Swiften/Client/ClientXMLTracer.h" -#include "Swiften/EventLoop/SimpleEventLoop.h" -#include "Swiften/Queries/Requests/GetRosterRequest.h" - -using namespace Swift; -using namespace boost; - -class EchoBot { - public: - EchoBot(const JID& jid, const String& pass) : tracer(0) { - client = new Client(jid, pass); - tracer = new ClientXMLTracer(client); - client->onConnected.connect(bind(&EchoBot::handleConnected, this)); - client->onMessageReceived.connect(bind(&EchoBot::handleMessageReceived, this, _1)); - client->connect(); - } - - ~EchoBot() { - delete tracer; - delete client; - } - - private: - void handleConnected() { - shared_ptr<GetRosterRequest> rosterRequest(new GetRosterRequest(client)); - rosterRequest->onResponse.connect(bind(&EchoBot::handleRosterReceived, this, _2)); - rosterRequest->send(); - } - - void handleRosterReceived(const optional<Error>& error) { - if (error) { - std::cerr << "Error receiving roster. Continuing anyway."; - } - client->sendPresence(shared_ptr<Presence>(new Presence("Send me a message"))); - } - - void handleMessageReceived(shared_ptr<Message> message) { - message->setTo(message->getFrom()); - message->setFrom(JID()); - client->sendMessage(message); - } - - private: - Client* client; - ClientXMLTracer* tracer; -}; - -int main(int, char**) { - SimpleEventLoop eventLoop; - EchoBot bot(JID("echobot@wonderland.lit"), "mypass"); - eventLoop.run(); - return 0; -} diff --git a/Swiften/Examples/SConscript b/Swiften/Examples/SConscript deleted file mode 100644 index a4d5998..0000000 --- a/Swiften/Examples/SConscript +++ /dev/null @@ -1,8 +0,0 @@ -Import("swiften_env") - -myenv = swiften_env.Clone() - -if myenv["target"] == "native": - SConscript(dirs = [ - "SendMessage" - ]) diff --git a/Swiften/Examples/SendMessage/.gitignore b/Swiften/Examples/SendMessage/.gitignore deleted file mode 100644 index 3b8b4d2..0000000 --- a/Swiften/Examples/SendMessage/.gitignore +++ /dev/null @@ -1 +0,0 @@ -SendMessage diff --git a/Swiften/Examples/SendMessage/SConscript b/Swiften/Examples/SendMessage/SConscript deleted file mode 100644 index 0e0197e..0000000 --- a/Swiften/Examples/SendMessage/SConscript +++ /dev/null @@ -1,13 +0,0 @@ -Import("env") - -myenv = env.Clone() -myenv.MergeFlags(myenv["SWIFTEN_FLAGS"]) -myenv.MergeFlags(myenv["CPPUNIT_FLAGS"]) -myenv.MergeFlags(myenv["LIBIDN_FLAGS"]) -myenv.MergeFlags(myenv["BOOST_FLAGS"]) -myenv.MergeFlags(myenv["SQLITE_FLAGS"]) -myenv.MergeFlags(myenv["ZLIB_FLAGS"]) -myenv.MergeFlags(myenv["OPENSSL_FLAGS"]) -myenv.MergeFlags(myenv.get("LIBXML_FLAGS", "")) -myenv.MergeFlags(myenv.get("EXPAT_FLAGS", "")) -tester = myenv.Program("SendMessage", ["SendMessage.cpp"]) diff --git a/Swiften/Examples/SendMessage/SendMessage.cpp b/Swiften/Examples/SendMessage/SendMessage.cpp deleted file mode 100644 index b7a80dd..0000000 --- a/Swiften/Examples/SendMessage/SendMessage.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include <boost/bind.hpp> -#include <boost/thread.hpp> - -#include "Swiften/Client/Client.h" -#include "Swiften/Network/BoostTimer.h" -#include "Swiften/EventLoop/MainEventLoop.h" -#include "Swiften/Client/ClientXMLTracer.h" -#include "Swiften/EventLoop/SimpleEventLoop.h" -#include "Swiften/Network/BoostIOServiceThread.h" -#include "Swiften/Network/MainBoostIOServiceThread.h" - -using namespace Swift; - -SimpleEventLoop eventLoop; - -Client* client = 0; -JID recipient; -std::string messageBody; - -void handleConnected() { - boost::shared_ptr<Message> message(new Message()); - message->setBody(messageBody); - message->setTo(recipient); - client->sendMessage(message); - client->disconnect(); - eventLoop.stop(); -} - -int main(int argc, char* argv[]) { - if (argc != 5) { - std::cerr << "Usage: " << argv[0] << " <jid> <password> <recipient> <message>" << std::endl; - return -1; - } - - recipient = JID(argv[3]); - messageBody = std::string(argv[4]); - - client = new Swift::Client(JID(argv[1]), String(argv[2])); - ClientXMLTracer* tracer = new ClientXMLTracer(client); - client->onConnected.connect(&handleConnected); - client->connect(); - - { - boost::shared_ptr<BoostTimer> timer(new BoostTimer(30000, &MainBoostIOServiceThread::getInstance().getIOService())); - timer->onTick.connect(boost::bind(&SimpleEventLoop::stop, &eventLoop)); - timer->start(); - - eventLoop.run(); - } - - delete tracer; - delete client; -} diff --git a/Swiften/History/HistoryManager.cpp b/Swiften/History/HistoryManager.cpp deleted file mode 100644 index 3d67c27..0000000 --- a/Swiften/History/HistoryManager.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/History/HistoryManager.h" - -namespace Swift { - -HistoryManager::~HistoryManager() { -} - -} diff --git a/Swiften/History/HistoryManager.h b/Swiften/History/HistoryManager.h deleted file mode 100644 index 2a7c040..0000000 --- a/Swiften/History/HistoryManager.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" -#include "Swiften/JID/JID.h" -#include "Swiften/History/HistoryMessage.h" - -namespace Swift { - class HistoryManager { - public: - virtual ~HistoryManager(); - - virtual void addMessage(const HistoryMessage& message) = 0; - - virtual std::vector<HistoryMessage> getMessages() const = 0; - }; -} diff --git a/Swiften/History/HistoryMessage.h b/Swiften/History/HistoryMessage.h deleted file mode 100644 index 3fda3e2..0000000 --- a/Swiften/History/HistoryMessage.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once - -#include <boost/date_time/posix_time/posix_time_types.hpp> - -namespace Swift { - class HistoryMessage { - public: - HistoryMessage(const String& message, const JID& from, const JID& to, const boost::posix_time::ptime time) : message_(message), from_(from), to_(to), time_(time) { - } - - const String& getMessage() const { - return message_; - } - - const JID& getFrom() const { - return from_; - } - - const JID& getTo() const { - return to_; - } - - boost::posix_time::ptime getTime() const { - return time_; - } - - bool operator==(const HistoryMessage& o) const { - return message_ == o.message_ && from_ == o.from_ && to_ == o.to_ && time_ == o.time_; - } - - private: - String message_; - JID from_; - JID to_; - boost::posix_time::ptime time_; - }; -} diff --git a/Swiften/History/SConscript b/Swiften/History/SConscript deleted file mode 100644 index bc80780..0000000 --- a/Swiften/History/SConscript +++ /dev/null @@ -1,11 +0,0 @@ -Import("swiften_env") - -myenv = swiften_env.Clone() -if myenv["target"] == "native": - myenv.MergeFlags(swiften_env["SQLITE_FLAGS"]) - -objects = myenv.StaticObject([ - "HistoryManager.cpp", - "SQLiteHistoryManager.cpp", - ]) -swiften_env.Append(SWIFTEN_OBJECTS = [objects]) diff --git a/Swiften/History/SQLiteHistoryManager.cpp b/Swiften/History/SQLiteHistoryManager.cpp deleted file mode 100644 index 865abba..0000000 --- a/Swiften/History/SQLiteHistoryManager.cpp +++ /dev/null @@ -1,134 +0,0 @@ -#include <iostream> -#include <boost/lexical_cast.hpp> - -#include "sqlite3.h" -#include "Swiften/History/SQLiteHistoryManager.h" - -namespace { - -inline Swift::String getEscapedString(const Swift::String& s) { - Swift::String result(s); - result.replaceAll('\'', Swift::String("\\'")); - return result; -} - -} - - -namespace Swift { - -SQLiteHistoryManager::SQLiteHistoryManager(const String& file) : db_(0) { - sqlite3_open(file.getUTF8Data(), &db_); - if (!db_) { - std::cerr << "Error opening database " << file << std::endl; // FIXME - } - - char* errorMessage; - int result = sqlite3_exec(db_, "CREATE TABLE IF NOT EXISTS messages('from' INTEGER, 'to' INTEGER, 'message' STRING, 'time' INTEGER)", 0, 0, &errorMessage); - if (result != SQLITE_OK) { - std::cerr << "SQL Error: " << errorMessage << std::endl; - sqlite3_free(errorMessage); - } - - result = sqlite3_exec(db_, "CREATE TABLE IF NOT EXISTS jids('id' INTEGER PRIMARY KEY ASC AUTOINCREMENT, 'jid' STRING UNIQUE NOT NULL)", 0, 0, &errorMessage); - if (result != SQLITE_OK) { - std::cerr << "SQL Error: " << errorMessage << std::endl; - sqlite3_free(errorMessage); - } -} - -SQLiteHistoryManager::~SQLiteHistoryManager() { - sqlite3_close(db_); -} - -void SQLiteHistoryManager::addMessage(const HistoryMessage& message) { - int secondsSinceEpoch = (message.getTime() - boost::posix_time::ptime(boost::gregorian::date(1970, 1, 1))).total_seconds(); - String statement = String("INSERT INTO messages('from', 'to', 'message', 'time') VALUES(") + boost::lexical_cast<std::string>(getIDForJID(message.getFrom())) + ", " + boost::lexical_cast<std::string>(getIDForJID(message.getTo())) + ", '" + getEscapedString(message.getMessage()) + "', " + boost::lexical_cast<std::string>(secondsSinceEpoch) + ")"; - char* errorMessage; - int result = sqlite3_exec(db_, statement.getUTF8Data(), 0, 0, &errorMessage); - if (result != SQLITE_OK) { - std::cerr << "SQL Error: " << errorMessage << std::endl; - sqlite3_free(errorMessage); - } -} - -std::vector<HistoryMessage> SQLiteHistoryManager::getMessages() const { - std::vector<HistoryMessage> result; - sqlite3_stmt* selectStatement; - String selectQuery("SELECT messages.'from', messages.'to', messages.'message', messages.'time' FROM messages"); - int r = sqlite3_prepare(db_, selectQuery.getUTF8Data(), selectQuery.getUTF8Size(), &selectStatement, NULL); - if (r != SQLITE_OK) { - std::cout << "Error: " << sqlite3_errmsg(db_) << std::endl; - } - r = sqlite3_step(selectStatement); - while (r == SQLITE_ROW) { - boost::optional<JID> from(getJIDFromID(sqlite3_column_int(selectStatement, 0))); - boost::optional<JID> to(getJIDFromID(sqlite3_column_int(selectStatement, 1))); - String message(reinterpret_cast<const char*>(sqlite3_column_text(selectStatement, 2))); - int secondsSinceEpoch(sqlite3_column_int(selectStatement, 3)); - boost::posix_time::ptime time(boost::gregorian::date(1970, 1, 1), boost::posix_time::seconds(secondsSinceEpoch)); - - result.push_back(HistoryMessage(message, (from ? *from : JID()), (to ? *to : JID()), time)); - r = sqlite3_step(selectStatement); - } - if (r != SQLITE_DONE) { - std::cout << "Error: " << sqlite3_errmsg(db_) << std::endl; - } - sqlite3_finalize(selectStatement); - return result; -} - -int SQLiteHistoryManager::getIDForJID(const JID& jid) { - boost::optional<int> id = getIDFromJID(jid); - if (id) { - return *id; - } - else { - return addJID(jid); - } -} - -int SQLiteHistoryManager::addJID(const JID& jid) { - String statement = String("INSERT INTO jids('jid') VALUES('") + getEscapedString(jid.toString()) + "')"; - char* errorMessage; - int result = sqlite3_exec(db_, statement.getUTF8Data(), 0, 0, &errorMessage); - if (result != SQLITE_OK) { - std::cerr << "SQL Error: " << errorMessage << std::endl; - sqlite3_free(errorMessage); - } - return sqlite3_last_insert_rowid(db_); -} - -boost::optional<JID> SQLiteHistoryManager::getJIDFromID(int id) const { - boost::optional<JID> result; - sqlite3_stmt* selectStatement; - String selectQuery("SELECT jid FROM jids WHERE id=" + boost::lexical_cast<std::string>(id)); - int r = sqlite3_prepare(db_, selectQuery.getUTF8Data(), selectQuery.getUTF8Size(), &selectStatement, NULL); - if (r != SQLITE_OK) { - std::cout << "Error: " << sqlite3_errmsg(db_) << std::endl; - } - r = sqlite3_step(selectStatement); - if (r == SQLITE_ROW) { - result = boost::optional<JID>(reinterpret_cast<const char*>(sqlite3_column_text(selectStatement, 0))); - } - sqlite3_finalize(selectStatement); - return result; -} - -boost::optional<int> SQLiteHistoryManager::getIDFromJID(const JID& jid) const { - boost::optional<int> result; - sqlite3_stmt* selectStatement; - String selectQuery("SELECT id FROM jids WHERE jid='" + jid.toString() + "'"); - int r = sqlite3_prepare(db_, selectQuery.getUTF8Data(), selectQuery.getUTF8Size(), &selectStatement, NULL); - if (r != SQLITE_OK) { - std::cout << "Error: " << sqlite3_errmsg(db_) << std::endl; - } - r = sqlite3_step(selectStatement); - if (r == SQLITE_ROW) { - result = boost::optional<int>(sqlite3_column_int(selectStatement, 0)); - } - sqlite3_finalize(selectStatement); - return result; -} - -} diff --git a/Swiften/History/SQLiteHistoryManager.h b/Swiften/History/SQLiteHistoryManager.h deleted file mode 100644 index ace42f7..0000000 --- a/Swiften/History/SQLiteHistoryManager.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include <boost/optional.hpp> - -#include "Swiften/History/HistoryManager.h" - -struct sqlite3; - -namespace Swift { - class SQLiteHistoryManager : public HistoryManager { - public: - SQLiteHistoryManager(const String& file); - ~SQLiteHistoryManager(); - - virtual void addMessage(const HistoryMessage& message); - virtual std::vector<HistoryMessage> getMessages() const; - - int getIDForJID(const JID&); - int addJID(const JID&); - - boost::optional<JID> getJIDFromID(int id) const; - boost::optional<int> getIDFromJID(const JID& jid) const; - - private: - sqlite3* db_; - }; -} diff --git a/Swiften/History/UnitTest/SQLiteHistoryManagerTest.cpp b/Swiften/History/UnitTest/SQLiteHistoryManagerTest.cpp deleted file mode 100644 index e738a6e..0000000 --- a/Swiften/History/UnitTest/SQLiteHistoryManagerTest.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/date_time/posix_time/posix_time.hpp> - -#include "Swiften/History/SQLiteHistoryManager.h" - -using namespace Swift; - -class SQLiteHistoryManagerTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(SQLiteHistoryManagerTest); - CPPUNIT_TEST(testAddMessage); - CPPUNIT_TEST(testAddMessage_TwoMessages); - CPPUNIT_TEST(testGetIDForJID_SameJID); - CPPUNIT_TEST(testGetIDForJID_DifferentJIDs); - CPPUNIT_TEST(getJIDFromID); - CPPUNIT_TEST(getJIDFromID_UnexistingID); - CPPUNIT_TEST(getIDFromJID); - CPPUNIT_TEST(getIDFromJID_UnexistingJID); - CPPUNIT_TEST_SUITE_END(); - - public: - SQLiteHistoryManagerTest() {} - - void setUp() { - } - - void tearDown() { - } - - void testAddMessage() { - std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager()); - HistoryMessage testMessage("Test", JID("foo@bar.com"), JID("fum@baz.org"), boost::posix_time::time_from_string("1980-01-21 22:03")); - testling->addMessage(testMessage); - - std::vector<HistoryMessage> messages = testling->getMessages(); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(messages.size())); - CPPUNIT_ASSERT(testMessage == messages[0]); - } - - void testAddMessage_TwoMessages() { - std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager()); - HistoryMessage testMessage1("Test1", JID("foo@bar.com"), JID("fum@baz.org"), boost::posix_time::time_from_string("1980-01-21 22:03")); - testling->addMessage(testMessage1); - HistoryMessage testMessage2("Test2", JID("fum@baz.org"), JID("foo@bar.com"), boost::posix_time::time_from_string("1975-03-09 22:04")); - testling->addMessage(testMessage2); - - std::vector<HistoryMessage> messages = testling->getMessages(); - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(messages.size())); - CPPUNIT_ASSERT(testMessage1 == messages[0]); - CPPUNIT_ASSERT(testMessage2 == messages[1]); - } - - void testGetIDForJID_SameJID() { - std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager()); - int id1 = testling->getIDForJID(JID("foo@bar.com")); - int id2 = testling->getIDForJID(JID("foo@bar.com")); - - CPPUNIT_ASSERT_EQUAL(id1, id2); - } - - void testGetIDForJID_DifferentJIDs() { - std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager()); - int id1 = testling->getIDForJID(JID("foo@bar.com")); - int id2 = testling->getIDForJID(JID("foo@baz.com")); - - CPPUNIT_ASSERT(id1 != id2); - } - - void getJIDFromID() { - std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager()); - int id = testling->addJID(JID("foo@bar.com")); - - boost::optional<JID> result(testling->getJIDFromID(id)); - CPPUNIT_ASSERT(result); - CPPUNIT_ASSERT_EQUAL(JID("foo@bar.com"), *result); - } - - void getJIDFromID_UnexistingID() { - std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager()); - - boost::optional<JID> result(testling->getJIDFromID(1)); - - CPPUNIT_ASSERT(!result); - } - - void getIDFromJID() { - std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager()); - int id = testling->addJID(JID("foo@bar.com")); - - boost::optional<int> result(testling->getIDFromJID(JID("foo@bar.com"))); - CPPUNIT_ASSERT(result); - CPPUNIT_ASSERT_EQUAL(id, *result); - } - - void getIDFromJID_UnexistingJID() { - std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager()); - - boost::optional<int> result(testling->getIDFromJID(JID("foo@bar.com"))); - - CPPUNIT_ASSERT(!result); - } - - private: - SQLiteHistoryManager* createHistoryManager() { - return new SQLiteHistoryManager(":memory:"); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(SQLiteHistoryManagerTest); diff --git a/Swiften/JID/JID.cpp b/Swiften/JID/JID.cpp deleted file mode 100644 index 3be8386..0000000 --- a/Swiften/JID/JID.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include <stringprep.h> -#include <vector> -#include <iostream> - -#include "Swiften/JID/JID.h" -#include "Swiften/StringPrep/StringPrep.h" - -namespace Swift { - -JID::JID(const char* jid) { - initializeFromString(String(jid)); -} - -JID::JID(const String& jid) { - initializeFromString(jid); -} - -JID::JID(const String& node, const String& domain) : hasResource_(false) { - nameprepAndSetComponents(node, domain, ""); -} - -JID::JID(const String& node, const String& domain, const String& resource) : hasResource_(true) { - nameprepAndSetComponents(node, domain, resource); -} - -void JID::initializeFromString(const String& jid) { - if (jid.beginsWith('@')) { - return; - } - - String bare, resource; - size_t slashIndex = jid.find('/'); - if (slashIndex != jid.npos()) { - hasResource_ = true; - bare = jid.getSubstring(0, slashIndex); - resource = jid.getSubstring(slashIndex + 1, jid.npos()); - } - else { - hasResource_ = false; - bare = jid; - } - std::pair<String,String> nodeAndDomain = bare.getSplittedAtFirst('@'); - if (nodeAndDomain.second.isEmpty()) { - nameprepAndSetComponents("", nodeAndDomain.first, resource); - } - else { - nameprepAndSetComponents(nodeAndDomain.first, nodeAndDomain.second, resource); - } -} - - -void JID::nameprepAndSetComponents(const String& node, const String& domain, const String& resource) { - node_ = StringPrep::getPrepared(node, StringPrep::NamePrep); - domain_ = StringPrep::getPrepared(domain, StringPrep::XMPPNodePrep); - resource_ = StringPrep::getPrepared(resource, StringPrep::XMPPResourcePrep); -} - -String JID::toString() const { - String string; - if (!node_.isEmpty()) { - string += node_ + "@"; - } - string += domain_; - if (!isBare()) { - string += "/" + resource_; - } - return string; -} - -int JID::compare(const Swift::JID& o, CompareType compareType) const { - if (node_ < o.node_) { return -1; } - if (node_ > o.node_) { return 1; } - if (domain_ < o.domain_) { return -1; } - if (domain_ > o.domain_) { return 1; } - if (compareType == WithResource) { - if (hasResource_ != o.hasResource_) { - return hasResource_ ? 1 : -1; - } - if (resource_ < o.resource_) { return -1; } - if (resource_ > o.resource_) { return 1; } - } - return 0; -} - -} // namespace Swift - diff --git a/Swiften/JID/JID.h b/Swiften/JID/JID.h deleted file mode 100644 index 0bfb858..0000000 --- a/Swiften/JID/JID.h +++ /dev/null @@ -1,80 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" - -namespace Swift { - class JID { - public: - enum CompareType { - WithResource, WithoutResource - }; - - explicit JID(const String& = String()); - explicit JID(const char*); - JID(const String& node, const String& domain); - JID(const String& node, const String& domain, const String& resource); - - bool isValid() const { - return !domain_.isEmpty(); /* FIXME */ - } - - const String& getNode() const { - return node_; - } - const String& getDomain() const { - return domain_; - } - const String& getResource() const { - return resource_; - } - bool isBare() const { - return !hasResource_; - } - - JID toBare() const { - return JID(getNode(), getDomain()); /* FIXME: Duplicate unnecessary nameprepping. Probably ok. */ - } - - String toString() const; - - bool equals(const JID& o, CompareType compareType) const { - return compare(o, compareType) == 0; - } - - int compare(const JID& o, CompareType compareType) const; - - operator String() const { - return toString(); - } - - bool operator<(const Swift::JID& b) const { - return compare(b, Swift::JID::WithResource) < 0; - } - - friend std::ostream& operator<<(std::ostream& os, const Swift::JID& j) { - os << j.toString(); - return os; - } - - friend bool operator==(const Swift::JID& a, const Swift::JID& b) { - return a.compare(b, Swift::JID::WithResource) == 0; - } - - friend bool operator!=(const Swift::JID& a, const Swift::JID& b) { - return a.compare(b, Swift::JID::WithResource) != 0; - } - - protected: - void nameprepAndSetComponents(const String& node, const String& domain, - const String& resource); - - private: - void initializeFromString(const String&); - - private: - String node_; - String domain_; - bool hasResource_; - String resource_; - }; -} diff --git a/Swiften/JID/SConscript b/Swiften/JID/SConscript deleted file mode 100644 index d48fbb0..0000000 --- a/Swiften/JID/SConscript +++ /dev/null @@ -1,9 +0,0 @@ -Import("swiften_env") - -myenv = swiften_env.Clone() -myenv.MergeFlags(swiften_env["LIBIDN_FLAGS"]) - -objects = myenv.StaticObject([ - "JID.cpp", - ]) -swiften_env.Append(SWIFTEN_OBJECTS = [objects]) diff --git a/Swiften/JID/UnitTest/JIDTest.cpp b/Swiften/JID/UnitTest/JIDTest.cpp deleted file mode 100644 index 917f89f..0000000 --- a/Swiften/JID/UnitTest/JIDTest.cpp +++ /dev/null @@ -1,310 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/JID/JID.h" - -using namespace Swift; - -class JIDTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(JIDTest); - CPPUNIT_TEST(testConstructorWithString); - CPPUNIT_TEST(testConstructorWithString_NoResource); - CPPUNIT_TEST(testConstructorWithString_NoNode); - CPPUNIT_TEST(testConstructorWithString_EmptyResource); - CPPUNIT_TEST(testConstructorWithString_OnlyDomain); - CPPUNIT_TEST(testConstructorWithString_UpperCaseNode); - CPPUNIT_TEST(testConstructorWithString_UpperCaseDomain); - CPPUNIT_TEST(testConstructorWithString_UpperCaseResource); - CPPUNIT_TEST(testConstructorWithString_EmptyNode); - CPPUNIT_TEST(testConstructorWithStrings); - CPPUNIT_TEST(testIsBare); - CPPUNIT_TEST(testIsBare_NotBare); - CPPUNIT_TEST(testToBare); - CPPUNIT_TEST(testToBare_EmptyNode); - CPPUNIT_TEST(testToBare_EmptyResource); - CPPUNIT_TEST(testToString); - CPPUNIT_TEST(testToString_EmptyNode); - CPPUNIT_TEST(testToString_EmptyResource); - CPPUNIT_TEST(testToString_NoResource); - CPPUNIT_TEST(testCompare_SmallerNode); - CPPUNIT_TEST(testCompare_LargerNode); - CPPUNIT_TEST(testCompare_SmallerDomain); - CPPUNIT_TEST(testCompare_LargerDomain); - CPPUNIT_TEST(testCompare_SmallerResource); - CPPUNIT_TEST(testCompare_LargerResource); - CPPUNIT_TEST(testCompare_Equal); - CPPUNIT_TEST(testCompare_EqualWithoutResource); - CPPUNIT_TEST(testCompare_NoResourceAndEmptyResource); - CPPUNIT_TEST(testCompare_EmptyResourceAndNoResource); - CPPUNIT_TEST(testEquals); - CPPUNIT_TEST(testEquals_NotEqual); - CPPUNIT_TEST(testEquals_WithoutResource); - CPPUNIT_TEST(testSmallerThan); - CPPUNIT_TEST(testSmallerThan_Equal); - CPPUNIT_TEST(testSmallerThan_Larger); - CPPUNIT_TEST(testHasResource); - CPPUNIT_TEST(testHasResource_NoResource); - CPPUNIT_TEST_SUITE_END(); - - public: - JIDTest() {} - - void testConstructorWithString() { - JID testling("foo@bar/baz"); - - CPPUNIT_ASSERT_EQUAL(String("foo"), testling.getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain()); - CPPUNIT_ASSERT_EQUAL(String("baz"), testling.getResource()); - CPPUNIT_ASSERT(!testling.isBare()); - } - - void testConstructorWithString_NoResource() { - JID testling("foo@bar"); - - CPPUNIT_ASSERT_EQUAL(String("foo"), testling.getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain()); - CPPUNIT_ASSERT_EQUAL(String(""), testling.getResource()); - CPPUNIT_ASSERT(testling.isBare()); - } - - void testConstructorWithString_EmptyResource() { - JID testling("bar/"); - - CPPUNIT_ASSERT(testling.isValid()); - CPPUNIT_ASSERT(!testling.isBare()); - } - - void testConstructorWithString_NoNode() { - JID testling("bar/baz"); - - CPPUNIT_ASSERT_EQUAL(String(""), testling.getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain()); - CPPUNIT_ASSERT_EQUAL(String("baz"), testling.getResource()); - CPPUNIT_ASSERT(!testling.isBare()); - } - - void testConstructorWithString_OnlyDomain() { - JID testling("bar"); - - CPPUNIT_ASSERT_EQUAL(String(""), testling.getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain()); - CPPUNIT_ASSERT_EQUAL(String(""), testling.getResource()); - CPPUNIT_ASSERT(testling.isBare()); - } - - void testConstructorWithString_UpperCaseNode() { - JID testling("Fo\xCE\xA9@bar"); - - CPPUNIT_ASSERT_EQUAL(String("fo\xCF\x89"), testling.getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain()); - } - - void testConstructorWithString_UpperCaseDomain() { - JID testling("Fo\xCE\xA9"); - - CPPUNIT_ASSERT_EQUAL(String("fo\xCF\x89"), testling.getDomain()); - } - - void testConstructorWithString_UpperCaseResource() { - JID testling("bar/Fo\xCE\xA9"); - - CPPUNIT_ASSERT_EQUAL(testling.getResource(), String("Fo\xCE\xA9")); - } - - void testConstructorWithString_EmptyNode() { - JID testling("@bar"); - - CPPUNIT_ASSERT(!testling.isValid()); - } - - void testConstructorWithStrings() { - JID testling("foo", "bar", "baz"); - - CPPUNIT_ASSERT_EQUAL(String("foo"), testling.getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain()); - CPPUNIT_ASSERT_EQUAL(String("baz"), testling.getResource()); - } - - void testIsBare() { - CPPUNIT_ASSERT(JID("foo@bar").isBare()); - } - - void testIsBare_NotBare() { - CPPUNIT_ASSERT(!JID("foo@bar/baz").isBare()); - } - - void testToBare() { - JID testling("foo@bar/baz"); - - CPPUNIT_ASSERT_EQUAL(String("foo"), testling.toBare().getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.toBare().getDomain()); - CPPUNIT_ASSERT(testling.toBare().isBare()); - } - - void testToBare_EmptyNode() { - JID testling("bar/baz"); - - CPPUNIT_ASSERT_EQUAL(String(""), testling.toBare().getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.toBare().getDomain()); - CPPUNIT_ASSERT(testling.toBare().isBare()); - } - - void testToBare_EmptyResource() { - JID testling("bar/"); - - CPPUNIT_ASSERT_EQUAL(String(""), testling.toBare().getNode()); - CPPUNIT_ASSERT_EQUAL(String("bar"), testling.toBare().getDomain()); - CPPUNIT_ASSERT(testling.toBare().isBare()); - } - - void testToString() { - JID testling("foo@bar/baz"); - - CPPUNIT_ASSERT_EQUAL(String("foo@bar/baz"), testling.toString()); - } - - void testToString_EmptyNode() { - JID testling("bar/baz"); - - CPPUNIT_ASSERT_EQUAL(String("bar/baz"), testling.toString()); - } - - void testToString_NoResource() { - JID testling("foo@bar"); - - CPPUNIT_ASSERT_EQUAL(String("foo@bar"), testling.toString()); - } - - void testToString_EmptyResource() { - JID testling("foo@bar/"); - - CPPUNIT_ASSERT_EQUAL(String("foo@bar/"), testling.toString()); - } - - void testCompare_SmallerNode() { - JID testling1("a@c"); - JID testling2("b@b"); - - CPPUNIT_ASSERT_EQUAL(-1, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_LargerNode() { - JID testling1("c@a"); - JID testling2("b@b"); - - CPPUNIT_ASSERT_EQUAL(1, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_SmallerDomain() { - JID testling1("x@a/c"); - JID testling2("x@b/b"); - - CPPUNIT_ASSERT_EQUAL(-1, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_LargerDomain() { - JID testling1("x@b/b"); - JID testling2("x@a/c"); - - CPPUNIT_ASSERT_EQUAL(1, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_SmallerResource() { - JID testling1("x@y/a"); - JID testling2("x@y/b"); - - CPPUNIT_ASSERT_EQUAL(-1, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_LargerResource() { - JID testling1("x@y/b"); - JID testling2("x@y/a"); - - CPPUNIT_ASSERT_EQUAL(1, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_Equal() { - JID testling1("x@y/z"); - JID testling2("x@y/z"); - - CPPUNIT_ASSERT_EQUAL(0, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_EqualWithoutResource() { - JID testling1("x@y/a"); - JID testling2("x@y/b"); - - CPPUNIT_ASSERT_EQUAL(0, testling1.compare(testling2, JID::WithoutResource)); - } - - void testCompare_NoResourceAndEmptyResource() { - JID testling1("x@y/"); - JID testling2("x@y"); - - CPPUNIT_ASSERT_EQUAL(1, testling1.compare(testling2, JID::WithResource)); - } - - void testCompare_EmptyResourceAndNoResource() { - JID testling1("x@y"); - JID testling2("x@y/"); - - CPPUNIT_ASSERT_EQUAL(-1, testling1.compare(testling2, JID::WithResource)); - } - - void testEquals() { - JID testling1("x@y/c"); - JID testling2("x@y/c"); - - CPPUNIT_ASSERT(testling1.equals(testling2, JID::WithResource)); - } - - void testEquals_NotEqual() { - JID testling1("x@y/c"); - JID testling2("x@y/d"); - - CPPUNIT_ASSERT(!testling1.equals(testling2, JID::WithResource)); - } - - void testEquals_WithoutResource() { - JID testling1("x@y/c"); - JID testling2("x@y/d"); - - CPPUNIT_ASSERT(testling1.equals(testling2, JID::WithoutResource)); - } - - void testSmallerThan() { - JID testling1("x@y/c"); - JID testling2("x@y/d"); - - CPPUNIT_ASSERT(testling1 < testling2); - } - - void testSmallerThan_Equal() { - JID testling1("x@y/d"); - JID testling2("x@y/d"); - - CPPUNIT_ASSERT(!(testling1 < testling2)); - } - - void testSmallerThan_Larger() { - JID testling1("x@y/d"); - JID testling2("x@y/c"); - - CPPUNIT_ASSERT(!(testling1 < testling2)); - } - - void testHasResource() { - JID testling("x@y/d"); - - CPPUNIT_ASSERT(!testling.isBare()); - } - - void testHasResource_NoResource() { - JID testling("x@y"); - - CPPUNIT_ASSERT(testling.isBare()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(JIDTest); diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiBrowseQuery.h b/Swiften/LinkLocal/DNSSD/Avahi/AvahiBrowseQuery.h deleted file mode 100644 index 229f97e..0000000 --- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiBrowseQuery.h +++ /dev/null @@ -1,64 +0,0 @@ -#pragma once - -#include <boost/bind.hpp> - -#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h" -#include "Swiften/EventLoop/MainEventLoop.h" - -namespace Swift { - class AvahiQuerier; - - class AvahiBrowseQuery : public DNSSDBrowseQuery, public AvahiQuery { - public: - AvahiBrowseQuery(boost::shared_ptr<AvahiQuerier> q) : AvahiQuery(q) { - } - - void startBrowsing() { - std::cout << "Start browsing" << std::endl; - avahi_threaded_poll_lock(querier->getThreadedPoll()); - std::cout << "Creating browser" << std::endl; - AvahiServiceBrowser* browser = avahi_service_browser_new(querier->getClient(), AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, "_presence._tcp", NULL, (AvahiLookupFlags) 0, &handleServiceDiscoveredStatic, this); - if (!browser) { - std::cout << "Error" << std::endl; - MainEventLoop::postEvent(boost::bind(boost::ref(onError)), shared_from_this()); - } - std::cout << "Unlocking" << std::endl; - avahi_threaded_poll_unlock(querier->getThreadedPoll()); - std::cout << "Browse started" << std::endl; - } - - void stopBrowsing() { - // TODO - } - - private: - static void handleServiceDiscoveredStatic(AvahiServiceBrowser *b, AvahiIfIndex interfaceIndex, AvahiProtocol protocol, AvahiBrowserEvent event, const char *name, const char *type, const char *domain, AvahiLookupResultFlags flags, void* context) { - static_cast<AvahiBrowseQuery*>(context)->handleServiceDiscovered(b, interfaceIndex, protocol, event, name, type, domain, flags); - } - - void handleServiceDiscovered(AvahiServiceBrowser *, AvahiIfIndex interfaceIndex, AvahiProtocol, AvahiBrowserEvent event, const char *name, const char *type, const char *domain, AvahiLookupResultFlags) { - switch (event) { - case AVAHI_BROWSER_FAILURE: - std::cout << "Service browse error" << std::endl; - MainEventLoop::postEvent(boost::bind(boost::ref(onError)), shared_from_this()); - break; - case AVAHI_BROWSER_NEW: { - DNSSDServiceID service(name, domain, type, interfaceIndex); - std::cout << "Service discovered " << name << " " << type << " " << domain << std::endl; - MainEventLoop::postEvent(boost::bind(boost::ref(onServiceAdded), service), shared_from_this()); - break; - } - case AVAHI_BROWSER_REMOVE: { - std::cout << "Service went away " << name << " " << type << " " << domain << std::endl; - DNSSDServiceID service(name, domain, type, interfaceIndex); - MainEventLoop::postEvent(boost::bind(boost::ref(onServiceRemoved), service), shared_from_this()); - break; - } - case AVAHI_BROWSER_ALL_FOR_NOW: - case AVAHI_BROWSER_CACHE_EXHAUSTED: - break; - } - } - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.cpp b/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.cpp deleted file mode 100644 index c4bfcb4..0000000 --- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.h" - -#include <iostream> - -#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiBrowseQuery.h" -#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveServiceQuery.h" -#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveHostnameQuery.h" -#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiRegisterQuery.h" - -namespace Swift { - -AvahiQuerier::AvahiQuerier() : client(NULL), threadedPoll(NULL) { -} - -AvahiQuerier::~AvahiQuerier() { -} - -boost::shared_ptr<DNSSDBrowseQuery> AvahiQuerier::createBrowseQuery() { - return boost::shared_ptr<DNSSDBrowseQuery>(new AvahiBrowseQuery(shared_from_this())); -} - -boost::shared_ptr<DNSSDRegisterQuery> AvahiQuerier::createRegisterQuery(const String& name, int port, const ByteArray& info) { - return boost::shared_ptr<DNSSDRegisterQuery>(new AvahiRegisterQuery(name, port, info, shared_from_this())); -} - -boost::shared_ptr<DNSSDResolveServiceQuery> AvahiQuerier::createResolveServiceQuery(const DNSSDServiceID& service) { - return boost::shared_ptr<DNSSDResolveServiceQuery>(new AvahiResolveServiceQuery(service, shared_from_this())); -} - -boost::shared_ptr<DNSSDResolveHostnameQuery> AvahiQuerier::createResolveHostnameQuery(const String& hostname, int interfaceIndex) { - return boost::shared_ptr<DNSSDResolveHostnameQuery>(new AvahiResolveHostnameQuery(hostname, interfaceIndex, shared_from_this())); -} - -void AvahiQuerier::start() { - std::cout << "Starrting querier" << std::endl; - assert(!threadedPoll); - threadedPoll = avahi_threaded_poll_new(); - int error; - assert(!client); - client = avahi_client_new( - avahi_threaded_poll_get(threadedPoll), - static_cast<AvahiClientFlags>(0), NULL, this, &error); // TODO - if (!client) { - // TODO - std::cerr << "Avahi Error: " << avahi_strerror(error) << std::endl; - return; - } - std::cout << "Starrting event loop" << std::endl; - avahi_threaded_poll_start(threadedPoll); -} - -void AvahiQuerier::stop() { - assert(threadedPoll); - avahi_threaded_poll_stop(threadedPoll); - assert(client); - avahi_client_free(client); - avahi_threaded_poll_free(threadedPoll); -} - -} diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.h b/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.h deleted file mode 100644 index ffb8441..0000000 --- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.h +++ /dev/null @@ -1,47 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/enable_shared_from_this.hpp> -#include <avahi-client/client.h> -#include <avahi-client/lookup.h> -#include <avahi-common/thread-watch.h> -#include <avahi-common/watch.h> -#include <avahi-common/malloc.h> -#include <avahi-common/error.h> - -#include "Swiften/LinkLocal/DNSSD/DNSSDQuerier.h" - -namespace Swift { - class ByteArray; - - class AvahiQuerier : - public DNSSDQuerier, - public boost::enable_shared_from_this<AvahiQuerier> { - public: - AvahiQuerier(); - ~AvahiQuerier(); - - boost::shared_ptr<DNSSDBrowseQuery> createBrowseQuery(); - boost::shared_ptr<DNSSDRegisterQuery> createRegisterQuery( - const String& name, int port, const ByteArray& info); - boost::shared_ptr<DNSSDResolveServiceQuery> createResolveServiceQuery( - const DNSSDServiceID&); - boost::shared_ptr<DNSSDResolveHostnameQuery> createResolveHostnameQuery( - const String& hostname, int interfaceIndex); - - void start(); - void stop(); - - AvahiThreadedPoll* getThreadedPoll() const { - return threadedPoll; - } - - AvahiClient* getClient() const { - return client; - } - - private: - AvahiClient* client; - AvahiThreadedPoll* threadedPoll; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.cpp b/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.cpp deleted file mode 100644 index 6b7c7f9..0000000 --- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h" -#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.h" - -namespace Swift { - -AvahiQuery::AvahiQuery(boost::shared_ptr<AvahiQuerier> q) : querier(q) { -} - -AvahiQuery::~AvahiQuery() { -} - -} - diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h b/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h deleted file mode 100644 index 847f3f7..0000000 --- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/enable_shared_from_this.hpp> - -#include "Swiften/EventLoop/EventOwner.h" - -namespace Swift { - class AvahiQuerier; - - class AvahiQuery : - public EventOwner, - public boost::enable_shared_from_this<AvahiQuery> { - public: - AvahiQuery(boost::shared_ptr<AvahiQuerier>); - virtual ~AvahiQuery(); - - protected: - boost::shared_ptr<AvahiQuerier> querier; - }; -} - diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiRegisterQuery.h b/Swiften/LinkLocal/DNSSD/Avahi/AvahiRegisterQuery.h deleted file mode 100644 index f42950e..0000000 --- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiRegisterQuery.h +++ /dev/null @@ -1,123 +0,0 @@ -#pragma once - -#include <avahi-client/publish.h> - -#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h" -#include "Swiften/Base/ByteArray.h" -#include "Swiften/EventLoop/MainEventLoop.h" - -namespace Swift { - class AvahiQuerier; - - class AvahiRegisterQuery : public DNSSDRegisterQuery, public AvahiQuery { - public: - AvahiRegisterQuery(const String& name, int port, const ByteArray& txtRecord, boost::shared_ptr<AvahiQuerier> querier) : AvahiQuery(querier), name(name), port(port), txtRecord(txtRecord), group(0) { - } - - void registerService() { - std::cout << "Registering service " << name << ":" << port << std::endl; - avahi_threaded_poll_lock(querier->getThreadedPoll()); - if (!group) { - std::cout << "Creating entry group" << std::endl; - group = avahi_entry_group_new(querier->getClient(), handleEntryGroupChange, this); - if (!group) { - std::cout << "Error ceating entry group" << std::endl; - MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>()), shared_from_this()); - } - } - - doRegisterService(); - avahi_threaded_poll_unlock(querier->getThreadedPoll()); - } - - void unregisterService() { - } - - void updateServiceInfo(const ByteArray& txtRecord) { - this->txtRecord = txtRecord; - avahi_threaded_poll_lock(querier->getThreadedPoll()); - assert(group); - avahi_entry_group_reset(group); - doRegisterService(); - avahi_threaded_poll_unlock(querier->getThreadedPoll()); - } - - private: - void doRegisterService() { - AvahiStringList* txtList; - avahi_string_list_parse(txtRecord.getData(), txtRecord.getSize(), &txtList); - - int result = avahi_entry_group_add_service_strlst(group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, (AvahiPublishFlags) 0, name.getUTF8Data(), "_presence._tcp", NULL, NULL, port, txtList); - if (result < 0) { - std::cout << "Error registering service: " << avahi_strerror(result) << std::endl; - MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>()), shared_from_this()); - } - result = avahi_entry_group_commit(group); - if (result < 0) { - std::cout << "Error registering service: " << avahi_strerror(result) << std::endl; - } - } - - static void handleEntryGroupChange(AvahiEntryGroup *g, AvahiEntryGroupState state, void *userdata) { - static_cast<AvahiRegisterQuery*>(userdata)->handleEntryGroupChange(g, state); - } - - void handleEntryGroupChange(AvahiEntryGroup* g, AvahiEntryGroupState state) { - std::cout << "ENtry group callback: " << state << std::endl; - switch (state) { - case AVAHI_ENTRY_GROUP_ESTABLISHED : - // Domain is a hack! - MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>(DNSSDServiceID(name, "local", "_presence._tcp", 0))), shared_from_this()); - std::cout << "Entry group established" << std::endl; - break; - case AVAHI_ENTRY_GROUP_COLLISION : { - std::cout << "Entry group collision" << std::endl; - /*char *n; - n = avahi_alternative_service_name(name); - avahi_free(name); - name = n;*/ - break; - } - - case AVAHI_ENTRY_GROUP_FAILURE : - std::cout << "Entry group failure " << avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g))) << std::endl; - break; - - case AVAHI_ENTRY_GROUP_UNCOMMITED: - case AVAHI_ENTRY_GROUP_REGISTERING: - ; - - /* - DNSServiceErrorType result = DNSServiceRegister( - &sdRef, 0, 0, name.getUTF8Data(), "_presence._tcp", NULL, NULL, port, - txtRecord.getSize(), txtRecord.getData(), - &AvahiRegisterQuery::handleServiceRegisteredStatic, this); - if (result != kDNSServiceErr_NoError) { - sdRef = NULL; - }*/ - //MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>()), shared_from_this()); - } - } - -/* - static void handleServiceRegisteredStatic(DNSServiceRef, DNSServiceFlags, DNSServiceErrorType errorCode, const char *name, const char *regtype, const char *domain, void *context) { - static_cast<AvahiRegisterQuery*>(context)->handleServiceRegistered(errorCode, name, regtype, domain); - } - - void handleServiceRegistered(DNSServiceErrorType errorCode, const char *name, const char *regtype, const char *domain) { - if (errorCode != kDNSServiceErr_NoError) { - MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>()), shared_from_this()); - } - else { - } - } - */ - - private: - String name; - int port; - ByteArray txtRecord; - AvahiEntryGroup* group; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveHostnameQuery.h b/Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveHostnameQuery.h deleted file mode 100644 index ee0e837..0000000 --- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveHostnameQuery.h +++ /dev/null @@ -1,31 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" -#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h" -#include "Swiften/EventLoop/MainEventLoop.h" -#include "Swiften/Network/HostAddress.h" - -#include <netinet/in.h> - -namespace Swift { - class AvahiQuerier; - - class AvahiResolveHostnameQuery : public DNSSDResolveHostnameQuery, public AvahiQuery { - public: - AvahiResolveHostnameQuery(const String& hostname, int, boost::shared_ptr<AvahiQuerier> querier) : AvahiQuery(querier), hostname(hostname) { - std::cout << "Resolving hostname " << hostname << std::endl; - } - - void run() { - MainEventLoop::postEvent(boost::bind(boost::ref(onHostnameResolved), boost::optional<HostAddress>(HostAddress(hostname))), shared_from_this()); - } - - void finish() { - } - - private: - HostAddress hostAddress; - String hostname; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveServiceQuery.h b/Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveServiceQuery.h deleted file mode 100644 index 8577837..0000000 --- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveServiceQuery.h +++ /dev/null @@ -1,73 +0,0 @@ -#pragma once - -#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h" -#include "Swiften/LinkLocal/LinkLocalServiceInfo.h" -#include "Swiften/Base/ByteArray.h" -#include "Swiften/EventLoop/MainEventLoop.h" - -namespace Swift { - class AvahiQuerier; - - class AvahiResolveServiceQuery : public DNSSDResolveServiceQuery, public AvahiQuery { - public: - AvahiResolveServiceQuery(const DNSSDServiceID& service, boost::shared_ptr<AvahiQuerier> querier) : AvahiQuery(querier), service(service), resolver(NULL) { - } - - void start() { - std::cout << "Resolving " << service.getName() << std::endl; - avahi_threaded_poll_lock(querier->getThreadedPoll()); - assert(!resolver); - resolver = avahi_service_resolver_new(querier->getClient(), service.getNetworkInterfaceID(), AVAHI_PROTO_UNSPEC, service.getName().getUTF8Data(), service.getType().getUTF8Data(), service.getDomain().getUTF8Data(), AVAHI_PROTO_UNSPEC, (AvahiLookupFlags) 0, handleServiceResolvedStatic, this); - if (!resolver) { - std::cout << "Error starting resolver" << std::endl; - MainEventLoop::postEvent(boost::bind(boost::ref(onServiceResolved), boost::optional<Result>()), shared_from_this()); - } - avahi_threaded_poll_unlock(querier->getThreadedPoll()); - } - - void stop() { - avahi_threaded_poll_lock(querier->getThreadedPoll()); - avahi_service_resolver_free(resolver); - resolver = NULL; - avahi_threaded_poll_unlock(querier->getThreadedPoll()); - } - - private: - static void handleServiceResolvedStatic(AvahiServiceResolver* resolver, AvahiIfIndex interfaceIndex, AvahiProtocol protocol, AvahiResolverEvent event, const char *name, const char *type, const char *domain, const char *host_name, const AvahiAddress *address, uint16_t port, AvahiStringList *txt, AvahiLookupResultFlags flags, void* context) { - static_cast<AvahiResolveServiceQuery*>(context)->handleServiceResolved(resolver, interfaceIndex, protocol, event, name, type, domain, host_name, address, port, txt, flags); - } - - void handleServiceResolved(AvahiServiceResolver* resolver, AvahiIfIndex, AvahiProtocol, AvahiResolverEvent event, const char *name, const char * type, const char* domain, const char * /*host_name*/, const AvahiAddress *address, uint16_t port, AvahiStringList *txt, AvahiLookupResultFlags) { - std::cout << "Resolve finished" << std::endl; - switch(event) { - case AVAHI_RESOLVER_FAILURE: - std::cout << "Resolve error " << avahi_strerror(avahi_client_errno(avahi_service_resolver_get_client(resolver))) << std::endl; - MainEventLoop::postEvent(boost::bind(boost::ref(onServiceResolved), boost::optional<Result>()), shared_from_this()); - break; - case AVAHI_RESOLVER_FOUND: { - char a[AVAHI_ADDRESS_STR_MAX]; - avahi_address_snprint(a, sizeof(a), address); - - ByteArray txtRecord; - txtRecord.resize(1024); - avahi_string_list_serialize(txt, txtRecord.getData(), txtRecord.getSize()); - - // FIXME: Probably not accurate - String fullname = String(name) + "." + String(type) + "." + String(domain) + "."; - std::cout << "Result: " << fullname << "->" << String(a) << ":" << port << std::endl; - MainEventLoop::postEvent( - boost::bind( - boost::ref(onServiceResolved), - Result(fullname, String(a), port, txtRecord)), - shared_from_this()); - break; - } - } - } - - private: - DNSSDServiceID service; - AvahiServiceResolver* resolver; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourBrowseQuery.h b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourBrowseQuery.h deleted file mode 100644 index 2dec2fb..0000000 --- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourBrowseQuery.h +++ /dev/null @@ -1,55 +0,0 @@ -#pragma once - -#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h" -#include "Swiften/EventLoop/MainEventLoop.h" - -namespace Swift { - class BonjourQuerier; - - class BonjourBrowseQuery : public DNSSDBrowseQuery, public BonjourQuery { - public: - BonjourBrowseQuery(boost::shared_ptr<BonjourQuerier> q) : BonjourQuery(q) { - DNSServiceErrorType result = DNSServiceBrowse( - &sdRef, 0, 0, "_presence._tcp", 0, - &BonjourBrowseQuery::handleServiceDiscoveredStatic, this); - if (result != kDNSServiceErr_NoError) { - sdRef = NULL; - } - } - - void startBrowsing() { - if (!sdRef) { - MainEventLoop::postEvent(boost::bind(boost::ref(onError)), shared_from_this()); - } - else { - run(); - } - } - - void stopBrowsing() { - finish(); - } - - private: - static void handleServiceDiscoveredStatic(DNSServiceRef, DNSServiceFlags flags, uint32_t interfaceIndex, DNSServiceErrorType errorCode, const char *name, const char *type, const char *domain, void *context) { - static_cast<BonjourBrowseQuery*>(context)->handleServiceDiscovered(flags, interfaceIndex, errorCode, name, type, domain); - } - - void handleServiceDiscovered(DNSServiceFlags flags, uint32_t interfaceIndex, DNSServiceErrorType errorCode, const char *name, const char *type, const char *domain) { - if (errorCode != kDNSServiceErr_NoError) { - MainEventLoop::postEvent(boost::bind(boost::ref(onError)), shared_from_this()); - } - else { - //std::cout << "Discovered service: name:" << name << " domain:" << domain << " type: " << type << std::endl; - DNSSDServiceID service(name, domain, type, interfaceIndex); - if (flags & kDNSServiceFlagsAdd) { - MainEventLoop::postEvent(boost::bind(boost::ref(onServiceAdded), service), shared_from_this()); - } - else { - MainEventLoop::postEvent(boost::bind(boost::ref(onServiceRemoved), service), shared_from_this()); - } - } - } - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.cpp b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.cpp deleted file mode 100644 index 9c9e64e..0000000 --- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.cpp +++ /dev/null @@ -1,129 +0,0 @@ -#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.h" - -#include <unistd.h> -#include <sys/socket.h> -#include <fcntl.h> - -#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourBrowseQuery.h" -#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourRegisterQuery.h" -#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveServiceQuery.h" -#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveHostnameQuery.h" -#include "Swiften/Base/foreach.h" - -namespace Swift { - -BonjourQuerier::BonjourQuerier() : stopRequested(false), thread(0) { - int fds[2]; - int result = pipe(fds); - assert(result == 0); - interruptSelectReadSocket = fds[0]; - fcntl(interruptSelectReadSocket, F_SETFL, fcntl(interruptSelectReadSocket, F_GETFL)|O_NONBLOCK); - interruptSelectWriteSocket = fds[1]; -} - -BonjourQuerier::~BonjourQuerier() { - assert(!thread); -} - -boost::shared_ptr<DNSSDBrowseQuery> BonjourQuerier::createBrowseQuery() { - return boost::shared_ptr<DNSSDBrowseQuery>(new BonjourBrowseQuery(shared_from_this())); -} - -boost::shared_ptr<DNSSDRegisterQuery> BonjourQuerier::createRegisterQuery(const String& name, int port, const ByteArray& info) { - return boost::shared_ptr<DNSSDRegisterQuery>(new BonjourRegisterQuery(name, port, info, shared_from_this())); -} - -boost::shared_ptr<DNSSDResolveServiceQuery> BonjourQuerier::createResolveServiceQuery(const DNSSDServiceID& service) { - return boost::shared_ptr<DNSSDResolveServiceQuery>(new BonjourResolveServiceQuery(service, shared_from_this())); -} - -boost::shared_ptr<DNSSDResolveHostnameQuery> BonjourQuerier::createResolveHostnameQuery(const String& hostname, int interfaceIndex) { - return boost::shared_ptr<DNSSDResolveHostnameQuery>(new BonjourResolveHostnameQuery(hostname, interfaceIndex, shared_from_this())); -} - -void BonjourQuerier::addRunningQuery(boost::shared_ptr<BonjourQuery> query) { - { - boost::lock_guard<boost::mutex> lock(runningQueriesMutex); - runningQueries.push_back(query); - } - runningQueriesAvailableEvent.notify_one(); - interruptSelect(); -} - -void BonjourQuerier::removeRunningQuery(boost::shared_ptr<BonjourQuery> query) { - { - boost::lock_guard<boost::mutex> lock(runningQueriesMutex); - runningQueries.erase(std::remove( - runningQueries.begin(), runningQueries.end(), query), runningQueries.end()); - } -} - -void BonjourQuerier::interruptSelect() { - char c = 0; - write(interruptSelectWriteSocket, &c, 1); -} - -void BonjourQuerier::start() { - assert(!thread); - thread = new boost::thread(boost::bind(&BonjourQuerier::run, shared_from_this())); -} - -void BonjourQuerier::stop() { - if (thread) { - stopRequested = true; - assert(runningQueries.empty()); - runningQueriesAvailableEvent.notify_one(); - interruptSelect(); - thread->join(); - delete thread; - thread = NULL; - stopRequested = false; - } -} - -void BonjourQuerier::run() { - while (!stopRequested) { - fd_set fdSet; - int maxSocket; - { - boost::unique_lock<boost::mutex> lock(runningQueriesMutex); - if (runningQueries.empty()) { - runningQueriesAvailableEvent.wait(lock); - if (runningQueries.empty()) { - continue; - } - } - - // Run all running queries - FD_ZERO(&fdSet); - maxSocket = interruptSelectReadSocket; - FD_SET(interruptSelectReadSocket, &fdSet); - - foreach(const boost::shared_ptr<BonjourQuery>& query, runningQueries) { - int socketID = query->getSocketID(); - maxSocket = std::max(maxSocket, socketID); - FD_SET(socketID, &fdSet); - } - } - - if (select(maxSocket+1, &fdSet, NULL, NULL, 0) <= 0) { - continue; - } - - if (FD_ISSET(interruptSelectReadSocket, &fdSet)) { - char dummy; - while (read(interruptSelectReadSocket, &dummy, 1) > 0) {} - } - - { - boost::lock_guard<boost::mutex> lock(runningQueriesMutex); - foreach(boost::shared_ptr<BonjourQuery> query, runningQueries) { - if (FD_ISSET(query->getSocketID(), &fdSet)) { - query->processResult(); - } - } - } - } -} - -} diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.h b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.h deleted file mode 100644 index d12f94f..0000000 --- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.h +++ /dev/null @@ -1,50 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/enable_shared_from_this.hpp> -#include <list> -#include <boost/thread.hpp> -#include <boost/thread/mutex.hpp> - -#include "Swiften/LinkLocal/DNSSD/DNSSDQuerier.h" -#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h" - -namespace Swift { - class ByteArray; - - class BonjourQuerier : - public DNSSDQuerier, - public boost::enable_shared_from_this<BonjourQuerier> { - public: - BonjourQuerier(); - ~BonjourQuerier(); - - boost::shared_ptr<DNSSDBrowseQuery> createBrowseQuery(); - boost::shared_ptr<DNSSDRegisterQuery> createRegisterQuery( - const String& name, int port, const ByteArray& info); - boost::shared_ptr<DNSSDResolveServiceQuery> createResolveServiceQuery( - const DNSSDServiceID&); - boost::shared_ptr<DNSSDResolveHostnameQuery> createResolveHostnameQuery( - const String& hostname, int interfaceIndex); - - void start(); - void stop(); - - private: - friend class BonjourQuery; - - void addRunningQuery(boost::shared_ptr<BonjourQuery>); - void removeRunningQuery(boost::shared_ptr<BonjourQuery>); - void interruptSelect(); - void run(); - - private: - bool stopRequested; - boost::thread* thread; - boost::mutex runningQueriesMutex; - std::list< boost::shared_ptr<BonjourQuery> > runningQueries; - int interruptSelectReadSocket; - int interruptSelectWriteSocket; - boost::condition_variable runningQueriesAvailableEvent; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.cpp b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.cpp deleted file mode 100644 index c1c481b..0000000 --- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h" -#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.h" - -namespace Swift { - -BonjourQuery::BonjourQuery(boost::shared_ptr<BonjourQuerier> q) : querier(q), sdRef(0) { -} - -BonjourQuery::~BonjourQuery() { - DNSServiceRefDeallocate(sdRef); -} - -void BonjourQuery::processResult() { - boost::lock_guard<boost::mutex> lock(sdRefMutex); - DNSServiceProcessResult(sdRef); -} - -int BonjourQuery::getSocketID() const { - boost::lock_guard<boost::mutex> lock(sdRefMutex); - return DNSServiceRefSockFD(sdRef); -} - -void BonjourQuery::run() { - querier->addRunningQuery(shared_from_this()); -} - -void BonjourQuery::finish() { - querier->removeRunningQuery(shared_from_this()); -} - -} diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h deleted file mode 100644 index bdb91a4..0000000 --- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include <dns_sd.h> -#include <boost/shared_ptr.hpp> -#include <boost/enable_shared_from_this.hpp> -#include <boost/thread/mutex.hpp> - -#include "Swiften/EventLoop/EventOwner.h" - -namespace Swift { - class BonjourQuerier; - - class BonjourQuery : - public EventOwner, - public boost::enable_shared_from_this<BonjourQuery> { - public: - BonjourQuery(boost::shared_ptr<BonjourQuerier>); - virtual ~BonjourQuery(); - - void processResult(); - int getSocketID() const; - - protected: - void run(); - void finish(); - - protected: - boost::shared_ptr<BonjourQuerier> querier; - mutable boost::mutex sdRefMutex; - DNSServiceRef sdRef; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourRegisterQuery.h b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourRegisterQuery.h deleted file mode 100644 index ddc2788..0000000 --- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourRegisterQuery.h +++ /dev/null @@ -1,55 +0,0 @@ -#pragma once - -#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h" -#include "Swiften/Base/ByteArray.h" -#include "Swiften/EventLoop/MainEventLoop.h" - -namespace Swift { - class BonjourQuerier; - - class BonjourRegisterQuery : public DNSSDRegisterQuery, public BonjourQuery { - public: - BonjourRegisterQuery(const String& name, int port, const ByteArray& txtRecord, boost::shared_ptr<BonjourQuerier> querier) : BonjourQuery(querier) { - DNSServiceErrorType result = DNSServiceRegister( - &sdRef, 0, 0, name.getUTF8Data(), "_presence._tcp", NULL, NULL, port, - txtRecord.getSize(), txtRecord.getData(), - &BonjourRegisterQuery::handleServiceRegisteredStatic, this); - if (result != kDNSServiceErr_NoError) { - sdRef = NULL; - } - } - - void registerService() { - if (sdRef) { - run(); - } - else { - MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>()), shared_from_this()); - } - } - - void unregisterService() { - finish(); - } - - void updateServiceInfo(const ByteArray& txtRecord) { - boost::lock_guard<boost::mutex> lock(sdRefMutex); - DNSServiceUpdateRecord(sdRef, NULL, NULL, txtRecord.getSize(), txtRecord.getData(), 0); - } - - private: - static void handleServiceRegisteredStatic(DNSServiceRef, DNSServiceFlags, DNSServiceErrorType errorCode, const char *name, const char *regtype, const char *domain, void *context) { - static_cast<BonjourRegisterQuery*>(context)->handleServiceRegistered(errorCode, name, regtype, domain); - } - - void handleServiceRegistered(DNSServiceErrorType errorCode, const char *name, const char *regtype, const char *domain) { - if (errorCode != kDNSServiceErr_NoError) { - MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>()), shared_from_this()); - } - else { - MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>(DNSSDServiceID(name, domain, regtype, 0))), shared_from_this()); - } - } - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveHostnameQuery.h b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveHostnameQuery.h deleted file mode 100644 index 7b5f19a..0000000 --- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveHostnameQuery.h +++ /dev/null @@ -1,63 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" -#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h" -#include "Swiften/EventLoop/MainEventLoop.h" -#include "Swiften/Network/HostAddress.h" - -#include <netinet/in.h> - -namespace Swift { - class BonjourQuerier; - - class BonjourResolveHostnameQuery : public DNSSDResolveHostnameQuery, public BonjourQuery { - public: - BonjourResolveHostnameQuery(const String& hostname, int interfaceIndex, boost::shared_ptr<BonjourQuerier> querier) : BonjourQuery(querier) { - DNSServiceErrorType result = DNSServiceGetAddrInfo( - &sdRef, 0, interfaceIndex, kDNSServiceProtocol_IPv4, - hostname.getUTF8Data(), - &BonjourResolveHostnameQuery::handleHostnameResolvedStatic, this); - if (result != kDNSServiceErr_NoError) { - sdRef = NULL; - } - } - - //void DNSSDResolveHostnameQuery::run() { - void run() { - if (sdRef) { - BonjourQuery::run(); - } - else { - MainEventLoop::postEvent(boost::bind(boost::ref(onHostnameResolved), boost::optional<HostAddress>()), shared_from_this()); - } - } - - void finish() { - BonjourQuery::finish(); - } - - private: - static void handleHostnameResolvedStatic(DNSServiceRef, DNSServiceFlags, uint32_t, DNSServiceErrorType errorCode, const char*, const struct sockaddr *address, uint32_t, void *context) { - static_cast<BonjourResolveHostnameQuery*>(context)->handleHostnameResolved(errorCode, address); - } - - void handleHostnameResolved(DNSServiceErrorType errorCode, const struct sockaddr *rawAddress) { - if (errorCode) { - MainEventLoop::postEvent( - boost::bind(boost::ref(onHostnameResolved), - boost::optional<HostAddress>()), - shared_from_this()); - } - else { - assert(rawAddress->sa_family == AF_INET); - const sockaddr_in* sa = reinterpret_cast<const sockaddr_in*>(rawAddress); - uint32_t address = ntohl(sa->sin_addr.s_addr); - MainEventLoop::postEvent(boost::bind( - boost::ref(onHostnameResolved), - HostAddress(reinterpret_cast<unsigned char*>(&address), 4)), - shared_from_this()); - } - } - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveServiceQuery.h b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveServiceQuery.h deleted file mode 100644 index 1c38179..0000000 --- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveServiceQuery.h +++ /dev/null @@ -1,58 +0,0 @@ -#pragma once - -#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h" -#include "Swiften/LinkLocal/LinkLocalServiceInfo.h" -#include "Swiften/Base/ByteArray.h" -#include "Swiften/EventLoop/MainEventLoop.h" - -namespace Swift { - class BonjourQuerier; - - class BonjourResolveServiceQuery : public DNSSDResolveServiceQuery, public BonjourQuery { - public: - BonjourResolveServiceQuery(const DNSSDServiceID& service, boost::shared_ptr<BonjourQuerier> querier) : BonjourQuery(querier) { - DNSServiceErrorType result = DNSServiceResolve( - &sdRef, 0, service.getNetworkInterfaceID(), - service.getName().getUTF8Data(), service.getType().getUTF8Data(), - service.getDomain().getUTF8Data(), - &BonjourResolveServiceQuery::handleServiceResolvedStatic, this); - if (result != kDNSServiceErr_NoError) { - sdRef = NULL; - } - } - - void start() { - if (sdRef) { - run(); - } - else { - MainEventLoop::postEvent(boost::bind(boost::ref(onServiceResolved), boost::optional<Result>()), shared_from_this()); - } - } - - void stop() { - finish(); - } - - private: - static void handleServiceResolvedStatic(DNSServiceRef, DNSServiceFlags, uint32_t, DNSServiceErrorType errorCode, const char *fullname, const char *hosttarget, uint16_t port, uint16_t txtLen, const unsigned char *txtRecord, void *context) { - static_cast<BonjourResolveServiceQuery*>(context)->handleServiceResolved(errorCode, fullname, hosttarget, port, txtLen, txtRecord); - } - - void handleServiceResolved(DNSServiceErrorType errorCode, const char* fullName, const char* host, uint16_t port, uint16_t txtLen, const unsigned char *txtRecord) { - if (errorCode != kDNSServiceErr_NoError) { - MainEventLoop::postEvent(boost::bind(boost::ref(onServiceResolved), boost::optional<Result>()), shared_from_this()); - } - else { - //std::cout << "Service resolved: name:" << fullName << " host:" << host << " port:" << port << std::endl; - MainEventLoop::postEvent( - boost::bind( - boost::ref(onServiceResolved), - Result(String(fullName), String(host), port, - ByteArray(reinterpret_cast<const char*>(txtRecord), txtLen))), - shared_from_this()); - } - } - }; -} diff --git a/Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.cpp b/Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.cpp deleted file mode 100644 index 1dbff2c..0000000 --- a/Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h" - -namespace Swift { - -DNSSDBrowseQuery::~DNSSDBrowseQuery() { -} - -} diff --git a/Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h b/Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h deleted file mode 100644 index 9b30858..0000000 --- a/Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include <boost/signal.hpp> - -#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h" - -namespace Swift { - class DNSSDBrowseQuery { - public: - virtual ~DNSSDBrowseQuery(); - - virtual void startBrowsing() = 0; - virtual void stopBrowsing() = 0; - - boost::signal<void (const DNSSDServiceID&)> onServiceAdded; - boost::signal<void (const DNSSDServiceID&)> onServiceRemoved; - boost::signal<void ()> onError; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/DNSSDQuerier.cpp b/Swiften/LinkLocal/DNSSD/DNSSDQuerier.cpp deleted file mode 100644 index cc8d6ef..0000000 --- a/Swiften/LinkLocal/DNSSD/DNSSDQuerier.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/LinkLocal/DNSSD/DNSSDQuerier.h" - -namespace Swift { - -DNSSDQuerier::~DNSSDQuerier() { -} - -} diff --git a/Swiften/LinkLocal/DNSSD/DNSSDQuerier.h b/Swiften/LinkLocal/DNSSD/DNSSDQuerier.h deleted file mode 100644 index efcc140..0000000 --- a/Swiften/LinkLocal/DNSSD/DNSSDQuerier.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> - -namespace Swift { - class String; - class ByteArray; - class DNSSDServiceID; - class DNSSDBrowseQuery; - class DNSSDRegisterQuery; - class DNSSDResolveServiceQuery; - class DNSSDResolveHostnameQuery; - - class DNSSDQuerier { - public: - virtual ~DNSSDQuerier(); - - virtual void start() = 0; - virtual void stop() = 0; - - virtual boost::shared_ptr<DNSSDBrowseQuery> createBrowseQuery() = 0; - virtual boost::shared_ptr<DNSSDRegisterQuery> createRegisterQuery( - const String& name, int port, const ByteArray& info) = 0; - virtual boost::shared_ptr<DNSSDResolveServiceQuery> createResolveServiceQuery( - const DNSSDServiceID&) = 0; - virtual boost::shared_ptr<DNSSDResolveHostnameQuery> createResolveHostnameQuery( - const String& hostname, int interfaceIndex) = 0; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.cpp b/Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.cpp deleted file mode 100644 index bbb8692..0000000 --- a/Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h" - -namespace Swift { - -DNSSDRegisterQuery::~DNSSDRegisterQuery() { -} - -} diff --git a/Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h b/Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h deleted file mode 100644 index 4a04fa9..0000000 --- a/Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include <boost/signal.hpp> -#include <boost/optional.hpp> - -#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h" - -namespace Swift { - class ByteArray; - - class DNSSDRegisterQuery { - public: - virtual ~DNSSDRegisterQuery(); - - virtual void registerService() = 0; - virtual void unregisterService() = 0; - virtual void updateServiceInfo(const ByteArray& info) = 0; - - boost::signal<void (boost::optional<DNSSDServiceID>)> onRegisterFinished; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.cpp b/Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.cpp deleted file mode 100644 index e247e39..0000000 --- a/Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h" - -namespace Swift { - -DNSSDResolveHostnameQuery::~DNSSDResolveHostnameQuery() { -} - -} diff --git a/Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h b/Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h deleted file mode 100644 index 1b9f291..0000000 --- a/Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include <boost/signal.hpp> -#include <boost/optional.hpp> - -#include "Swiften/Network/HostAddress.h" - -namespace Swift { - class DNSSDResolveHostnameQuery { - public: - virtual ~DNSSDResolveHostnameQuery(); - - virtual void run() = 0; - virtual void finish() = 0; - - boost::signal<void (const boost::optional<HostAddress>&)> onHostnameResolved; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.cpp b/Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.cpp deleted file mode 100644 index 67a5d66..0000000 --- a/Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h" - -namespace Swift { - -DNSSDResolveServiceQuery::~DNSSDResolveServiceQuery() { -} - -} diff --git a/Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h b/Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h deleted file mode 100644 index 217e396..0000000 --- a/Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#include <boost/signal.hpp> -#include <boost/optional.hpp> - -#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h" -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - class DNSSDResolveServiceQuery { - public: - struct Result { - Result(const String& fullName, const String& host, int port, const ByteArray& info) : - fullName(fullName), host(host), port(port), info(info) {} - String fullName; - String host; - int port; - ByteArray info; - }; - - virtual ~DNSSDResolveServiceQuery(); - - virtual void start() = 0; - virtual void stop() = 0; - - boost::signal<void (const boost::optional<Result>&)> onServiceResolved; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/DNSSDServiceID.cpp b/Swiften/LinkLocal/DNSSD/DNSSDServiceID.cpp deleted file mode 100644 index b360ee5..0000000 --- a/Swiften/LinkLocal/DNSSD/DNSSDServiceID.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h" - -namespace Swift { - -const char* DNSSDServiceID::PresenceServiceType = "_presence._tcp"; - -} diff --git a/Swiften/LinkLocal/DNSSD/DNSSDServiceID.h b/Swiften/LinkLocal/DNSSD/DNSSDServiceID.h deleted file mode 100644 index ba7828b..0000000 --- a/Swiften/LinkLocal/DNSSD/DNSSDServiceID.h +++ /dev/null @@ -1,66 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" - -namespace Swift { - class DNSSDServiceID { - public: - static const char* PresenceServiceType; - - DNSSDServiceID( - const String& name, - const String& domain, - const String& type = PresenceServiceType, - int networkInterface = 0) : - name(name), - domain(domain), - type(type), - networkInterface(networkInterface) { - } - - bool operator==(const DNSSDServiceID& o) const { - return name == o.name && domain == o.domain && type == o.type && (networkInterface != 0 && o.networkInterface != 0 ? networkInterface == o.networkInterface : true); - } - - bool operator<(const DNSSDServiceID& o) const { - if (o.name == name) { - if (o.domain == domain) { - if (o.type == type) { - return networkInterface < o.networkInterface; - } - else { - return type < o.type; - } - } - else { - return domain < o.domain; - } - } - else { - return o.name < name; - } - } - - const String& getName() const { - return name; - } - - const String& getDomain() const { - return domain; - } - - const String& getType() const { - return type; - } - - int getNetworkInterfaceID() const { - return networkInterface; - } - - private: - String name; - String domain; - String type; - int networkInterface; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDBrowseQuery.h b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDBrowseQuery.h deleted file mode 100644 index 5a0b93b..0000000 --- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDBrowseQuery.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h" - -namespace Swift { - class FakeDNSSDQuerier; - - class FakeDNSSDBrowseQuery : public DNSSDBrowseQuery, public FakeDNSSDQuery { - public: - FakeDNSSDBrowseQuery(boost::shared_ptr<FakeDNSSDQuerier> querier) : FakeDNSSDQuery(querier) { - } - - void startBrowsing() { - run(); - } - - void stopBrowsing() { - finish(); - } - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.cpp b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.cpp deleted file mode 100644 index c26f8ee..0000000 --- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.cpp +++ /dev/null @@ -1,130 +0,0 @@ -#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.h" - -#include <boost/bind.hpp> - -#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDBrowseQuery.h" -#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDRegisterQuery.h" -#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveServiceQuery.h" -#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveHostnameQuery.h" -#include "Swiften/EventLoop/MainEventLoop.h" - -namespace Swift { - -FakeDNSSDQuerier::FakeDNSSDQuerier(const String& domain) : domain(domain) { -} - -FakeDNSSDQuerier::~FakeDNSSDQuerier() { - if (!runningQueries.empty()) { - std::cerr << "FakeDNSSDQuerier: Running queries not empty at destruction time" << std::endl; - } -} - -boost::shared_ptr<DNSSDBrowseQuery> FakeDNSSDQuerier::createBrowseQuery() { - return boost::shared_ptr<DNSSDBrowseQuery>(new FakeDNSSDBrowseQuery(shared_from_this())); -} - -boost::shared_ptr<DNSSDRegisterQuery> FakeDNSSDQuerier::createRegisterQuery(const String& name, int port, const ByteArray& info) { - return boost::shared_ptr<DNSSDRegisterQuery>(new FakeDNSSDRegisterQuery(name, port, info, shared_from_this())); -} - -boost::shared_ptr<DNSSDResolveServiceQuery> FakeDNSSDQuerier::createResolveServiceQuery(const DNSSDServiceID& service) { - return boost::shared_ptr<DNSSDResolveServiceQuery>(new FakeDNSSDResolveServiceQuery(service, shared_from_this())); -} - -boost::shared_ptr<DNSSDResolveHostnameQuery> FakeDNSSDQuerier::createResolveHostnameQuery(const String& hostname, int interfaceIndex) { - return boost::shared_ptr<DNSSDResolveHostnameQuery>(new FakeDNSSDResolveHostnameQuery(hostname, interfaceIndex, shared_from_this())); -} - -void FakeDNSSDQuerier::addRunningQuery(boost::shared_ptr<FakeDNSSDQuery> query) { - runningQueries.push_back(query); - if (boost::shared_ptr<FakeDNSSDBrowseQuery> browseQuery = boost::dynamic_pointer_cast<FakeDNSSDBrowseQuery>(query)) { - foreach(const DNSSDServiceID& service, services) { - MainEventLoop::postEvent(boost::bind(boost::ref(browseQuery->onServiceAdded), service), shared_from_this()); - } - } - else if (boost::shared_ptr<FakeDNSSDResolveServiceQuery> resolveQuery = boost::dynamic_pointer_cast<FakeDNSSDResolveServiceQuery>(query)) { - for(ServiceInfoMap::const_iterator i = serviceInfo.begin(); i != serviceInfo.end(); ++i) { - if (i->first == resolveQuery->service) { - MainEventLoop::postEvent(boost::bind(boost::ref(resolveQuery->onServiceResolved), i->second), shared_from_this()); - } - } - } - else if (boost::shared_ptr<FakeDNSSDRegisterQuery> registerQuery = boost::dynamic_pointer_cast<FakeDNSSDRegisterQuery>(query)) { - DNSSDServiceID service(registerQuery->name, domain); - MainEventLoop::postEvent(boost::bind(boost::ref(registerQuery->onRegisterFinished), service), shared_from_this()); - } - else if (boost::shared_ptr<FakeDNSSDResolveHostnameQuery> resolveHostnameQuery = boost::dynamic_pointer_cast<FakeDNSSDResolveHostnameQuery>(query)) { - std::map<String,boost::optional<HostAddress> >::const_iterator i = addresses.find(resolveHostnameQuery->hostname); - if (i != addresses.end()) { - MainEventLoop::postEvent( - boost::bind( - boost::ref(resolveHostnameQuery->onHostnameResolved), i->second), - shared_from_this()); - } - } -} - -void FakeDNSSDQuerier::removeRunningQuery(boost::shared_ptr<FakeDNSSDQuery> query) { - runningQueries.erase(std::remove( - runningQueries.begin(), runningQueries.end(), query), runningQueries.end()); -} - -void FakeDNSSDQuerier::addService(const DNSSDServiceID& id) { - services.insert(id); - foreach(const boost::shared_ptr<FakeDNSSDBrowseQuery>& query, getQueries<FakeDNSSDBrowseQuery>()) { - MainEventLoop::postEvent(boost::bind(boost::ref(query->onServiceAdded), id), shared_from_this()); - } -} - -void FakeDNSSDQuerier::removeService(const DNSSDServiceID& id) { - services.erase(id); - serviceInfo.erase(id); - foreach(const boost::shared_ptr<FakeDNSSDBrowseQuery>& query, getQueries<FakeDNSSDBrowseQuery>()) { - MainEventLoop::postEvent(boost::bind(boost::ref(query->onServiceRemoved), id), shared_from_this()); - } -} - -void FakeDNSSDQuerier::setServiceInfo(const DNSSDServiceID& id, const DNSSDResolveServiceQuery::Result& info) { - std::pair<ServiceInfoMap::iterator, bool> r = serviceInfo.insert(std::make_pair(id, info)); - if (!r.second) { - r.first->second = info; - } - foreach(const boost::shared_ptr<FakeDNSSDResolveServiceQuery>& query, getQueries<FakeDNSSDResolveServiceQuery>()) { - if (query->service == id) { - MainEventLoop::postEvent(boost::bind(boost::ref(query->onServiceResolved), info), shared_from_this()); - } - } -} - -bool FakeDNSSDQuerier::isServiceRegistered(const String& name, int port, const ByteArray& info) { - foreach(const boost::shared_ptr<FakeDNSSDRegisterQuery>& query, getQueries<FakeDNSSDRegisterQuery>()) { - if (query->name == name && query->port == port && query->info == info) { - return true; - } - } - return false; -} - -void FakeDNSSDQuerier::setBrowseError() { - foreach(const boost::shared_ptr<FakeDNSSDBrowseQuery>& query, getQueries<FakeDNSSDBrowseQuery>()) { - MainEventLoop::postEvent(boost::ref(query->onError), shared_from_this()); - } -} - -void FakeDNSSDQuerier::setRegisterError() { - foreach(const boost::shared_ptr<FakeDNSSDRegisterQuery>& query, getQueries<FakeDNSSDRegisterQuery>()) { - MainEventLoop::postEvent(boost::bind(boost::ref(query->onRegisterFinished), boost::optional<DNSSDServiceID>()), shared_from_this()); - } -} - -void FakeDNSSDQuerier::setAddress(const String& hostname, boost::optional<HostAddress> address) { - addresses[hostname] = address; - foreach(const boost::shared_ptr<FakeDNSSDResolveHostnameQuery>& query, getQueries<FakeDNSSDResolveHostnameQuery>()) { - if (query->hostname == hostname) { - MainEventLoop::postEvent(boost::bind( - boost::ref(query->onHostnameResolved), address), shared_from_this()); - } - } -} - -} diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.h b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.h deleted file mode 100644 index 22bca0c..0000000 --- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.h +++ /dev/null @@ -1,71 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/enable_shared_from_this.hpp> -#include <list> -#include <set> - -#include "Swiften/Base/foreach.h" -#include "Swiften/Base/String.h" -#include "Swiften/EventLoop/EventOwner.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDQuerier.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h" -#include "Swiften/Network/HostAddress.h" - -namespace Swift { - class ByteArray; - class FakeDNSSDQuery; - class FakeDNSSDBrowseQuery; - - class FakeDNSSDQuerier : - public DNSSDQuerier, - public EventOwner, - public boost::enable_shared_from_this<FakeDNSSDQuerier> { - public: - FakeDNSSDQuerier(const String& domain); - ~FakeDNSSDQuerier(); - - void start() {} - void stop() {} - - boost::shared_ptr<DNSSDBrowseQuery> createBrowseQuery(); - boost::shared_ptr<DNSSDRegisterQuery> createRegisterQuery( - const String& name, int port, const ByteArray& info); - boost::shared_ptr<DNSSDResolveServiceQuery> createResolveServiceQuery( - const DNSSDServiceID&); - boost::shared_ptr<DNSSDResolveHostnameQuery> createResolveHostnameQuery( - const String& hostname, int interfaceIndex); - - void addRunningQuery(boost::shared_ptr<FakeDNSSDQuery>); - void removeRunningQuery(boost::shared_ptr<FakeDNSSDQuery>); - - void addService(const DNSSDServiceID& id); - void removeService(const DNSSDServiceID& id); - void setServiceInfo(const DNSSDServiceID& id, const DNSSDResolveServiceQuery::Result& info); - bool isServiceRegistered(const String& name, int port, const ByteArray& info); - void setAddress(const String& hostname, boost::optional<HostAddress> address); - - void setBrowseError(); - void setRegisterError(); - - private: - template<typename T> - std::vector< boost::shared_ptr<T> > getQueries() const { - std::vector< boost::shared_ptr<T> > result; - foreach(const boost::shared_ptr<FakeDNSSDQuery>& query, runningQueries) { - if (boost::shared_ptr<T> resultQuery = boost::dynamic_pointer_cast<T>(query)) { - result.push_back(resultQuery); - } - } - return result; - } - - private: - String domain; - std::list< boost::shared_ptr<FakeDNSSDQuery> > runningQueries; - std::set<DNSSDServiceID> services; - typedef std::map<DNSSDServiceID,DNSSDResolveServiceQuery::Result> ServiceInfoMap; - ServiceInfoMap serviceInfo; - std::map<String, boost::optional<HostAddress> > addresses; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.cpp b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.cpp deleted file mode 100644 index ced7850..0000000 --- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h" -#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.h" - -namespace Swift { - -FakeDNSSDQuery::FakeDNSSDQuery(boost::shared_ptr<FakeDNSSDQuerier> querier) : querier(querier) { -} - -FakeDNSSDQuery::~FakeDNSSDQuery() { -} - -void FakeDNSSDQuery::run() { - querier->addRunningQuery(shared_from_this()); -} - -void FakeDNSSDQuery::finish() { - querier->removeRunningQuery(shared_from_this()); -} - -} diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h deleted file mode 100644 index 9fca1d4..0000000 --- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/enable_shared_from_this.hpp> - -#include "Swiften/EventLoop/EventOwner.h" - -namespace Swift { - class FakeDNSSDQuerier; - - class FakeDNSSDQuery : - public EventOwner, - public boost::enable_shared_from_this<FakeDNSSDQuery> { - public: - FakeDNSSDQuery(boost::shared_ptr<FakeDNSSDQuerier>); - virtual ~FakeDNSSDQuery(); - - protected: - void run(); - void finish(); - - protected: - boost::shared_ptr<FakeDNSSDQuerier> querier; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDRegisterQuery.h b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDRegisterQuery.h deleted file mode 100644 index 82ec623..0000000 --- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDRegisterQuery.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h" -#include "Swiften/Base/ByteArray.h" -#include "Swiften/Base/String.h" - -namespace Swift { - class FakeDNSSDQuerier; - - class FakeDNSSDRegisterQuery : public DNSSDRegisterQuery, public FakeDNSSDQuery { - public: - FakeDNSSDRegisterQuery(const String& name, int port, const ByteArray& info, boost::shared_ptr<FakeDNSSDQuerier> querier) : FakeDNSSDQuery(querier), name(name), port(port), info(info) { - } - - void registerService() { - run(); - } - - void updateServiceInfo(const ByteArray& i) { - info = i; - } - - void unregisterService() { - finish(); - } - - String name; - int port; - ByteArray info; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveHostnameQuery.h b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveHostnameQuery.h deleted file mode 100644 index 5ed42af..0000000 --- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveHostnameQuery.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" -#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h" -#include "Swiften/Network/HostAddress.h" - -namespace Swift { - class FakeDNSSDQuerier; - - class FakeDNSSDResolveHostnameQuery : public DNSSDResolveHostnameQuery, public FakeDNSSDQuery { - public: - FakeDNSSDResolveHostnameQuery(const String& hostname, int interfaceIndex, boost::shared_ptr<FakeDNSSDQuerier> querier) : FakeDNSSDQuery(querier), hostname(hostname), interfaceIndex(interfaceIndex) { - } - - void run() { - FakeDNSSDQuery::run(); - } - - void finish() { - FakeDNSSDQuery::finish(); - } - - String hostname; - int interfaceIndex; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveServiceQuery.h b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveServiceQuery.h deleted file mode 100644 index 60d35e5..0000000 --- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveServiceQuery.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h" -#include "Swiften/LinkLocal/LinkLocalServiceInfo.h" - -namespace Swift { - class FakeDNSSDQuerier; - - class FakeDNSSDResolveServiceQuery : public DNSSDResolveServiceQuery, public FakeDNSSDQuery { - public: - FakeDNSSDResolveServiceQuery(const DNSSDServiceID& service, boost::shared_ptr<FakeDNSSDQuerier> querier) : FakeDNSSDQuery(querier), service(service) { - } - - void start() { - run(); - } - - void stop() { - finish(); - } - - DNSSDServiceID service; - }; -} diff --git a/Swiften/LinkLocal/DNSSD/PlatformDNSSDQuerierFactory.cpp b/Swiften/LinkLocal/DNSSD/PlatformDNSSDQuerierFactory.cpp deleted file mode 100644 index 7b06350..0000000 --- a/Swiften/LinkLocal/DNSSD/PlatformDNSSDQuerierFactory.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "Swiften/LinkLocal/DNSSD/PlatformDNSSDQuerierFactory.h" - -#if defined(HAVE_BONJOUR) -#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.h" -#elif defined(HAVE_AVAHI) -#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.h" -#endif - - -namespace Swift { - -boost::shared_ptr<DNSSDQuerier> PlatformDNSSDQuerierFactory::createQuerier() { -#if defined(HAVE_BONJOUR) - return boost::shared_ptr<DNSSDQuerier>(new BonjourQuerier()); -#elif defined(HAVE_AVAHI) - return boost::shared_ptr<DNSSDQuerier>(new AvahiQuerier()); -#else - return boost::shared_ptr<DNSSDQuerier>(); -#endif -} - -} diff --git a/Swiften/LinkLocal/DNSSD/PlatformDNSSDQuerierFactory.h b/Swiften/LinkLocal/DNSSD/PlatformDNSSDQuerierFactory.h deleted file mode 100644 index b52814b..0000000 --- a/Swiften/LinkLocal/DNSSD/PlatformDNSSDQuerierFactory.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> - -namespace Swift { - class DNSSDQuerier; - - class PlatformDNSSDQuerierFactory { - public: - boost::shared_ptr<DNSSDQuerier> createQuerier(); - }; -} diff --git a/Swiften/LinkLocal/IncomingLinkLocalSession.cpp b/Swiften/LinkLocal/IncomingLinkLocalSession.cpp deleted file mode 100644 index 77910e6..0000000 --- a/Swiften/LinkLocal/IncomingLinkLocalSession.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include "Swiften/LinkLocal/IncomingLinkLocalSession.h" - -#include <boost/bind.hpp> - -#include "Swiften/Elements/ProtocolHeader.h" -#include "Swiften/Network/Connection.h" -#include "Swiften/StreamStack/StreamStack.h" -#include "Swiften/StreamStack/ConnectionLayer.h" -#include "Swiften/StreamStack/XMPPLayer.h" -#include "Swiften/Elements/StreamFeatures.h" -#include "Swiften/Elements/IQ.h" - -namespace Swift { - -IncomingLinkLocalSession::IncomingLinkLocalSession( - const JID& localJID, - boost::shared_ptr<Connection> connection, - PayloadParserFactoryCollection* payloadParserFactories, - PayloadSerializerCollection* payloadSerializers) : - Session(connection, payloadParserFactories, payloadSerializers), - initialized(false) { - setLocalJID(localJID); -} - -void IncomingLinkLocalSession::handleStreamStart(const ProtocolHeader& incomingHeader) { - setRemoteJID(JID(incomingHeader.getFrom())); - if (!getRemoteJID().isValid()) { - finishSession(); - return; - } - - ProtocolHeader header; - header.setFrom(getLocalJID()); - getXMPPLayer()->writeHeader(header); - - if (incomingHeader.getVersion() == "1.0") { - getXMPPLayer()->writeElement(boost::shared_ptr<StreamFeatures>(new StreamFeatures())); - } - else { - setInitialized(); - } -} - -void IncomingLinkLocalSession::handleElement(boost::shared_ptr<Element> element) { - boost::shared_ptr<Stanza> stanza = boost::dynamic_pointer_cast<Stanza>(element); - // If we get our first stanza before streamfeatures, our session is implicitly - // initialized - if (stanza && !isInitialized()) { - setInitialized(); - } - - onElementReceived(element); -} - -void IncomingLinkLocalSession::setInitialized() { - initialized = true; - onSessionStarted(); -} - - - -} diff --git a/Swiften/LinkLocal/IncomingLinkLocalSession.h b/Swiften/LinkLocal/IncomingLinkLocalSession.h deleted file mode 100644 index e3f0460..0000000 --- a/Swiften/LinkLocal/IncomingLinkLocalSession.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/signal.hpp> - -#include "Swiften/Session/Session.h" -#include "Swiften/JID/JID.h" -#include "Swiften/Network/Connection.h" - -namespace Swift { - class ProtocolHeader; - class String; - class Element; - class PayloadParserFactoryCollection; - class PayloadSerializerCollection; - - class IncomingLinkLocalSession : public Session { - public: - IncomingLinkLocalSession( - const JID& localJID, - boost::shared_ptr<Connection> connection, - PayloadParserFactoryCollection* payloadParserFactories, - PayloadSerializerCollection* payloadSerializers); - - boost::signal<void ()> onSessionStarted; - - private: - void handleElement(boost::shared_ptr<Element>); - void handleStreamStart(const ProtocolHeader&); - void setInitialized(); - bool isInitialized() const { - return initialized; - } - - bool initialized; - }; -} diff --git a/Swiften/LinkLocal/LinkLocalConnector.cpp b/Swiften/LinkLocal/LinkLocalConnector.cpp deleted file mode 100644 index fba4a4e..0000000 --- a/Swiften/LinkLocal/LinkLocalConnector.cpp +++ /dev/null @@ -1,68 +0,0 @@ -#include "Swiften/LinkLocal/LinkLocalConnector.h" - -#include <boost/bind.hpp> - -#include "Swiften/Network/Connection.h" -#include "Swiften/Network/ConnectionFactory.h" -#include "Swiften/Network/HostAddress.h" -#include "Swiften/Network/HostAddressPort.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDQuerier.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h" - -namespace Swift { - -LinkLocalConnector::LinkLocalConnector( - const LinkLocalService& service, - boost::shared_ptr<DNSSDQuerier> querier, - boost::shared_ptr<Connection> connection) : - service(service), - querier(querier), - connection(connection) { -} - -LinkLocalConnector::~LinkLocalConnector() { - assert(!resolveQuery); -} - -void LinkLocalConnector::connect() { - resolveQuery = querier->createResolveHostnameQuery( - service.getHostname(), - service.getID().getNetworkInterfaceID()); - resolveQuery->onHostnameResolved.connect(boost::bind( - &LinkLocalConnector::handleHostnameResolved, - boost::dynamic_pointer_cast<LinkLocalConnector>(shared_from_this()), - _1)); - resolveQuery->run(); -} - -void LinkLocalConnector::cancel() { - if (resolveQuery) { - resolveQuery->finish(); - } - resolveQuery.reset(); - connection->disconnect(); -} - -void LinkLocalConnector::handleHostnameResolved(const boost::optional<HostAddress>& address) { - resolveQuery->finish(); - resolveQuery.reset(); - if (address) { - connection->onConnectFinished.connect( - boost::bind(boost::ref(onConnectFinished), _1)); - connection->connect(HostAddressPort(*address, service.getPort())); - } - else { - onConnectFinished(true); - } -} - -void LinkLocalConnector::handleConnected(bool error) { - onConnectFinished(error); -} - -void LinkLocalConnector::queueElement(boost::shared_ptr<Element> element) { - queuedElements.push_back(element); -} - - -} diff --git a/Swiften/LinkLocal/LinkLocalConnector.h b/Swiften/LinkLocal/LinkLocalConnector.h deleted file mode 100644 index 0b6baef..0000000 --- a/Swiften/LinkLocal/LinkLocalConnector.h +++ /dev/null @@ -1,57 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/signal.hpp> -#include <boost/enable_shared_from_this.hpp> -#include <vector> - -#include "Swiften/Network/Connection.h" -#include "Swiften/LinkLocal/LinkLocalService.h" - -namespace Swift { - class ConnectionFactory; - class HostAddress; - class Element; - class PayloadParserFactoryCollection; - class PayloadSerializerCollection; - class DNSSDQuerier; - class DNSSDResolveHostnameQuery; - - class LinkLocalConnector : public boost::enable_shared_from_this<LinkLocalConnector> { - public: - LinkLocalConnector( - const LinkLocalService& service, - boost::shared_ptr<DNSSDQuerier> querier, - boost::shared_ptr<Connection> connection); - ~LinkLocalConnector(); - - const LinkLocalService& getService() const { - return service; - } - - void connect(); - void cancel(); - void queueElement(boost::shared_ptr<Element> element); - - const std::vector<boost::shared_ptr<Element> >& getQueuedElements() const { - return queuedElements; - } - - boost::shared_ptr<Connection> getConnection() const { - return connection; - } - - boost::signal<void (bool)> onConnectFinished; - - private: - void handleHostnameResolved(const boost::optional<HostAddress>& address); - void handleConnected(bool error); - - private: - LinkLocalService service; - boost::shared_ptr<DNSSDQuerier> querier; - boost::shared_ptr<DNSSDResolveHostnameQuery> resolveQuery; - boost::shared_ptr<Connection> connection; - std::vector<boost::shared_ptr<Element> > queuedElements; - }; -} diff --git a/Swiften/LinkLocal/LinkLocalService.cpp b/Swiften/LinkLocal/LinkLocalService.cpp deleted file mode 100644 index f1114ed..0000000 --- a/Swiften/LinkLocal/LinkLocalService.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "Swiften/LinkLocal/LinkLocalService.h" - -namespace Swift { - -String LinkLocalService::getDescription() const { - LinkLocalServiceInfo info = getInfo(); - if (!info.getNick().isEmpty()) { - return info.getNick(); - } - else if (!info.getFirstName().isEmpty()) { - String result = info.getFirstName(); - if (!info.getLastName().isEmpty()) { - result += " " + info.getLastName(); - } - return result; - } - else if (!info.getLastName().isEmpty()) { - return info.getLastName(); - } - return getName(); -} - -JID LinkLocalService::getJID() const { - return JID(getName()); -} - -} diff --git a/Swiften/LinkLocal/LinkLocalService.h b/Swiften/LinkLocal/LinkLocalService.h deleted file mode 100644 index 8ae593c..0000000 --- a/Swiften/LinkLocal/LinkLocalService.h +++ /dev/null @@ -1,46 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" -#include "Swiften/JID/JID.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h" -#include "Swiften/LinkLocal/LinkLocalServiceInfo.h" - -namespace Swift { - class LinkLocalService { - public: - LinkLocalService( - const DNSSDServiceID& id, - const DNSSDResolveServiceQuery::Result& info) : - id(id), - info(info) {} - - const DNSSDServiceID& getID() const { - return id; - } - - const String& getName() const { - return id.getName(); - } - - int getPort() const { - return info.port; - } - - const String& getHostname() const { - return info.host; - } - - LinkLocalServiceInfo getInfo() const { - return LinkLocalServiceInfo::createFromTXTRecord(info.info); - } - - String getDescription() const; - - JID getJID() const; - - private: - DNSSDServiceID id; - DNSSDResolveServiceQuery::Result info; - }; -} diff --git a/Swiften/LinkLocal/LinkLocalServiceBrowser.cpp b/Swiften/LinkLocal/LinkLocalServiceBrowser.cpp deleted file mode 100644 index 061bf2c..0000000 --- a/Swiften/LinkLocal/LinkLocalServiceBrowser.cpp +++ /dev/null @@ -1,147 +0,0 @@ -#include <boost/bind.hpp> -#include <iostream> - -#include "Swiften/LinkLocal/LinkLocalServiceBrowser.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h" -#include "Swiften/Network/HostAddress.h" - -namespace Swift { - -LinkLocalServiceBrowser::LinkLocalServiceBrowser(boost::shared_ptr<DNSSDQuerier> querier) : querier(querier), haveError(false) { -} - -LinkLocalServiceBrowser::~LinkLocalServiceBrowser() { - if (isRunning()) { - std::cerr << "WARNING: LinkLocalServiceBrowser still running on destruction" << std::endl; - } -} - - -void LinkLocalServiceBrowser::start() { - assert(!isRunning()); - haveError = false; - browseQuery = querier->createBrowseQuery(); - browseQuery->onServiceAdded.connect( - boost::bind(&LinkLocalServiceBrowser::handleServiceAdded, this, _1)); - browseQuery->onServiceRemoved.connect( - boost::bind(&LinkLocalServiceBrowser::handleServiceRemoved, this, _1)); - browseQuery->onError.connect( - boost::bind(&LinkLocalServiceBrowser::handleBrowseError, this)); - browseQuery->startBrowsing(); -} - -void LinkLocalServiceBrowser::stop() { - assert(isRunning()); - if (isRegistered()) { - unregisterService(); - } - for (ResolveQueryMap::const_iterator i = resolveQueries.begin(); i != resolveQueries.end(); ++i) { - i->second->stop(); - } - resolveQueries.clear(); - services.clear(); - browseQuery->stopBrowsing(); - browseQuery.reset(); - onStopped(haveError); -} - -bool LinkLocalServiceBrowser::isRunning() const { - return browseQuery; -} - -bool LinkLocalServiceBrowser::hasError() const { - return haveError; -} - -bool LinkLocalServiceBrowser::isRegistered() const { - return registerQuery; -} - -void LinkLocalServiceBrowser::registerService(const String& name, int port, const LinkLocalServiceInfo& info) { - assert(!registerQuery); - registerQuery = querier->createRegisterQuery(name, port, info.toTXTRecord()); - registerQuery->onRegisterFinished.connect( - boost::bind(&LinkLocalServiceBrowser::handleRegisterFinished, this, _1)); - registerQuery->registerService(); -} - -void LinkLocalServiceBrowser::updateService(const LinkLocalServiceInfo& info) { - assert(registerQuery); - registerQuery->updateServiceInfo(info.toTXTRecord()); -} - -void LinkLocalServiceBrowser::unregisterService() { - assert(registerQuery); - registerQuery->unregisterService(); - registerQuery.reset(); - selfService.reset(); -} - -std::vector<LinkLocalService> LinkLocalServiceBrowser::getServices() const { - std::vector<LinkLocalService> result; - for (ServiceMap::const_iterator i = services.begin(); i != services.end(); ++i) { - result.push_back(LinkLocalService(i->first, i->second)); - } - return result; -} - -void LinkLocalServiceBrowser::handleServiceAdded(const DNSSDServiceID& service) { - if (selfService && service == *selfService) { - return; - } - boost::shared_ptr<DNSSDResolveServiceQuery> resolveQuery = querier->createResolveServiceQuery(service); - resolveQuery->onServiceResolved.connect( - boost::bind(&LinkLocalServiceBrowser::handleServiceResolved, this, service, _1)); - std::pair<ResolveQueryMap::iterator, bool> r = resolveQueries.insert(std::make_pair(service, resolveQuery)); - if (!r.second) { - r.first->second = resolveQuery; - } - resolveQuery->start(); -} - -void LinkLocalServiceBrowser::handleServiceRemoved(const DNSSDServiceID& service) { - ResolveQueryMap::iterator i = resolveQueries.find(service); - if (i == resolveQueries.end()) { - // Can happen after an unregister(), when getting the old 'self' - // service remove notification. - return; - } - i->second->stop(); - resolveQueries.erase(i); - ServiceMap::iterator j = services.find(service); - assert(j != services.end()); - LinkLocalService linkLocalService(j->first, j->second); - services.erase(j); - onServiceRemoved(linkLocalService); -} - -void LinkLocalServiceBrowser::handleServiceResolved(const DNSSDServiceID& service, const boost::optional<DNSSDResolveServiceQuery::Result>& result) { - if (result) { - std::pair<ServiceMap::iterator, bool> r = services.insert(std::make_pair(service, *result)); - if (r.second) { - onServiceAdded(LinkLocalService(r.first->first, r.first->second)); - } - else { - r.first->second = *result; - onServiceChanged(LinkLocalService(r.first->first, r.first->second)); - } - } -} - -void LinkLocalServiceBrowser::handleRegisterFinished(const boost::optional<DNSSDServiceID>& result) { - if (result) { - selfService = result; - onServiceRegistered(*result); - } - else { - haveError = true; - stop(); - } -} - -void LinkLocalServiceBrowser::handleBrowseError() { - haveError = true; - stop(); -} - -} diff --git a/Swiften/LinkLocal/LinkLocalServiceBrowser.h b/Swiften/LinkLocal/LinkLocalServiceBrowser.h deleted file mode 100644 index 66973d5..0000000 --- a/Swiften/LinkLocal/LinkLocalServiceBrowser.h +++ /dev/null @@ -1,68 +0,0 @@ -#pragma once - -#include <boost/signal.hpp> -#include <boost/shared_ptr.hpp> -#include <boost/optional.hpp> -#include <map> -#include <vector> - -#include "Swiften/Base/String.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDQuerier.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h" -#include "Swiften/LinkLocal/LinkLocalService.h" -#include "Swiften/LinkLocal/LinkLocalServiceInfo.h" - -namespace Swift { - class LinkLocalServiceBrowser { - public: - LinkLocalServiceBrowser(boost::shared_ptr<DNSSDQuerier> querier); - ~LinkLocalServiceBrowser(); - - void start(); - void stop(); - bool isRunning() const; - bool hasError() const; - - void registerService( - const String& name, - int port, - const LinkLocalServiceInfo& info = LinkLocalServiceInfo()); - void updateService( - const LinkLocalServiceInfo& info = LinkLocalServiceInfo()); - void unregisterService(); - bool isRegistered() const; - - std::vector<LinkLocalService> getServices() const; - - // FIXME: Ugly that we need this - boost::shared_ptr<DNSSDQuerier> getQuerier() const { - return querier; - } - - boost::signal<void (const LinkLocalService&)> onServiceAdded; - boost::signal<void (const LinkLocalService&)> onServiceChanged; - boost::signal<void (const LinkLocalService&)> onServiceRemoved; - boost::signal<void (const DNSSDServiceID&)> onServiceRegistered; - boost::signal<void (bool)> onStopped; - - private: - void handleServiceAdded(const DNSSDServiceID&); - void handleServiceRemoved(const DNSSDServiceID&); - void handleServiceResolved(const DNSSDServiceID& service, const boost::optional<DNSSDResolveServiceQuery::Result>& result); - void handleRegisterFinished(const boost::optional<DNSSDServiceID>&); - void handleBrowseError(); - - private: - boost::shared_ptr<DNSSDQuerier> querier; - boost::optional<DNSSDServiceID> selfService; - boost::shared_ptr<DNSSDBrowseQuery> browseQuery; - boost::shared_ptr<DNSSDRegisterQuery> registerQuery; - typedef std::map<DNSSDServiceID, boost::shared_ptr<DNSSDResolveServiceQuery> > ResolveQueryMap; - ResolveQueryMap resolveQueries; - typedef std::map<DNSSDServiceID, DNSSDResolveServiceQuery::Result> ServiceMap; - ServiceMap services; - bool haveError; - }; -} diff --git a/Swiften/LinkLocal/LinkLocalServiceInfo.cpp b/Swiften/LinkLocal/LinkLocalServiceInfo.cpp deleted file mode 100644 index 8ee7ae0..0000000 --- a/Swiften/LinkLocal/LinkLocalServiceInfo.cpp +++ /dev/null @@ -1,114 +0,0 @@ -#include "Swiften/LinkLocal/LinkLocalServiceInfo.h" - -#include <boost/lexical_cast.hpp> - -namespace Swift { - -ByteArray LinkLocalServiceInfo::toTXTRecord() const { - ByteArray result(getEncoded("txtvers=1")); - if (!firstName.isEmpty()) { - result += getEncoded("1st=" + firstName); - } - if (!lastName.isEmpty()) { - result += getEncoded("last=" + lastName); - } - if (!email.isEmpty()) { - result += getEncoded("email=" + email); - } - if (jid.isValid()) { - result += getEncoded("jid=" + jid.toString()); - } - if (!message.isEmpty()) { - result += getEncoded("msg=" + message); - } - if (!nick.isEmpty()) { - result += getEncoded("nick=" + nick); - } - if (port) { - result += getEncoded("port.p2pj=" + String(boost::lexical_cast<std::string>(*port))); - } - - switch (status) { - case Available: result += getEncoded("status=avail"); break; - case Away: result += getEncoded("status=away"); break; - case DND: result += getEncoded("status=dnd"); break; - } - - return result; -} - -ByteArray LinkLocalServiceInfo::getEncoded(const String& s) { - ByteArray sizeByte; - sizeByte.resize(1); - assert(s.getLength() < 256); - sizeByte[0] = s.getUTF8Size(); - return sizeByte + ByteArray(s); -} - -LinkLocalServiceInfo LinkLocalServiceInfo::createFromTXTRecord(const ByteArray& record) { - LinkLocalServiceInfo info; - size_t i = 0; - while (i < record.getSize()) { - std::pair<String,String> entry = readEntry(record, &i); - if (entry.first.isEmpty()) { - break; - } - else if (entry.first == "1st") { - info.setFirstName(entry.second); - } - else if (entry.first == "last") { - info.setLastName(entry.second); - } - else if (entry.first == "email") { - info.setEMail(entry.second); - } - else if (entry.first == "jid") { - info.setJID(JID(entry.second)); - } - else if (entry.first == "msg") { - info.setMessage(entry.second); - } - else if (entry.first == "nick") { - info.setNick(entry.second); - } - else if (entry.first == "port.p2pj") { - info.setPort(boost::lexical_cast<int>(entry.second)); - } - else if (entry.first == "status") { - if (entry.second == "away") { - info.setStatus(Away); - } - else if (entry.second == "dnd") { - info.setStatus(DND); - } - } - } - return info; -} - -std::pair<String,String> LinkLocalServiceInfo::readEntry(const ByteArray& record, size_t* index) { - size_t& i = *index; - String key; - String value; - - size_t entryEnd = i + 1 + record[i]; - ++i; - bool inKey = true; - while (i < entryEnd && i < record.getSize()) { - if (inKey) { - if (record[i] == '=') { - inKey = false; - } - else { - key += record[i]; - } - } - else { - value += record[i]; - } - ++i; - } - return std::make_pair(key, value); -} - -} diff --git a/Swiften/LinkLocal/LinkLocalServiceInfo.h b/Swiften/LinkLocal/LinkLocalServiceInfo.h deleted file mode 100644 index d78b70c..0000000 --- a/Swiften/LinkLocal/LinkLocalServiceInfo.h +++ /dev/null @@ -1,59 +0,0 @@ -#pragma once - -#include <boost/optional.hpp> - -#include "Swiften/Base/ByteArray.h" -#include "Swiften/Base/String.h" -#include "Swiften/JID/JID.h" - -namespace Swift { - - class LinkLocalServiceInfo { - public: - enum Status { Available, Away, DND }; - - LinkLocalServiceInfo() : status(Available) {} - - const String& getFirstName() const { return firstName; } - void setFirstName(const String& f) { firstName = f; } - - const String& getLastName() const { return lastName; } - void setLastName(const String& l) { lastName = l; } - - const String& getEMail() const { return email; } - void setEMail(const String& e) { email = e; } - - const JID& getJID() const { return jid; } - void setJID(const JID& j) { jid = j; } - - const String& getMessage() const { return message; } - void setMessage(const String& m) { message = m; } - - const String& getNick() const { return nick; } - void setNick(const String& n) { nick = n; } - - Status getStatus() const { return status; } - void setStatus(Status s) { status = s; } - - boost::optional<int> getPort() const { return port; } - void setPort(int p) { port = p; } - - ByteArray toTXTRecord() const; - - static LinkLocalServiceInfo createFromTXTRecord(const ByteArray& record); - - private: - static ByteArray getEncoded(const String&); - static std::pair<String,String> readEntry(const ByteArray&, size_t*); - - private: - String firstName; - String lastName; - String email; - JID jid; - String message; - String nick; - Status status; - boost::optional<int> port; - }; -} diff --git a/Swiften/LinkLocal/OutgoingLinkLocalSession.cpp b/Swiften/LinkLocal/OutgoingLinkLocalSession.cpp deleted file mode 100644 index 7b71f82..0000000 --- a/Swiften/LinkLocal/OutgoingLinkLocalSession.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "Swiften/LinkLocal/OutgoingLinkLocalSession.h" - -#include <boost/bind.hpp> - -#include "Swiften/StreamStack/XMPPLayer.h" -#include "Swiften/Elements/ProtocolHeader.h" -#include "Swiften/Elements/StreamFeatures.h" -#include "Swiften/Elements/IQ.h" - -namespace Swift { - -OutgoingLinkLocalSession::OutgoingLinkLocalSession( - const JID& localJID, - const JID& remoteJID, - boost::shared_ptr<Connection> connection, - PayloadParserFactoryCollection* payloadParserFactories, - PayloadSerializerCollection* payloadSerializers) : - Session(connection, payloadParserFactories, payloadSerializers) { - setLocalJID(localJID); - setRemoteJID(remoteJID); -} - -void OutgoingLinkLocalSession::handleSessionStarted() { - ProtocolHeader header; - header.setFrom(getLocalJID()); - getXMPPLayer()->writeHeader(header); -} - -void OutgoingLinkLocalSession::handleStreamStart(const ProtocolHeader&) { - foreach(const boost::shared_ptr<Element>& stanza, queuedElements_) { - sendElement(stanza); - } - queuedElements_.clear(); -} - -void OutgoingLinkLocalSession::handleElement(boost::shared_ptr<Element> element) { - onElementReceived(element); -} - -void OutgoingLinkLocalSession::queueElement(boost::shared_ptr<Element> element) { - queuedElements_.push_back(element); -} - - -} diff --git a/Swiften/LinkLocal/OutgoingLinkLocalSession.h b/Swiften/LinkLocal/OutgoingLinkLocalSession.h deleted file mode 100644 index 32f78e4..0000000 --- a/Swiften/LinkLocal/OutgoingLinkLocalSession.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/signal.hpp> -#include <boost/enable_shared_from_this.hpp> -#include <vector> - -#include "Swiften/Session/Session.h" -#include "Swiften/JID/JID.h" - -namespace Swift { - class ConnectionFactory; - class String; - class Element; - class PayloadParserFactoryCollection; - class PayloadSerializerCollection; - - class OutgoingLinkLocalSession : public Session { - public: - OutgoingLinkLocalSession( - const JID& localJID, - const JID& remoteJID, - boost::shared_ptr<Connection> connection, - PayloadParserFactoryCollection* payloadParserFactories, - PayloadSerializerCollection* payloadSerializers); - - void queueElement(boost::shared_ptr<Element> element); - - private: - void handleSessionStarted(); - void handleElement(boost::shared_ptr<Element>); - void handleStreamStart(const ProtocolHeader&); - - private: - std::vector<boost::shared_ptr<Element> > queuedElements_; - }; -} diff --git a/Swiften/LinkLocal/SConscript b/Swiften/LinkLocal/SConscript deleted file mode 100644 index b929db1..0000000 --- a/Swiften/LinkLocal/SConscript +++ /dev/null @@ -1,37 +0,0 @@ -Import("swiften_env") - -myenv = swiften_env.Clone() -myenv.MergeFlags(swiften_env.get("BONJOUR_FLAGS", "")) - -sources = [ - "DNSSD/DNSSDBrowseQuery.cpp", - "DNSSD/DNSSDQuerier.cpp", - "DNSSD/DNSSDRegisterQuery.cpp", - "DNSSD/DNSSDResolveHostnameQuery.cpp", - "DNSSD/DNSSDResolveServiceQuery.cpp", - "DNSSD/DNSSDServiceID.cpp", - "DNSSD/Fake/FakeDNSSDQuerier.cpp", - "DNSSD/Fake/FakeDNSSDQuery.cpp", - "DNSSD/PlatformDNSSDQuerierFactory.cpp", - "IncomingLinkLocalSession.cpp", - "LinkLocalConnector.cpp", - "LinkLocalService.cpp", - "LinkLocalServiceBrowser.cpp", - "LinkLocalServiceInfo.cpp", - "OutgoingLinkLocalSession.cpp", - ] - -if myenv.get("HAVE_BONJOUR", 0) : - myenv.Append(CPPDEFINES = "HAVE_BONJOUR") - sources += [ - "DNSSD/Bonjour/BonjourQuerier.cpp", - "DNSSD/Bonjour/BonjourQuery.cpp", - ] -elif myenv.get("HAVE_AVAHI", 0) : - sources += [ - "DNSSD/Avahi/AvahiQuerier.cpp", - "DNSSD/Avahi/AvahiQuery.cpp" - ] - -objects = myenv.StaticObject(sources) -swiften_env.Append(SWIFTEN_OBJECTS = [objects]) diff --git a/Swiften/LinkLocal/UnitTest/LinkLocalConnectorTest.cpp b/Swiften/LinkLocal/UnitTest/LinkLocalConnectorTest.cpp deleted file mode 100644 index ee5e414..0000000 --- a/Swiften/LinkLocal/UnitTest/LinkLocalConnectorTest.cpp +++ /dev/null @@ -1,135 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/LinkLocal/LinkLocalConnector.h" -#include "Swiften/LinkLocal/LinkLocalService.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h" -#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.h" -#include "Swiften/EventLoop/DummyEventLoop.h" -#include "Swiften/Network/FakeConnection.h" - -using namespace Swift; - -class LinkLocalConnectorTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(LinkLocalConnectorTest); - CPPUNIT_TEST(testConnect); - CPPUNIT_TEST(testConnect_UnableToResolve); - CPPUNIT_TEST(testConnect_UnableToConnect); - CPPUNIT_TEST(testCancel_DuringResolve); - CPPUNIT_TEST(testCancel_DuringConnect); - CPPUNIT_TEST_SUITE_END(); - - public: - void setUp() { - eventLoop = new DummyEventLoop(); - querier = boost::shared_ptr<FakeDNSSDQuerier>( - new FakeDNSSDQuerier("rabbithole.local")); - connection = boost::shared_ptr<FakeConnection>(new FakeConnection()); - connectFinished = false; - } - - void tearDown() { - delete eventLoop; - } - - void testConnect() { - boost::shared_ptr<LinkLocalConnector> - testling(createConnector("rabbithole.local", 1234)); - querier->setAddress("rabbithole.local", HostAddress("192.168.1.1")); - - testling->connect(); - eventLoop->processEvents(); - - CPPUNIT_ASSERT(connectFinished); - CPPUNIT_ASSERT(!connectError); - CPPUNIT_ASSERT(connection->connectedTo); - CPPUNIT_ASSERT_EQUAL(String(connection->connectedTo->getAddress().toString()), String("192.168.1.1")); - CPPUNIT_ASSERT_EQUAL(connection->connectedTo->getPort(), 1234); - } - - void testConnect_UnableToResolve() { - boost::shared_ptr<LinkLocalConnector> - testling(createConnector("rabbithole.local", 1234)); - querier->setAddress("rabbithole.local", boost::optional<HostAddress>()); - - testling->connect(); - eventLoop->processEvents(); - - CPPUNIT_ASSERT(connectFinished); - CPPUNIT_ASSERT(connectError); - CPPUNIT_ASSERT(!connection->connectedTo); - } - - void testConnect_UnableToConnect() { - boost::shared_ptr<LinkLocalConnector> - testling(createConnector("rabbithole.local", 1234)); - querier->setAddress("rabbithole.local", HostAddress("192.168.1.1")); - connection->setError(Connection::ReadError); - - testling->connect(); - eventLoop->processEvents(); - - CPPUNIT_ASSERT(connectFinished); - CPPUNIT_ASSERT(connectError); - CPPUNIT_ASSERT(!connection->connectedTo); - } - - void testCancel_DuringResolve() { - boost::shared_ptr<LinkLocalConnector> - testling(createConnector("rabbithole.local", 1234)); - testling->connect(); - eventLoop->processEvents(); - CPPUNIT_ASSERT(!connectFinished); - - testling->cancel(); - eventLoop->processEvents(); - querier->setAddress("rabbithole.local", HostAddress("192.168.1.1")); - eventLoop->processEvents(); - - CPPUNIT_ASSERT(FakeConnection::Disconnected == connection->state); - } - - void testCancel_DuringConnect() { - boost::shared_ptr<LinkLocalConnector> - testling(createConnector("rabbithole.local", 1234)); - querier->setAddress("rabbithole.local", HostAddress("192.168.1.1")); - connection->setDelayConnect(); - testling->connect(); - eventLoop->processEvents(); - CPPUNIT_ASSERT(FakeConnection::Connecting == connection->state); - - testling->cancel(); - eventLoop->processEvents(); - - CPPUNIT_ASSERT(FakeConnection::Disconnected == connection->state); - } - - private: - boost::shared_ptr<LinkLocalConnector> createConnector(const String& hostname, int port) { - LinkLocalService service( - DNSSDServiceID("myname", "local."), - DNSSDResolveServiceQuery::Result( - "myname._presence._tcp.local", hostname, port, - LinkLocalServiceInfo().toTXTRecord())); - boost::shared_ptr<LinkLocalConnector> result( - new LinkLocalConnector(service, querier, connection)); - result->onConnectFinished.connect( - boost::bind(&LinkLocalConnectorTest::handleConnected, this, _1)); - return result; - } - - void handleConnected(bool e) { - connectFinished = true; - connectError = e; - } - - private: - DummyEventLoop* eventLoop; - boost::shared_ptr<FakeDNSSDQuerier> querier; - boost::shared_ptr<FakeConnection> connection; - bool connectFinished; - bool connectError; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(LinkLocalConnectorTest); diff --git a/Swiften/LinkLocal/UnitTest/LinkLocalServiceBrowserTest.cpp b/Swiften/LinkLocal/UnitTest/LinkLocalServiceBrowserTest.cpp deleted file mode 100644 index 9f91269..0000000 --- a/Swiften/LinkLocal/UnitTest/LinkLocalServiceBrowserTest.cpp +++ /dev/null @@ -1,379 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/bind.hpp> -#include <map> - -#include "Swiften/LinkLocal/LinkLocalServiceBrowser.h" -#include "Swiften/LinkLocal/LinkLocalService.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h" -#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h" -#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.h" -#include "Swiften/EventLoop/DummyEventLoop.h" - -using namespace Swift; - -class LinkLocalServiceBrowserTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(LinkLocalServiceBrowserTest); - CPPUNIT_TEST(testConstructor); - CPPUNIT_TEST(testStart); - CPPUNIT_TEST(testServiceAdded); - CPPUNIT_TEST(testServiceAdded_NoServiceInfo); - CPPUNIT_TEST(testServiceAdded_RegisteredService); - CPPUNIT_TEST(testServiceAdded_UnregisteredService); - CPPUNIT_TEST(testServiceChanged); - CPPUNIT_TEST(testServiceRemoved); - CPPUNIT_TEST(testServiceRemoved_UnregisteredService); - CPPUNIT_TEST(testError_BrowseErrorAfterStart); - CPPUNIT_TEST(testError_BrowseErrorAfterResolve); - CPPUNIT_TEST(testRegisterService); - CPPUNIT_TEST(testRegisterService_Error); - CPPUNIT_TEST(testRegisterService_Reregister); - CPPUNIT_TEST(testUpdateService); - CPPUNIT_TEST_SUITE_END(); - - public: - LinkLocalServiceBrowserTest() {} - - void setUp() { - eventLoop = new DummyEventLoop(); - querier = boost::shared_ptr<FakeDNSSDQuerier>(new FakeDNSSDQuerier("wonderland.lit")); - aliceServiceID = new DNSSDServiceID("alice", "wonderland.lit"); - aliceServiceInfo = new DNSSDResolveServiceQuery::Result("_presence._tcp.wonderland.lit", "xmpp.wonderland.lit", 1234, LinkLocalServiceInfo().toTXTRecord()); - testServiceID = new DNSSDServiceID("foo", "bar.local"); - testServiceInfo = new DNSSDResolveServiceQuery::Result("_presence._tcp.bar.local", "xmpp.bar.local", 1234, LinkLocalServiceInfo().toTXTRecord()); - testServiceInfo2 = new DNSSDResolveServiceQuery::Result("_presence.tcp.bar.local", "xmpp.foo.local", 2345, LinkLocalServiceInfo().toTXTRecord()); - errorStopReceived = false; - normalStopReceived = false; - } - - void tearDown() { - addedServices.clear(); - removedServices.clear(); - changedServices.clear(); - - delete aliceServiceID; - delete aliceServiceInfo; - delete testServiceInfo2; - delete testServiceInfo; - delete testServiceID; - delete eventLoop; - } - - void testConstructor() { - boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling(); - - CPPUNIT_ASSERT(!testling->isRunning()); - CPPUNIT_ASSERT(!testling->hasError()); - } - - void testStart() { - boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling(); - testling->start(); - - CPPUNIT_ASSERT(testling->isRunning()); - CPPUNIT_ASSERT(!testling->hasError()); - - testling->stop(); - } - - void testServiceAdded() { - boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling(); - testling->start(); - eventLoop->processEvents(); - - querier->setServiceInfo(*testServiceID,*testServiceInfo); - querier->addService(*testServiceID); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(addedServices.size())); - CPPUNIT_ASSERT(addedServices[0].getID() == *testServiceID); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(changedServices.size())); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(removedServices.size())); - std::vector<LinkLocalService> services = testling->getServices(); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(services.size())); - CPPUNIT_ASSERT(*testServiceID == services[0].getID()); - CPPUNIT_ASSERT(testServiceInfo->port == services[0].getPort()); - CPPUNIT_ASSERT(testServiceInfo->host == services[0].getHostname()); - - testling->stop(); - } - - void testServiceAdded_NoServiceInfo() { - boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling(); - testling->start(); - eventLoop->processEvents(); - - querier->addService(*testServiceID); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(addedServices.size())); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling->getServices().size())); - - testling->stop(); - } - - void testServiceAdded_RegisteredService() { - boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling(); - testling->start(); - eventLoop->processEvents(); - - testling->registerService("alice", 1234, LinkLocalServiceInfo()); - eventLoop->processEvents(); - querier->setServiceInfo(*aliceServiceID, *aliceServiceInfo); - querier->addService(*aliceServiceID); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(addedServices.size())); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling->getServices().size())); - - testling->stop(); - } - - void testServiceAdded_UnregisteredService() { - boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling(); - testling->start(); - eventLoop->processEvents(); - testling->registerService("alice", 1234, LinkLocalServiceInfo()); - eventLoop->processEvents(); - testling->unregisterService(); - eventLoop->processEvents(); - - querier->setServiceInfo(*aliceServiceID, *aliceServiceInfo); - querier->addService(*aliceServiceID); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(addedServices.size())); - CPPUNIT_ASSERT(addedServices[0].getID() == *aliceServiceID); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(changedServices.size())); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(removedServices.size())); - std::vector<LinkLocalService> services = testling->getServices(); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(services.size())); - CPPUNIT_ASSERT(*aliceServiceID == services[0].getID()); - CPPUNIT_ASSERT(aliceServiceInfo->port == services[0].getPort()); - CPPUNIT_ASSERT(aliceServiceInfo->host == services[0].getHostname()); - - testling->stop(); - } - - void testServiceRemoved_UnregisteredService() { - boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling(); - testling->start(); - eventLoop->processEvents(); - testling->registerService("alice", 1234, LinkLocalServiceInfo()); - eventLoop->processEvents(); - testling->unregisterService(); - eventLoop->processEvents(); - - querier->removeService(*aliceServiceID); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(removedServices.size())); - - testling->stop(); - } - - void testServiceChanged() { - boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling(); - testling->start(); - querier->setServiceInfo(*testServiceID,*testServiceInfo); - querier->addService(*testServiceID); - eventLoop->processEvents(); - - querier->setServiceInfo(*testServiceID,*testServiceInfo2); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(addedServices.size())); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(changedServices.size())); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(removedServices.size())); - CPPUNIT_ASSERT(changedServices[0].getID() == *testServiceID); - std::vector<LinkLocalService> services = testling->getServices(); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(services.size())); - CPPUNIT_ASSERT(*testServiceID == services[0].getID()); - CPPUNIT_ASSERT(testServiceInfo2->port == services[0].getPort()); - CPPUNIT_ASSERT(testServiceInfo2->host == services[0].getHostname()); - - testling->stop(); - } - - void testServiceRemoved() { - boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling(); - testling->start(); - querier->setServiceInfo(*testServiceID,*testServiceInfo); - querier->addService(*testServiceID); - eventLoop->processEvents(); - - querier->removeService(*testServiceID); - eventLoop->processEvents(); - querier->setServiceInfo(*testServiceID,*testServiceInfo2); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(addedServices.size())); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(changedServices.size())); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(removedServices.size())); - CPPUNIT_ASSERT(removedServices[0].getID() == *testServiceID); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling->getServices().size())); - - testling->stop(); - } - - void testError_BrowseErrorAfterStart() { - boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling(); - testling->start(); - - querier->setBrowseError(); - eventLoop->processEvents(); - - CPPUNIT_ASSERT(!testling->isRunning()); - CPPUNIT_ASSERT(testling->hasError()); - CPPUNIT_ASSERT(errorStopReceived); - } - - void testError_BrowseErrorAfterResolve() { - boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling(); - testling->start(); - querier->setServiceInfo(*testServiceID,*testServiceInfo); - querier->addService(*testServiceID); - eventLoop->processEvents(); - - querier->setBrowseError(); - eventLoop->processEvents(); - querier->setServiceInfo(*testServiceID,*testServiceInfo2); - eventLoop->processEvents(); - - CPPUNIT_ASSERT(!testling->isRunning()); - CPPUNIT_ASSERT(testling->hasError()); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling->getServices().size())); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(changedServices.size())); - CPPUNIT_ASSERT(errorStopReceived); - } - - void testRegisterService() { - boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling(); - testling->start(); - eventLoop->processEvents(); - - LinkLocalServiceInfo info; - info.setFirstName("Foo"); - testling->registerService("foo@bar", 1234, info); - eventLoop->processEvents(); - - CPPUNIT_ASSERT(querier->isServiceRegistered("foo@bar", 1234, info.toTXTRecord())); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(registeredServices.size())); - CPPUNIT_ASSERT(registeredServices[0] == DNSSDServiceID("foo@bar", "wonderland.lit")); - testling->stop(); - } - - void testRegisterService_Error() { - boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling(); - testling->start(); - LinkLocalServiceInfo info; - testling->registerService("foo@bar", 1234, info); - eventLoop->processEvents(); - - querier->setRegisterError(); - eventLoop->processEvents(); - - CPPUNIT_ASSERT(!testling->isRunning()); - CPPUNIT_ASSERT(testling->hasError()); - CPPUNIT_ASSERT(errorStopReceived); - CPPUNIT_ASSERT(!querier->isServiceRegistered("foo@bar", 1234, info.toTXTRecord())); - } - - void testRegisterService_Reregister() { - boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling(); - testling->start(); - eventLoop->processEvents(); - LinkLocalServiceInfo info; - info.setFirstName("Foo"); - testling->registerService("foo@bar", 1234, info); - eventLoop->processEvents(); - testling->unregisterService(); - eventLoop->processEvents(); - - info.setFirstName("Bar"); - testling->registerService("bar@baz", 3456, info); - eventLoop->processEvents(); - - CPPUNIT_ASSERT(querier->isServiceRegistered("bar@baz", 3456, info.toTXTRecord())); - - testling->stop(); - } - - void testUpdateService() { - boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling(); - testling->start(); - eventLoop->processEvents(); - - LinkLocalServiceInfo info; - info.setFirstName("Foo"); - testling->registerService("foo@bar", 1234, info); - eventLoop->processEvents(); - info.setFirstName("Bar"); - testling->updateService(info); - - CPPUNIT_ASSERT(querier->isServiceRegistered("foo@bar", 1234, info.toTXTRecord())); - - testling->stop(); - } - - private: - boost::shared_ptr<LinkLocalServiceBrowser> createTestling() { - boost::shared_ptr<LinkLocalServiceBrowser> testling( - new LinkLocalServiceBrowser(querier)); - testling->onServiceAdded.connect(boost::bind( - &LinkLocalServiceBrowserTest::handleServiceAdded, this, _1)); - testling->onServiceChanged.connect(boost::bind( - &LinkLocalServiceBrowserTest::handleServiceChanged, this, _1)); - testling->onServiceRemoved.connect(boost::bind( - &LinkLocalServiceBrowserTest::handleServiceRemoved, this, _1)); - testling->onServiceRegistered.connect(boost::bind( - &LinkLocalServiceBrowserTest::handleServiceRegistered, this, _1)); - testling->onStopped.connect(boost::bind( - &LinkLocalServiceBrowserTest::handleStopped, this, _1)); - return testling; - } - - void handleServiceAdded(const LinkLocalService& service) { - addedServices.push_back(service); - } - - void handleServiceRemoved(const LinkLocalService& service) { - removedServices.push_back(service); - } - - void handleServiceChanged(const LinkLocalService& service) { - changedServices.push_back(service); - } - - void handleServiceRegistered(const DNSSDServiceID& service) { - registeredServices.push_back(service); - } - - void handleStopped(bool error) { - CPPUNIT_ASSERT(!errorStopReceived); - CPPUNIT_ASSERT(!normalStopReceived); - if (error) { - errorStopReceived = true; - } - else { - normalStopReceived = true; - } - } - - private: - DummyEventLoop* eventLoop; - boost::shared_ptr<FakeDNSSDQuerier> querier; - std::vector<LinkLocalService> addedServices; - std::vector<LinkLocalService> changedServices; - std::vector<LinkLocalService> removedServices; - std::vector<DNSSDServiceID> registeredServices; - DNSSDServiceID* aliceServiceID; - DNSSDResolveServiceQuery::Result* aliceServiceInfo; - DNSSDServiceID* testServiceID; - DNSSDResolveServiceQuery::Result* testServiceInfo; - DNSSDResolveServiceQuery::Result* testServiceInfo2; - bool errorStopReceived; - bool normalStopReceived; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(LinkLocalServiceBrowserTest); diff --git a/Swiften/LinkLocal/UnitTest/LinkLocalServiceInfoTest.cpp b/Swiften/LinkLocal/UnitTest/LinkLocalServiceInfoTest.cpp deleted file mode 100644 index b5d7ef5..0000000 --- a/Swiften/LinkLocal/UnitTest/LinkLocalServiceInfoTest.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/LinkLocal/LinkLocalServiceInfo.h" - -using namespace Swift; - -class LinkLocalServiceInfoTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(LinkLocalServiceInfoTest); - CPPUNIT_TEST(testGetTXTRecord); - CPPUNIT_TEST(testCreateFromTXTRecord); - CPPUNIT_TEST(testCreateFromTXTRecord_InvalidSize); - CPPUNIT_TEST(testGetTXTRecordCreateFromTXTRecord_RoundTrip); - CPPUNIT_TEST_SUITE_END(); - - public: - void testGetTXTRecord() { - LinkLocalServiceInfo info; - info.setFirstName("Remko"); - info.setLastName("Tron\xc3\xe7on"); - info.setStatus(LinkLocalServiceInfo::Away); - - CPPUNIT_ASSERT_EQUAL(ByteArray("\x09txtvers=1\x09" + String("1st=Remko\x0dlast=Tron\xc3\xe7on\x0bstatus=away")), info.toTXTRecord()); - } - - void testCreateFromTXTRecord() { - LinkLocalServiceInfo info = LinkLocalServiceInfo::createFromTXTRecord(ByteArray("\x09txtvers=1\x09" + String("1st=Remko\x0dlast=Tron\xc3\xe7on\x0bstatus=away"))); - - CPPUNIT_ASSERT_EQUAL(String("Remko"), info.getFirstName()); - CPPUNIT_ASSERT_EQUAL(String("Tron\xc3\xe7on"), info.getLastName()); - CPPUNIT_ASSERT_EQUAL(LinkLocalServiceInfo::Away, info.getStatus()); - } - - void testCreateFromTXTRecord_InvalidSize() { - LinkLocalServiceInfo info = LinkLocalServiceInfo::createFromTXTRecord(ByteArray("\x10last=a")); - - CPPUNIT_ASSERT_EQUAL(String("a"), info.getLastName()); - } - - void testGetTXTRecordCreateFromTXTRecord_RoundTrip() { - LinkLocalServiceInfo info; - info.setFirstName("Remko"); - info.setLastName("Tron\xc3\xe7on"); - info.setEMail("remko-email@swift.im"); - info.setJID(JID("remko-jid@swift.im")); - info.setMessage("I'm busy"); - info.setNick("el-tramo"); - info.setStatus(LinkLocalServiceInfo::DND); - info.setPort(1234); - - LinkLocalServiceInfo info2 = LinkLocalServiceInfo::createFromTXTRecord(info.toTXTRecord()); - CPPUNIT_ASSERT_EQUAL(info.getFirstName(), info2.getFirstName()); - CPPUNIT_ASSERT_EQUAL(info.getLastName(), info2.getLastName()); - CPPUNIT_ASSERT_EQUAL(info.getEMail(), info2.getEMail()); - CPPUNIT_ASSERT_EQUAL(info.getJID(), info2.getJID()); - CPPUNIT_ASSERT_EQUAL(info.getMessage(), info2.getMessage()); - CPPUNIT_ASSERT_EQUAL(info.getNick(), info2.getNick()); - CPPUNIT_ASSERT(info.getStatus() == info2.getStatus()); - CPPUNIT_ASSERT(info.getPort() == info2.getPort()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(LinkLocalServiceInfoTest); diff --git a/Swiften/LinkLocal/UnitTest/LinkLocalServiceTest.cpp b/Swiften/LinkLocal/UnitTest/LinkLocalServiceTest.cpp deleted file mode 100644 index 69ec718..0000000 --- a/Swiften/LinkLocal/UnitTest/LinkLocalServiceTest.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/LinkLocal/LinkLocalService.h" - -using namespace Swift; - -class LinkLocalServiceTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(LinkLocalServiceTest); - CPPUNIT_TEST(testGetDescription_WithNick); - CPPUNIT_TEST(testGetDescription_WithFirstName); - CPPUNIT_TEST(testGetDescription_WithLastName); - CPPUNIT_TEST(testGetDescription_WithFirstAndLastName); - CPPUNIT_TEST(testGetDescription_NoInfo); - CPPUNIT_TEST_SUITE_END(); - - public: - void testGetDescription_WithNick() { - LinkLocalService testling = createService("alice@wonderland", "Alice", "Alice In", "Wonderland"); - - CPPUNIT_ASSERT_EQUAL(String("Alice"), testling.getDescription()); - } - - void testGetDescription_WithFirstName() { - LinkLocalService testling = createService("alice@wonderland", "", "Alice In"); - - CPPUNIT_ASSERT_EQUAL(String("Alice In"), testling.getDescription()); - } - - void testGetDescription_WithLastName() { - LinkLocalService testling = createService("alice@wonderland", "", "", "Wonderland"); - - CPPUNIT_ASSERT_EQUAL(String("Wonderland"), testling.getDescription()); - } - - void testGetDescription_WithFirstAndLastName() { - LinkLocalService testling = createService("alice@wonderland", "", "Alice In", "Wonderland"); - - CPPUNIT_ASSERT_EQUAL(String("Alice In Wonderland"), testling.getDescription()); - } - - void testGetDescription_NoInfo() { - LinkLocalService testling = createService("alice@wonderland"); - - CPPUNIT_ASSERT_EQUAL(String("alice@wonderland"), testling.getDescription()); - } - - private: - LinkLocalService createService(const String& name, const String& nickName = String(), const String& firstName = String(), const String& lastName = String()) { - DNSSDServiceID service(name, "local."); - LinkLocalServiceInfo info; - info.setFirstName(firstName); - info.setLastName(lastName); - info.setNick(nickName); - return LinkLocalService(service, - DNSSDResolveServiceQuery::Result( - name + "._presence._tcp.local", "rabbithole.local", 1234, - info.toTXTRecord())); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(LinkLocalServiceTest); diff --git a/Swiften/MUC/MUC.cpp b/Swiften/MUC/MUC.cpp deleted file mode 100644 index 3c06c7a..0000000 --- a/Swiften/MUC/MUC.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include "Swiften/MUC/MUC.h" - -#include <boost/bind.hpp> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Presence/PresenceSender.h" -#include "Swiften/Client/StanzaChannel.h" -#include "Swiften/Elements/IQ.h" -#include "Swiften/Elements/MUCPayload.h" - -namespace Swift { - -typedef std::pair<String, MUCOccupant> StringMUCOccupantPair; - -MUC::MUC(StanzaChannel* stanzaChannel, PresenceSender* presenceSender, const JID &muc) : ownMUCJID(muc), stanzaChannel(stanzaChannel), presenceSender(presenceSender) { - scopedConnection_ = stanzaChannel->onPresenceReceived.connect(boost::bind(&MUC::handleIncomingPresence, this, _1)); -} - -void MUC::joinAs(const String &nick) { - firstPresenceSeen = false; - - ownMUCJID = JID(ownMUCJID.getNode(), ownMUCJID.getDomain(), nick); - - boost::shared_ptr<Presence> joinPresence(new Presence()); - joinPresence->setTo(ownMUCJID); - joinPresence->addPayload(boost::shared_ptr<Payload>(new MUCPayload())); - presenceSender->sendPresence(joinPresence); -} - -void MUC::part() { - presenceSender->removeDirectedPresenceReceiver(ownMUCJID); -} - -void MUC::handleIncomingPresence(boost::shared_ptr<Presence> presence) { - if (!isFromMUC(presence->getFrom())) { - return; - } - - if (!firstPresenceSeen) { - if (presence->getType() == Presence::Error) { - onJoinComplete(JoinFailed); - return; - } - firstPresenceSeen = true; - onJoinComplete(JoinSucceeded); - presenceSender->addDirectedPresenceReceiver(ownMUCJID); - } - - String nick = presence->getFrom().getResource(); - if (nick.isEmpty()) { - return; - } - if (presence->getType() == Presence::Unavailable) { - std::map<String,MUCOccupant>::iterator i = occupants.find(nick); - if (i != occupants.end()) { - onOccupantLeft(i->second, Part, ""); - occupants.erase(i); - } - } - else if (presence->getType() == Presence::Available) { - std::pair<std::map<String,MUCOccupant>::iterator, bool> result = occupants.insert(std::make_pair(nick, MUCOccupant(nick))); - if (result.second) { - onOccupantJoined(result.first->second); - } - onOccupantPresenceChange(presence); - } -} - - -} diff --git a/Swiften/MUC/MUC.h b/Swiften/MUC/MUC.h deleted file mode 100644 index 1ef974f..0000000 --- a/Swiften/MUC/MUC.h +++ /dev/null @@ -1,59 +0,0 @@ -#pragma once - -#include "Swiften/JID/JID.h" -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Message.h" -#include "Swiften/Elements/Presence.h" -#include "Swiften/MUC/MUCOccupant.h" - -#include <boost/shared_ptr.hpp> -#include <boost/signals.hpp> -#include <boost/signals/connection.hpp> - -#include <map> - -namespace Swift { - class StanzaChannel; - class PresenceSender; - - class MUC { - public: - enum JoinResult { JoinSucceeded, JoinFailed }; - enum LeavingType { Part }; - - public: - MUC(StanzaChannel* stanzaChannel, PresenceSender* presenceSender, const JID &muc); - - void joinAs(const String &nick); - String getCurrentNick(); - void part(); - void handleIncomingMessage(boost::shared_ptr<Message> message); - - public: - boost::signal<void (JoinResult)> onJoinComplete; - boost::signal<void (boost::shared_ptr<Presence>)> onOccupantPresenceChange; - boost::signal<void (const MUCOccupant&)> onOccupantJoined; - /**Occupant, type, and reason. */ - boost::signal<void (const MUCOccupant&, LeavingType, const String&)> onOccupantLeft; - - private: - bool isFromMUC(const JID& j) const { - return ownMUCJID.equals(j, JID::WithoutResource); - } - - const String& getOwnNick() const { - return ownMUCJID.getResource(); - } - - private: - void handleIncomingPresence(boost::shared_ptr<Presence> presence); - - private: - JID ownMUCJID; - StanzaChannel* stanzaChannel; - PresenceSender* presenceSender; - std::map<String, MUCOccupant> occupants; - bool firstPresenceSeen; - boost::bsignals::scoped_connection scopedConnection_; - }; -} diff --git a/Swiften/MUC/MUCBookmark.h b/Swiften/MUC/MUCBookmark.h deleted file mode 100644 index 439e716..0000000 --- a/Swiften/MUC/MUCBookmark.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#include <boost/optional.hpp> - -#include "Swiften/Base/String.h" -#include "Swiften/JID/JID.h" - -namespace Swift { - class MUCBookmark { - public: - MUCBookmark(const JID& room, const String& bookmarkName) : room_(room), name_(bookmarkName){}; - void setAutojoin(bool enabled) {autojoin_ = enabled;}; - void setNick(const boost::optional<String>& nick) {nick_ = nick;}; - void setPassword(const boost::optional<String>& password) {password_ = password;}; - bool getAutojoin() const {return autojoin_;}; - const boost::optional<String>& getNick() const {return nick_;}; - const boost::optional<String>& getPassword() const {return password_;}; - const String& getName() const {return name_;}; - const JID& getRoom() const {return room_;}; - private: - JID room_; - String name_; - boost::optional<String> nick_; - boost::optional<String> password_; - bool autojoin_; - }; -} - diff --git a/Swiften/MUC/MUCBookmarkManager.cpp b/Swiften/MUC/MUCBookmarkManager.cpp deleted file mode 100644 index f9295e2..0000000 --- a/Swiften/MUC/MUCBookmarkManager.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "MUCBookmarkManager.h" - -#include "Swiften/Queries/IQRouter.h" - -namespace Swift { - -MUCBookmarkManager::MUCBookmarkManager(IQRouter* iqRouter) { - iqRouter_ = iqRouter; -} - -void MUCBookmarkManager::addBookmark(boost::shared_ptr<MUCBookmark> bookmark) { - bookmarks_.push_back(bookmark); - flush(); - onBookmarkAdded(bookmark); -} - - -void MUCBookmarkManager::removeBookmark(boost::shared_ptr<MUCBookmark> bookmark) { - std::vector<boost::shared_ptr<MUCBookmark> >::iterator it; - for (it = bookmarks_.begin(); it != bookmarks_.end(); it++) { - if ((*it).get() == bookmark.get()) { - bookmarks_.erase(it); - onBookmarkRemoved(bookmark); - return; - } - } - assert(false); - flush(); -} - -void MUCBookmarkManager::flush() { - //FIXME: some code may be useful -} - -const std::vector<boost::shared_ptr<MUCBookmark> >& MUCBookmarkManager::getBookmarks() { - return bookmarks_; -} - -} diff --git a/Swiften/MUC/MUCBookmarkManager.h b/Swiften/MUC/MUCBookmarkManager.h deleted file mode 100644 index ade2e3e..0000000 --- a/Swiften/MUC/MUCBookmarkManager.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#include <vector> - -#include <boost/shared_ptr.hpp> -#include <boost/signals.hpp> - -#include "Swiften/MUC/MUCBookmark.h" - -namespace Swift { - class IQRouter; - class MUCBookmarkManager { - public: - MUCBookmarkManager(IQRouter* iqRouter); - void addBookmark(boost::shared_ptr<MUCBookmark> bookmark); - void removeBookmark(boost::shared_ptr<MUCBookmark> bookmark); - /** Call flush after editing an existing bookmark. */ - void flush(); - /** Returns pointers to the bookmarks. These can be edited, and then flush()ed.*/ - const std::vector<boost::shared_ptr<MUCBookmark> >& getBookmarks(); - boost::signal<void (boost::shared_ptr<MUCBookmark>)> onBookmarkAdded; - boost::signal<void (boost::shared_ptr<MUCBookmark>)> onBookmarkRemoved; - private: - - std::vector<boost::shared_ptr<MUCBookmark> > bookmarks_; - IQRouter* iqRouter_; - }; -} diff --git a/Swiften/MUC/MUCOccupant.cpp b/Swiften/MUC/MUCOccupant.cpp deleted file mode 100644 index 6ed8591..0000000 --- a/Swiften/MUC/MUCOccupant.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "Swiften/MUC/MUCOccupant.h" - -namespace Swift { - -MUCOccupant::MUCOccupant(const String &nick) : nick_(nick) { -} - -MUCOccupant::~MUCOccupant() { -} - -String MUCOccupant::getNick() const { - return nick_; -} - -} diff --git a/Swiften/MUC/MUCOccupant.h b/Swiften/MUC/MUCOccupant.h deleted file mode 100644 index 22e58ac..0000000 --- a/Swiften/MUC/MUCOccupant.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef SWIFTEN_MUCOccupant_H -#define SWIFTEN_MUCOccupant_H - -#include "Swiften/Base/String.h" - -namespace Swift { - class Client; - - class MUCOccupant { - public: - MUCOccupant(const String &nick); - ~MUCOccupant(); - - String getNick() const; - - private: - String nick_; - }; -} - -#endif diff --git a/Swiften/MUC/MUCRegistry.cpp b/Swiften/MUC/MUCRegistry.cpp deleted file mode 100644 index 95bab08..0000000 --- a/Swiften/MUC/MUCRegistry.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/MUC/MUCRegistry.h" - -namespace Swift { - -MUCRegistry::~MUCRegistry() { -} - -} diff --git a/Swiften/MUC/MUCRegistry.h b/Swiften/MUC/MUCRegistry.h deleted file mode 100644 index a843abb..0000000 --- a/Swiften/MUC/MUCRegistry.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -namespace Swift { - class JID; - - class MUCRegistry { - public: - virtual ~MUCRegistry(); - - virtual bool isMUC(const JID&) const = 0; - }; -} diff --git a/Swiften/Network/BoostConnection.cpp b/Swiften/Network/BoostConnection.cpp deleted file mode 100644 index 0d62300..0000000 --- a/Swiften/Network/BoostConnection.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include "Swiften/Network/BoostConnection.h" - -#include <iostream> -#include <boost/bind.hpp> -#include <boost/thread.hpp> - -#include "Swiften/EventLoop/MainEventLoop.h" -#include "Swiften/Base/String.h" -#include "Swiften/Base/ByteArray.h" -#include "Swiften/Network/HostAddressPort.h" - -namespace Swift { - -static const size_t BUFFER_SIZE = 4096; - -// ----------------------------------------------------------------------------- - -// A reference-counted non-modifiable buffer class. -class SharedBuffer { - public: - SharedBuffer(const ByteArray& data) : - data_(new std::vector<char>(data.begin(), data.end())), - buffer_(boost::asio::buffer(*data_)) { - } - - // ConstBufferSequence requirements. - typedef boost::asio::const_buffer value_type; - typedef const boost::asio::const_buffer* const_iterator; - const boost::asio::const_buffer* begin() const { return &buffer_; } - const boost::asio::const_buffer* end() const { return &buffer_ + 1; } - - private: - boost::shared_ptr< std::vector<char> > data_; - boost::asio::const_buffer buffer_; -}; - -// ----------------------------------------------------------------------------- - -BoostConnection::BoostConnection(boost::asio::io_service* ioService) : - socket_(*ioService), readBuffer_(BUFFER_SIZE) { -} - -BoostConnection::~BoostConnection() { -} - -void BoostConnection::listen() { - doRead(); -} - -void BoostConnection::connect(const HostAddressPort& addressPort) { - boost::asio::ip::tcp::endpoint endpoint( - boost::asio::ip::address::from_string(addressPort.getAddress().toString()), addressPort.getPort()); - socket_.async_connect( - endpoint, - boost::bind(&BoostConnection::handleConnectFinished, shared_from_this(), boost::asio::placeholders::error)); -} - -void BoostConnection::disconnect() { - //MainEventLoop::removeEventsFromOwner(shared_from_this()); - socket_.close(); -} - -void BoostConnection::write(const ByteArray& data) { - boost::asio::async_write(socket_, SharedBuffer(data), - boost::bind(&BoostConnection::handleDataWritten, shared_from_this(), boost::asio::placeholders::error)); -} - -void BoostConnection::handleConnectFinished(const boost::system::error_code& error) { - if (!error) { - MainEventLoop::postEvent(boost::bind(boost::ref(onConnectFinished), false), shared_from_this()); - doRead(); - } - else if (error != boost::asio::error::operation_aborted) { - MainEventLoop::postEvent(boost::bind(boost::ref(onConnectFinished), true), shared_from_this()); - } -} - -void BoostConnection::doRead() { - socket_.async_read_some( - boost::asio::buffer(readBuffer_), - boost::bind(&BoostConnection::handleSocketRead, shared_from_this(), boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)); -} - -void BoostConnection::handleSocketRead(const boost::system::error_code& error, size_t bytesTransferred) { - if (!error) { - MainEventLoop::postEvent(boost::bind(boost::ref(onDataRead), ByteArray(&readBuffer_[0], bytesTransferred)), shared_from_this()); - doRead(); - } - else if (error == boost::asio::error::eof) { - MainEventLoop::postEvent(boost::bind(boost::ref(onDisconnected), boost::optional<Error>()), shared_from_this()); - } - else if (error != boost::asio::error::operation_aborted) { - MainEventLoop::postEvent(boost::bind(boost::ref(onDisconnected), ReadError), shared_from_this()); - } -} - -void BoostConnection::handleDataWritten(const boost::system::error_code& error) { - if (!error) { - return; - } - if (error == boost::asio::error::eof) { - MainEventLoop::postEvent(boost::bind(boost::ref(onDisconnected), boost::optional<Error>()), shared_from_this()); - } - else if (error && error != boost::asio::error::operation_aborted) { - MainEventLoop::postEvent(boost::bind(boost::ref(onDisconnected), WriteError), shared_from_this()); - } -} - -} diff --git a/Swiften/Network/BoostConnection.h b/Swiften/Network/BoostConnection.h deleted file mode 100644 index ae09fb8..0000000 --- a/Swiften/Network/BoostConnection.h +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once - -#include <boost/asio.hpp> -#include <boost/enable_shared_from_this.hpp> - -#include "Swiften/Network/Connection.h" -#include "Swiften/EventLoop/EventOwner.h" - -namespace boost { - class thread; - namespace system { - class error_code; - } -} - -namespace Swift { - class BoostConnection : public Connection, public EventOwner, public boost::enable_shared_from_this<BoostConnection> { - public: - BoostConnection(boost::asio::io_service* ioService); - ~BoostConnection(); - - virtual void listen(); - virtual void connect(const HostAddressPort& address); - virtual void disconnect(); - virtual void write(const ByteArray& data); - - boost::asio::ip::tcp::socket& getSocket() { - return socket_; - } - - private: - void handleConnectFinished(const boost::system::error_code& error); - void handleSocketRead(const boost::system::error_code& error, size_t bytesTransferred); - void handleDataWritten(const boost::system::error_code& error); - void doRead(); - - private: - boost::asio::ip::tcp::socket socket_; - std::vector<char> readBuffer_; - bool disconnecting_; - }; -} diff --git a/Swiften/Network/BoostConnectionFactory.cpp b/Swiften/Network/BoostConnectionFactory.cpp deleted file mode 100644 index 3f62730..0000000 --- a/Swiften/Network/BoostConnectionFactory.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "Swiften/Network/BoostConnectionFactory.h" -#include "Swiften/Network/BoostConnection.h" - -namespace Swift { - -BoostConnectionFactory::BoostConnectionFactory(boost::asio::io_service* ioService) : ioService(ioService) { -} - -boost::shared_ptr<Connection> BoostConnectionFactory::createConnection() { - return boost::shared_ptr<Connection>(new BoostConnection(ioService)); -} - -} diff --git a/Swiften/Network/BoostConnectionFactory.h b/Swiften/Network/BoostConnectionFactory.h deleted file mode 100644 index 5695c6c..0000000 --- a/Swiften/Network/BoostConnectionFactory.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include <boost/asio.hpp> - -#include "Swiften/Network/ConnectionFactory.h" -#include "Swiften/Network/BoostConnection.h" - -namespace Swift { - class BoostConnection; - - class BoostConnectionFactory : public ConnectionFactory { - public: - BoostConnectionFactory(boost::asio::io_service*); - - virtual boost::shared_ptr<Connection> createConnection(); - - private: - boost::asio::io_service* ioService; - }; -} diff --git a/Swiften/Network/BoostConnectionServer.cpp b/Swiften/Network/BoostConnectionServer.cpp deleted file mode 100644 index cea016d..0000000 --- a/Swiften/Network/BoostConnectionServer.cpp +++ /dev/null @@ -1,68 +0,0 @@ -#include "Swiften/Network/BoostConnectionServer.h" - -#include <boost/bind.hpp> -#include <boost/system/system_error.hpp> - -#include "Swiften/EventLoop/MainEventLoop.h" - -namespace Swift { - -BoostConnectionServer::BoostConnectionServer(int port, boost::asio::io_service* ioService) : port_(port), ioService_(ioService), acceptor_(NULL) { -} - - -void BoostConnectionServer::start() { - try { - assert(!acceptor_); - acceptor_ = new boost::asio::ip::tcp::acceptor( - *ioService_, - boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port_)); - acceptNextConnection(); - } - catch (const boost::system::system_error& e) { - if (e.code() == boost::asio::error::address_in_use) { - MainEventLoop::postEvent(boost::bind(boost::ref(onStopped), Conflict), shared_from_this()); - } - else { - MainEventLoop::postEvent(boost::bind(boost::ref(onStopped), UnknownError), shared_from_this()); - } - } -} - - -void BoostConnectionServer::stop() { - stop(boost::optional<Error>()); -} - -void BoostConnectionServer::stop(boost::optional<Error> e) { - if (acceptor_) { - acceptor_->close(); - delete acceptor_; - acceptor_ = NULL; - } - MainEventLoop::postEvent(boost::bind(boost::ref(onStopped), e), shared_from_this()); -} - -void BoostConnectionServer::acceptNextConnection() { - boost::shared_ptr<BoostConnection> newConnection(new BoostConnection(&acceptor_->io_service())); - acceptor_->async_accept(newConnection->getSocket(), - boost::bind(&BoostConnectionServer::handleAccept, shared_from_this(), newConnection, boost::asio::placeholders::error)); -} - -void BoostConnectionServer::handleAccept(boost::shared_ptr<BoostConnection> newConnection, const boost::system::error_code& error) { - if (error) { - MainEventLoop::postEvent( - boost::bind( - &BoostConnectionServer::stop, shared_from_this(), UnknownError), - shared_from_this()); - } - else { - MainEventLoop::postEvent( - boost::bind(boost::ref(onNewConnection), newConnection), - shared_from_this()); - newConnection->listen(); - acceptNextConnection(); - } -} - -} diff --git a/Swiften/Network/BoostConnectionServer.h b/Swiften/Network/BoostConnectionServer.h deleted file mode 100644 index d8e5eb4..0000000 --- a/Swiften/Network/BoostConnectionServer.h +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/enable_shared_from_this.hpp> -#include <boost/asio.hpp> -#include <boost/signal.hpp> - -#include "Swiften/Network/BoostConnection.h" -#include "Swiften/Network/ConnectionServer.h" -#include "Swiften/EventLoop/EventOwner.h" - -namespace Swift { - class BoostConnectionServer : public ConnectionServer, public EventOwner, public boost::enable_shared_from_this<BoostConnectionServer> { - public: - enum Error { - Conflict, - UnknownError - }; - BoostConnectionServer(int port, boost::asio::io_service* ioService); - - void start(); - void stop(); - - boost::signal<void (boost::optional<Error>)> onStopped; - - private: - void stop(boost::optional<Error> e); - void acceptNextConnection(); - void handleAccept(boost::shared_ptr<BoostConnection> newConnection, const boost::system::error_code& error); - - private: - int port_; - boost::asio::io_service* ioService_; - boost::asio::ip::tcp::acceptor* acceptor_; - }; -} diff --git a/Swiften/Network/BoostIOServiceThread.cpp b/Swiften/Network/BoostIOServiceThread.cpp deleted file mode 100644 index 01c3bf3..0000000 --- a/Swiften/Network/BoostIOServiceThread.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "Swiften/Network/BoostIOServiceThread.h" - -namespace Swift { - -BoostIOServiceThread::BoostIOServiceThread() : thread_(boost::bind(&BoostIOServiceThread::doRun, this)) { -} - -BoostIOServiceThread::~BoostIOServiceThread() { - ioService_.stop(); - thread_.join(); -} - -void BoostIOServiceThread::doRun() { - boost::asio::io_service::work work(ioService_); - ioService_.run(); -} - -} diff --git a/Swiften/Network/BoostIOServiceThread.h b/Swiften/Network/BoostIOServiceThread.h deleted file mode 100644 index ddc90bf..0000000 --- a/Swiften/Network/BoostIOServiceThread.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include <boost/asio.hpp> -#include <boost/thread.hpp> - -namespace Swift { - class BoostIOServiceThread { - public: - BoostIOServiceThread(); - ~BoostIOServiceThread(); - - boost::asio::io_service& getIOService() { - return ioService_; - } - - private: - void doRun(); - - private: - boost::asio::io_service ioService_; - boost::thread thread_; - }; -} diff --git a/Swiften/Network/BoostTimer.cpp b/Swiften/Network/BoostTimer.cpp deleted file mode 100644 index fdbd45d..0000000 --- a/Swiften/Network/BoostTimer.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "Swiften/Network/BoostTimer.h" - -#include <boost/date_time/posix_time/posix_time.hpp> -#include <boost/asio.hpp> - -#include "Swiften/EventLoop/MainEventLoop.h" - -namespace Swift { - -BoostTimer::BoostTimer(int milliseconds, boost::asio::io_service* service) : - timeout(milliseconds), timer(*service) { -} - -void BoostTimer::start() { - timer.expires_from_now(boost::posix_time::milliseconds(timeout)); - timer.async_wait(boost::bind(&BoostTimer::handleTimerTick, shared_from_this(), boost::asio::placeholders::error)); -} - -void BoostTimer::stop() { - timer.cancel(); -} - -void BoostTimer::handleTimerTick(const boost::system::error_code& error) { - if (error) { - assert(error == boost::asio::error::operation_aborted); - } - else { - MainEventLoop::postEvent(boost::bind(boost::ref(onTick)), shared_from_this()); - timer.expires_from_now(boost::posix_time::milliseconds(timeout)); - timer.async_wait(boost::bind(&BoostTimer::handleTimerTick, shared_from_this(), boost::asio::placeholders::error)); - } -} - -} diff --git a/Swiften/Network/BoostTimer.h b/Swiften/Network/BoostTimer.h deleted file mode 100644 index 9b27cf9..0000000 --- a/Swiften/Network/BoostTimer.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include <boost/asio.hpp> -#include <boost/thread.hpp> -#include <boost/enable_shared_from_this.hpp> - -#include "Swiften/EventLoop/EventOwner.h" -#include "Swiften/Network/Timer.h" - -namespace Swift { - class BoostTimer : public Timer, public EventOwner, public boost::enable_shared_from_this<BoostTimer> { - public: - BoostTimer(int milliseconds, boost::asio::io_service* service); - - virtual void start(); - virtual void stop(); - - private: - void handleTimerTick(const boost::system::error_code& error); - - private: - int timeout; - boost::asio::deadline_timer timer; - }; -} diff --git a/Swiften/Network/BoostTimerFactory.cpp b/Swiften/Network/BoostTimerFactory.cpp deleted file mode 100644 index bbcd83f..0000000 --- a/Swiften/Network/BoostTimerFactory.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "Swiften/Network/BoostTimerFactory.h" -#include "Swiften/Network/BoostTimer.h" - -namespace Swift { - -BoostTimerFactory::BoostTimerFactory(boost::asio::io_service* ioService) : ioService(ioService) { -} - -boost::shared_ptr<Timer> BoostTimerFactory::createTimer(int milliseconds) { - return boost::shared_ptr<Timer>(new BoostTimer(milliseconds, ioService)); -} - -} diff --git a/Swiften/Network/BoostTimerFactory.h b/Swiften/Network/BoostTimerFactory.h deleted file mode 100644 index e98c9de..0000000 --- a/Swiften/Network/BoostTimerFactory.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include <boost/asio.hpp> - -#include "Swiften/Network/TimerFactory.h" -#include "Swiften/Network/BoostTimer.h" - -namespace Swift { - class BoostTimer; - - class BoostTimerFactory : public TimerFactory { - public: - BoostTimerFactory(boost::asio::io_service*); - - virtual boost::shared_ptr<Timer> createTimer(int milliseconds); - - private: - boost::asio::io_service* ioService; - }; -} diff --git a/Swiften/Network/CAresDomainNameResolver.cpp b/Swiften/Network/CAresDomainNameResolver.cpp deleted file mode 100644 index c0bf8a0..0000000 --- a/Swiften/Network/CAresDomainNameResolver.cpp +++ /dev/null @@ -1,162 +0,0 @@ -// TODO: Check the second param of postEvent. We sometimes omit it. Same -// goes for the PlatformDomainNameResolver. - -#include "Swiften/Network/CAresDomainNameResolver.h" -#include "Swiften/Base/Platform.h" - -#ifndef SWIFTEN_PLATFORM_WINDOWS -#include <netdb.h> -#include <arpa/inet.h> -#endif -#include <algorithm> - -#include "Swiften/Network/DomainNameServiceQuery.h" -#include "Swiften/Network/DomainNameAddressQuery.h" -#include "Swiften/Base/ByteArray.h" -#include "Swiften/EventLoop/MainEventLoop.h" -#include "Swiften/Base/foreach.h" - -namespace Swift { - -class CAresQuery : public boost::enable_shared_from_this<CAresQuery>, public EventOwner { - public: - CAresQuery(const String& query, int dnsclass, int type, CAresDomainNameResolver* resolver) : query(query), dnsclass(dnsclass), type(type), resolver(resolver) { - } - - virtual ~CAresQuery() { - } - - void addToQueue() { - resolver->addToQueue(shared_from_this()); - } - - void doRun(ares_channel* channel) { - ares_query(*channel, query.getUTF8Data(), dnsclass, type, &CAresQuery::handleResult, this); - } - - static void handleResult(void* arg, int status, int timeouts, unsigned char* buffer, int len) { - reinterpret_cast<CAresQuery*>(arg)->handleResult(status, timeouts, buffer, len); - } - - virtual void handleResult(int status, int, unsigned char* buffer, int len) = 0; - - private: - String query; - int dnsclass; - int type; - CAresDomainNameResolver* resolver; -}; - -class CAresDomainNameServiceQuery : public DomainNameServiceQuery, public CAresQuery { - public: - CAresDomainNameServiceQuery(const String& service, CAresDomainNameResolver* resolver) : CAresQuery(service, 1, 33, resolver) { - } - - virtual void run() { - addToQueue(); - } - - void handleResult(int status, int, unsigned char* buffer, int len) { - if (status == ARES_SUCCESS) { - std::vector<DomainNameServiceQuery::Result> records; - ares_srv_reply* rawRecords; - if (ares_parse_srv_reply(buffer, len, &rawRecords) == ARES_SUCCESS) { - for( ; rawRecords != NULL; rawRecords = rawRecords->next) { - DomainNameServiceQuery::Result record; - record.priority = rawRecords->priority; - record.weight = rawRecords->weight; - record.port = rawRecords->port; - record.hostname = String(rawRecords->host); - records.push_back(record); - } - } - std::sort(records.begin(), records.end(), ResultPriorityComparator()); - MainEventLoop::postEvent(boost::bind(boost::ref(onResult), records)); - } - else if (status != ARES_EDESTRUCTION) { - MainEventLoop::postEvent(boost::bind(boost::ref(onResult), std::vector<DomainNameServiceQuery::Result>()), shared_from_this()); - } - } -}; - -class CAresDomainNameAddressQuery : public DomainNameAddressQuery, public CAresQuery { - public: - CAresDomainNameAddressQuery(const String& host, CAresDomainNameResolver* resolver) : CAresQuery(host, 1, 1, resolver) { - } - - virtual void run() { - addToQueue(); - } - - void handleResult(int status, int, unsigned char* buffer, int len) { - if (status == ARES_SUCCESS) { - struct hostent* hosts; - if (ares_parse_a_reply(buffer, len, &hosts, NULL, NULL) == ARES_SUCCESS) { - // Check whether the different fields are what we expect them to be - struct in_addr addr; - addr.s_addr = *(unsigned int*)hosts->h_addr_list[0]; - HostAddress result(inet_ntoa(addr)); - MainEventLoop::postEvent(boost::bind(boost::ref(onResult), result, boost::optional<DomainNameResolveError>()), boost::dynamic_pointer_cast<CAresDomainNameAddressQuery>(shared_from_this())); - ares_free_hostent(hosts); - } - else { - MainEventLoop::postEvent(boost::bind(boost::ref(onResult), HostAddress(), boost::optional<DomainNameResolveError>(DomainNameResolveError())), shared_from_this()); - } - } - else if (status != ARES_EDESTRUCTION) { - MainEventLoop::postEvent(boost::bind(boost::ref(onResult), HostAddress(), boost::optional<DomainNameResolveError>(DomainNameResolveError())), shared_from_this()); - } - } -}; - -CAresDomainNameResolver::CAresDomainNameResolver() : stopRequested(false) { - ares_init(&channel); - thread = new boost::thread(boost::bind(&CAresDomainNameResolver::run, this)); -} - -CAresDomainNameResolver::~CAresDomainNameResolver() { - stopRequested = true; - thread->join(); - ares_destroy(channel); -} - -boost::shared_ptr<DomainNameServiceQuery> CAresDomainNameResolver::createServiceQuery(const String& name) { - return boost::shared_ptr<DomainNameServiceQuery>(new CAresDomainNameServiceQuery(getNormalized(name), this)); -} - -boost::shared_ptr<DomainNameAddressQuery> CAresDomainNameResolver::createAddressQuery(const String& name) { - return boost::shared_ptr<DomainNameAddressQuery>(new CAresDomainNameAddressQuery(getNormalized(name), this)); -} - -void CAresDomainNameResolver::addToQueue(boost::shared_ptr<CAresQuery> query) { - boost::lock_guard<boost::mutex> lock(pendingQueriesMutex); - pendingQueries.push_back(query); -} - -void CAresDomainNameResolver::run() { - fd_set readers, writers; - struct timeval timeout; - timeout.tv_sec = 0; - timeout.tv_usec = 100000; - while(!stopRequested) { - { - boost::unique_lock<boost::mutex> lock(pendingQueriesMutex); - foreach(const boost::shared_ptr<CAresQuery>& query, pendingQueries) { - query->doRun(&channel); - } - pendingQueries.clear(); - } - FD_ZERO(&readers); - FD_ZERO(&writers); - int nfds = ares_fds(channel, &readers, &writers); - //if (nfds) { - // break; - //} - struct timeval tv; - struct timeval* tvp = ares_timeout(channel, &timeout, &tv); - select(nfds, &readers, &writers, NULL, tvp); - ares_process(channel, &readers, &writers); - } -} - -} diff --git a/Swiften/Network/CAresDomainNameResolver.h b/Swiften/Network/CAresDomainNameResolver.h deleted file mode 100644 index 0cdd163..0000000 --- a/Swiften/Network/CAresDomainNameResolver.h +++ /dev/null @@ -1,34 +0,0 @@ -#pragma once - -#include <ares.h> -#include <boost/thread.hpp> -#include <boost/thread/mutex.hpp> -#include <list> - -#include "Swiften/Network/DomainNameResolver.h" - -namespace Swift { - class CAresQuery; - - class CAresDomainNameResolver : public DomainNameResolver { - public: - CAresDomainNameResolver(); - ~CAresDomainNameResolver(); - - virtual boost::shared_ptr<DomainNameServiceQuery> createServiceQuery(const String& name); - virtual boost::shared_ptr<DomainNameAddressQuery> createAddressQuery(const String& name); - - private: - friend class CAresQuery; - - void run(); - void addToQueue(boost::shared_ptr<CAresQuery>); - - private: - bool stopRequested; - ares_channel channel; - boost::thread* thread; - boost::mutex pendingQueriesMutex; - std::list< boost::shared_ptr<CAresQuery> > pendingQueries; - }; -} diff --git a/Swiften/Network/Connection.h b/Swiften/Network/Connection.h deleted file mode 100644 index a995774..0000000 --- a/Swiften/Network/Connection.h +++ /dev/null @@ -1,31 +0,0 @@ -#pragma once - -#include <boost/signals.hpp> - -#include "Swiften/Base/ByteArray.h" -#include "Swiften/Base/String.h" - -namespace Swift { - class HostAddressPort; - - class Connection { - public: - enum Error { - ReadError, - WriteError - }; - - Connection() {} - virtual ~Connection() {} - - virtual void listen() = 0; - virtual void connect(const HostAddressPort& address) = 0; - virtual void disconnect() = 0; - virtual void write(const ByteArray& data) = 0; - - public: - boost::signal<void (bool /* error */)> onConnectFinished; - boost::signal<void (const boost::optional<Error>&)> onDisconnected; - boost::signal<void (const ByteArray&)> onDataRead; - }; -} diff --git a/Swiften/Network/ConnectionFactory.cpp b/Swiften/Network/ConnectionFactory.cpp deleted file mode 100644 index 686a165..0000000 --- a/Swiften/Network/ConnectionFactory.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Network/ConnectionFactory.h" - -namespace Swift { - -ConnectionFactory::~ConnectionFactory() { -} - -} diff --git a/Swiften/Network/ConnectionFactory.h b/Swiften/Network/ConnectionFactory.h deleted file mode 100644 index e78f6ab..0000000 --- a/Swiften/Network/ConnectionFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> - -namespace Swift { - class Connection; - - class ConnectionFactory { - public: - virtual ~ConnectionFactory(); - - virtual boost::shared_ptr<Connection> createConnection() = 0; - }; -} diff --git a/Swiften/Network/ConnectionServer.cpp b/Swiften/Network/ConnectionServer.cpp deleted file mode 100644 index 7f63fee..0000000 --- a/Swiften/Network/ConnectionServer.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Network/ConnectionServer.h" - -namespace Swift { - -ConnectionServer::~ConnectionServer() { -} - -} diff --git a/Swiften/Network/ConnectionServer.h b/Swiften/Network/ConnectionServer.h deleted file mode 100644 index 539367d..0000000 --- a/Swiften/Network/ConnectionServer.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/signal.hpp> - -#include "Swiften/Network/Connection.h" - -namespace Swift { - class ConnectionServer { - public: - virtual ~ConnectionServer(); - - boost::signal<void (boost::shared_ptr<Connection>)> onNewConnection; - }; -} diff --git a/Swiften/Network/Connector.cpp b/Swiften/Network/Connector.cpp deleted file mode 100644 index d372bf2..0000000 --- a/Swiften/Network/Connector.cpp +++ /dev/null @@ -1,126 +0,0 @@ -#include "Swiften/Network/Connector.h" - -#include <boost/bind.hpp> -#include <iostream> - -#include "Swiften/Network/ConnectionFactory.h" -#include "Swiften/Network/DomainNameResolver.h" -#include "Swiften/Network/DomainNameAddressQuery.h" -#include "Swiften/Network/TimerFactory.h" - -namespace Swift { - -Connector::Connector(const String& hostname, DomainNameResolver* resolver, ConnectionFactory* connectionFactory, TimerFactory* timerFactory) : hostname(hostname), resolver(resolver), connectionFactory(connectionFactory), timerFactory(timerFactory), timeoutMilliseconds(0), queriedAllHosts(true) { -} - -void Connector::setTimeoutMilliseconds(int milliseconds) { - timeoutMilliseconds = milliseconds; -} - -void Connector::start() { - //std::cout << "Connector::start()" << std::endl; - assert(!currentConnection); - assert(!serviceQuery); - assert(!timer); - queriedAllHosts = false; - serviceQuery = resolver->createServiceQuery("_xmpp-client._tcp." + hostname); - serviceQuery->onResult.connect(boost::bind(&Connector::handleServiceQueryResult, this, _1)); - if (timeoutMilliseconds > 0) { - timer = timerFactory->createTimer(timeoutMilliseconds); - timer->onTick.connect(boost::bind(&Connector::handleTimeout, this)); - timer->start(); - } - serviceQuery->run(); -} - -void Connector::queryAddress(const String& hostname) { - assert(!addressQuery); - addressQuery = resolver->createAddressQuery(hostname); - addressQuery->onResult.connect(boost::bind(&Connector::handleAddressQueryResult, this, _1, _2)); - addressQuery->run(); -} - -void Connector::handleServiceQueryResult(const std::vector<DomainNameServiceQuery::Result>& result) { - //std::cout << "Received SRV results" << std::endl; - serviceQueryResults = std::deque<DomainNameServiceQuery::Result>(result.begin(), result.end()); - serviceQuery.reset(); - tryNextHostname(); -} - -void Connector::tryNextHostname() { - if (queriedAllHosts) { - //std::cout << "Connector::tryNextHostName(): Queried all hosts. Error." << std::endl; - finish(boost::shared_ptr<Connection>()); - } - else if (serviceQueryResults.empty()) { - //std::cout << "Connector::tryNextHostName(): Falling back on A resolution" << std::endl; - // Fall back on simple address resolving - queriedAllHosts = true; - queryAddress(hostname); - } - else { - //std::cout << "Connector::tryNextHostName(): Querying next address" << std::endl; - queryAddress(serviceQueryResults.front().hostname); - } -} - -void Connector::handleAddressQueryResult(const HostAddress& address, boost::optional<DomainNameResolveError> error) { - //std::cout << "Connector::handleAddressQueryResult(): Start" << std::endl; - addressQuery.reset(); - if (!serviceQueryResults.empty()) { - DomainNameServiceQuery::Result serviceQueryResult = serviceQueryResults.front(); - serviceQueryResults.pop_front(); - if (error) { - //std::cout << "Connector::handleAddressQueryResult(): A lookup for SRV host " << serviceQueryResult.hostname << " failed." << std::endl; - tryNextHostname(); - } - else { - //std::cout << "Connector::handleAddressQueryResult(): A lookup for SRV host " << serviceQueryResult.hostname << " succeeded: " << address.toString() << std::endl; - tryConnect(HostAddressPort(address, serviceQueryResult.port)); - } - } - else if (error) { - //std::cout << "Connector::handleAddressQueryResult(): Fallback address query failed. Giving up" << std::endl; - // The fallback address query failed - assert(queriedAllHosts); - finish(boost::shared_ptr<Connection>()); - } - else { - //std::cout << "Connector::handleAddressQueryResult(): Fallback address query succeeded: " << address.toString() << std::endl; - // The fallback query succeeded - tryConnect(HostAddressPort(address, 5222)); - } -} - -void Connector::tryConnect(const HostAddressPort& target) { - assert(!currentConnection); - //std::cout << "Connector::tryConnect() " << target.getAddress().toString() << " " << target.getPort() << std::endl; - currentConnection = connectionFactory->createConnection(); - currentConnection->onConnectFinished.connect(boost::bind(&Connector::handleConnectionConnectFinished, this, _1)); - currentConnection->connect(target); -} - -void Connector::handleConnectionConnectFinished(bool error) { - //std::cout << "Connector::handleConnectionConnectFinished() " << error << std::endl; - if (error) { - currentConnection.reset(); - tryNextHostname(); - } - else { - finish(currentConnection); - } -} - -void Connector::finish(boost::shared_ptr<Connection> connection) { - if (timer) { - timer->stop(); - timer.reset(); - } - onConnectFinished(connection); -} - -void Connector::handleTimeout() { - finish(boost::shared_ptr<Connection>()); -} - -}; diff --git a/Swiften/Network/Connector.h b/Swiften/Network/Connector.h deleted file mode 100644 index 507f085..0000000 --- a/Swiften/Network/Connector.h +++ /dev/null @@ -1,54 +0,0 @@ -#pragma once - -#include <deque> -#include <boost/signal.hpp> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Network/DomainNameServiceQuery.h" -#include "Swiften/Network/Connection.h" -#include "Swiften/Network/Timer.h" -#include "Swiften/Network/HostAddressPort.h" -#include "Swiften/Base/String.h" -#include "Swiften/Network/DomainNameResolveError.h" - -namespace Swift { - class DomainNameAddressQuery; - class DomainNameResolver; - class ConnectionFactory; - class TimerFactory; - - class Connector : public boost::bsignals::trackable { - public: - Connector(const String& hostname, DomainNameResolver*, ConnectionFactory*, TimerFactory*); - - void setTimeoutMilliseconds(int milliseconds); - void start(); - - boost::signal<void (boost::shared_ptr<Connection>)> onConnectFinished; - - private: - void handleServiceQueryResult(const std::vector<DomainNameServiceQuery::Result>& result); - void handleAddressQueryResult(const HostAddress& address, boost::optional<DomainNameResolveError> error); - void queryAddress(const String& hostname); - - void tryNextHostname(); - void tryConnect(const HostAddressPort& target); - - void handleConnectionConnectFinished(bool error); - void finish(boost::shared_ptr<Connection>); - void handleTimeout(); - - private: - String hostname; - DomainNameResolver* resolver; - ConnectionFactory* connectionFactory; - TimerFactory* timerFactory; - int timeoutMilliseconds; - boost::shared_ptr<Timer> timer; - boost::shared_ptr<DomainNameServiceQuery> serviceQuery; - std::deque<DomainNameServiceQuery::Result> serviceQueryResults; - boost::shared_ptr<DomainNameAddressQuery> addressQuery; - bool queriedAllHosts; - boost::shared_ptr<Connection> currentConnection; - }; -}; diff --git a/Swiften/Network/DomainNameAddressQuery.cpp b/Swiften/Network/DomainNameAddressQuery.cpp deleted file mode 100644 index 5e77cd7..0000000 --- a/Swiften/Network/DomainNameAddressQuery.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Network/DomainNameAddressQuery.h" - -namespace Swift { - -DomainNameAddressQuery::~DomainNameAddressQuery() { -} - -} diff --git a/Swiften/Network/DomainNameAddressQuery.h b/Swiften/Network/DomainNameAddressQuery.h deleted file mode 100644 index 66a79db..0000000 --- a/Swiften/Network/DomainNameAddressQuery.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include <boost/signals.hpp> -#include <boost/optional.hpp> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Network/DomainNameResolveError.h" -#include "Swiften/Network/HostAddress.h" - -namespace Swift { - class DomainNameAddressQuery { - public: - virtual ~DomainNameAddressQuery(); - - virtual void run() = 0; - - boost::signal<void (const HostAddress&, boost::optional<DomainNameResolveError>)> onResult; - }; -} diff --git a/Swiften/Network/DomainNameResolveError.h b/Swiften/Network/DomainNameResolveError.h deleted file mode 100644 index 860ea23..0000000 --- a/Swiften/Network/DomainNameResolveError.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include "Swiften/Base/Error.h" - -namespace Swift { - class DomainNameResolveError : public Error { - public: - DomainNameResolveError() {} - }; -} diff --git a/Swiften/Network/DomainNameResolver.cpp b/Swiften/Network/DomainNameResolver.cpp deleted file mode 100644 index 63ed881..0000000 --- a/Swiften/Network/DomainNameResolver.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "Swiften/Network/DomainNameResolver.h" - -#include <idna.h> - -namespace Swift { - -DomainNameResolver::~DomainNameResolver() { -} - -String DomainNameResolver::getNormalized(const String& domain) { - char* output; - if (idna_to_ascii_8z(domain.getUTF8Data(), &output, 0) == IDNA_SUCCESS) { - String result(output); - free(output); - return result; - } - else { - return domain; - } -} - -} diff --git a/Swiften/Network/DomainNameResolver.h b/Swiften/Network/DomainNameResolver.h deleted file mode 100644 index d3dab26..0000000 --- a/Swiften/Network/DomainNameResolver.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Base/String.h" - -namespace Swift { - class DomainNameServiceQuery; - class DomainNameAddressQuery; - class String; - - class DomainNameResolver { - public: - virtual ~DomainNameResolver(); - - virtual boost::shared_ptr<DomainNameServiceQuery> createServiceQuery(const String& name) = 0; - virtual boost::shared_ptr<DomainNameAddressQuery> createAddressQuery(const String& name) = 0; - - protected: - static String getNormalized(const String& domain); - }; -} diff --git a/Swiften/Network/DomainNameServiceQuery.cpp b/Swiften/Network/DomainNameServiceQuery.cpp deleted file mode 100644 index 7dfd353..0000000 --- a/Swiften/Network/DomainNameServiceQuery.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Network/DomainNameServiceQuery.h" - -namespace Swift { - -DomainNameServiceQuery::~DomainNameServiceQuery() { -} - -} diff --git a/Swiften/Network/DomainNameServiceQuery.h b/Swiften/Network/DomainNameServiceQuery.h deleted file mode 100644 index 57e48d3..0000000 --- a/Swiften/Network/DomainNameServiceQuery.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include <boost/signals.hpp> -#include <boost/optional.hpp> -#include <vector> - -#include "Swiften/Base/String.h" -#include "Swiften/Network/DomainNameResolveError.h" - -namespace Swift { - class DomainNameServiceQuery { - public: - struct Result { - Result(const String& hostname = "", int port = -1, int priority = -1, int weight = -1) : hostname(hostname), port(port), priority(priority), weight(weight) {} - String hostname; - int port; - int priority; - int weight; - }; - - struct ResultPriorityComparator { - bool operator()(const DomainNameServiceQuery::Result& a, const DomainNameServiceQuery::Result& b) const { - return a.priority < b.priority; - } - }; - - virtual ~DomainNameServiceQuery(); - - virtual void run() = 0; - - boost::signal<void (const std::vector<Result>&)> onResult; - }; -} diff --git a/Swiften/Network/DummyConnection.h b/Swiften/Network/DummyConnection.h deleted file mode 100644 index 11281b3..0000000 --- a/Swiften/Network/DummyConnection.h +++ /dev/null @@ -1,40 +0,0 @@ -#pragma once - -#include <cassert> -#include <boost/bind.hpp> -#include <boost/enable_shared_from_this.hpp> - -#include "Swiften/Network/Connection.h" -#include "Swiften/EventLoop/MainEventLoop.h" -#include "Swiften/EventLoop/EventOwner.h" - -namespace Swift { - class DummyConnection : - public Connection, - public EventOwner, - public boost::enable_shared_from_this<DummyConnection> { - - void listen() { - assert(false); - } - - void connect(const HostAddressPort&) { - assert(false); - } - - void disconnect() { - assert(false); - } - - void write(const ByteArray& data) { - onDataWritten(data); - } - - void receive(const ByteArray& data) { - MainEventLoop::postEvent(boost::bind( - boost::ref(onDataRead), ByteArray(data)), shared_from_this()); - } - - boost::signal<void (const ByteArray&)> onDataWritten; - }; -} diff --git a/Swiften/Network/DummyTimerFactory.cpp b/Swiften/Network/DummyTimerFactory.cpp deleted file mode 100644 index 7626584..0000000 --- a/Swiften/Network/DummyTimerFactory.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include "Swiften/Network/DummyTimerFactory.h" - -#include <algorithm> - -#include "Swiften/Base/foreach.h" -#include "Swiften/Network/Timer.h" - -namespace Swift { - -class DummyTimerFactory::DummyTimer : public Timer { - public: - DummyTimer(int timeout) : timeout(timeout), isRunning(false) { - } - - virtual void start() { - isRunning = true; - } - - virtual void stop() { - isRunning = false; - } - - int timeout; - bool isRunning; -}; - - -DummyTimerFactory::DummyTimerFactory() : currentTime(0) { -} - -boost::shared_ptr<Timer> DummyTimerFactory::createTimer(int milliseconds) { - boost::shared_ptr<DummyTimer> timer(new DummyTimer(milliseconds)); - timers.push_back(timer); - return timer; -} - -static bool hasZeroTimeout(boost::shared_ptr<DummyTimerFactory::DummyTimer> timer) { - return timer->timeout == 0; -} - -void DummyTimerFactory::setTime(int time) { - assert(time > currentTime); - int increment = time - currentTime; - std::vector< boost::shared_ptr<DummyTimer> > notifyTimers(timers.begin(), timers.end()); - foreach(boost::shared_ptr<DummyTimer> timer, notifyTimers) { - if (increment >= timer->timeout) { - if (timer->isRunning) { - timer->onTick(); - } - timer->timeout = 0; - } - else { - timer->timeout -= increment; - } - } - timers.erase(std::remove_if(timers.begin(), timers.end(), hasZeroTimeout), timers.end()); - currentTime = time; -} - -} diff --git a/Swiften/Network/DummyTimerFactory.h b/Swiften/Network/DummyTimerFactory.h deleted file mode 100644 index feac029..0000000 --- a/Swiften/Network/DummyTimerFactory.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include <list> - -#include "Swiften/Network/TimerFactory.h" - -namespace Swift { - class DummyTimerFactory : public TimerFactory { - public: - class DummyTimer; - - DummyTimerFactory(); - - virtual boost::shared_ptr<Timer> createTimer(int milliseconds); - void setTime(int time); - - private: - friend class DummyTimer; - int currentTime; - std::list<boost::shared_ptr<DummyTimer> > timers; - }; -} diff --git a/Swiften/Network/FakeConnection.h b/Swiften/Network/FakeConnection.h deleted file mode 100644 index 92a03c3..0000000 --- a/Swiften/Network/FakeConnection.h +++ /dev/null @@ -1,88 +0,0 @@ -#pragma once - -#include <boost/optional.hpp> -#include <boost/bind.hpp> -#include <boost/enable_shared_from_this.hpp> -#include <vector> - -#include "Swiften/Network/Connection.h" -#include "Swiften/Network/HostAddressPort.h" -#include "Swiften/EventLoop/EventOwner.h" -#include "Swiften/EventLoop/MainEventLoop.h" - -namespace Swift { - class FakeConnection : - public Connection, - public EventOwner, - public boost::enable_shared_from_this<FakeConnection> { - public: - enum State { - Initial, - Connecting, - Connected, - Disconnected, - DisconnectedWithError - }; - - FakeConnection() : state(Initial), delayConnect(false) {} - - virtual void listen() { - assert(false); - } - - void setError(const Error& e) { - error = boost::optional<Error>(e); - state = DisconnectedWithError; - if (connectedTo) { - MainEventLoop::postEvent( - boost::bind(boost::ref(onDisconnected), error), - shared_from_this()); - } - } - - virtual void connect(const HostAddressPort& address) { - if (delayConnect) { - state = Connecting; - } - else { - if (!error) { - connectedTo = address; - state = Connected; - } - else { - state = DisconnectedWithError; - } - MainEventLoop::postEvent( - boost::bind(boost::ref(onConnectFinished), error), - shared_from_this()); - } - } - - virtual void disconnect() { - if (!error) { - state = Disconnected; - } - else { - state = DisconnectedWithError; - } - connectedTo.reset(); - MainEventLoop::postEvent( - boost::bind(boost::ref(onDisconnected), error), - shared_from_this()); - } - - virtual void write(const ByteArray& data) { - dataWritten.push_back(data); - } - - void setDelayConnect() { - delayConnect = true; - } - - boost::optional<HostAddressPort> connectedTo; - std::vector<ByteArray> dataWritten; - boost::optional<Error> error; - State state; - bool delayConnect; - }; -} diff --git a/Swiften/Network/HostAddress.cpp b/Swiften/Network/HostAddress.cpp deleted file mode 100644 index 8ac66bb..0000000 --- a/Swiften/Network/HostAddress.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "Swiften/Network/HostAddress.h" - -#include <boost/numeric/conversion/cast.hpp> -#include <boost/lexical_cast.hpp> -#include <cassert> -#include <sstream> -#include <iomanip> - -#include "Swiften/Base/foreach.h" -#include "Swiften/Base/String.h" - -namespace Swift { - -HostAddress::HostAddress() { - for (int i = 0; i < 4; ++i) { - address_.push_back(0); - } -} - -HostAddress::HostAddress(const String& address) { - std::vector<String> components = address.split('.'); - assert(components.size() == 4); - foreach(const String& component, components) { - address_.push_back(boost::lexical_cast<int>(component.getUTF8String())); - } -} - -HostAddress::HostAddress(const unsigned char* address, int length) { - assert(length == 4 || length == 16); - address_.reserve(length); - for (int i = 0; i < length; ++i) { - address_.push_back(address[i]); - } -} - -std::string HostAddress::toString() const { - if (address_.size() == 4) { - std::ostringstream result; - for (size_t i = 0; i < address_.size() - 1; ++i) { - result << boost::numeric_cast<unsigned int>(address_[i]) << "."; - } - result << boost::numeric_cast<unsigned int>(address_[address_.size() - 1]); - return result.str(); - } - else if (address_.size() == 16) { - std::ostringstream result; - result << std::hex; - result.fill('0'); - for (size_t i = 0; i < (address_.size() / 2) - 1; ++i) { - result << std::setw(2) << boost::numeric_cast<unsigned int>(address_[2*i]) << std::setw(2) << boost::numeric_cast<unsigned int>(address_[(2*i)+1]) << ":"; - } - result << std::setw(2) << boost::numeric_cast<unsigned int>(address_[address_.size() - 2]) << std::setw(2) << boost::numeric_cast<unsigned int>(address_[address_.size() - 1]); - return result.str(); - } - else { - assert(false); - return ""; - } -} - -} diff --git a/Swiften/Network/HostAddress.h b/Swiften/Network/HostAddress.h deleted file mode 100644 index 11f8a2b..0000000 --- a/Swiften/Network/HostAddress.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#include <string> -#include <vector> - -namespace Swift { - class String; - - class HostAddress { - public: - HostAddress(); - HostAddress(const String&); - HostAddress(const unsigned char* address, int length); - - const std::vector<unsigned char>& getRawAddress() const { - return address_; - } - - std::string toString() const; - - bool operator==(const HostAddress& o) const { - return address_ == o.address_; - } - - private: - std::vector<unsigned char> address_; - }; -} diff --git a/Swiften/Network/HostAddressPort.h b/Swiften/Network/HostAddressPort.h deleted file mode 100644 index d632058..0000000 --- a/Swiften/Network/HostAddressPort.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef SWIFTEN_HostAddressPort_H -#define SWIFTEN_HostAddressPort_H - -#include "Swiften/Network/HostAddress.h" - -namespace Swift { - class HostAddressPort { - public: - HostAddressPort(const HostAddress& address, int port) : address_(address), port_(port) { - } - - const HostAddress& getAddress() const { - return address_; - } - - int getPort() const { - return port_; - } - - bool operator==(const HostAddressPort& o) const { - return address_ == o.address_ && port_ == o.port_; - } - - private: - HostAddress address_; - int port_; - }; -} - -#endif diff --git a/Swiften/Network/MainBoostIOServiceThread.cpp b/Swiften/Network/MainBoostIOServiceThread.cpp deleted file mode 100644 index 672bb07..0000000 --- a/Swiften/Network/MainBoostIOServiceThread.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include "Swiften/Network/MainBoostIOServiceThread.h" - -#include "Swiften/Network/BoostIOServiceThread.h" - -namespace Swift { - -BoostIOServiceThread& MainBoostIOServiceThread::getInstance() { - static BoostIOServiceThread instance; - return instance; -} - -} diff --git a/Swiften/Network/MainBoostIOServiceThread.h b/Swiften/Network/MainBoostIOServiceThread.h deleted file mode 100644 index cca7c2e..0000000 --- a/Swiften/Network/MainBoostIOServiceThread.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -namespace Swift { - class BoostIOServiceThread; - - class MainBoostIOServiceThread { - public: - static BoostIOServiceThread& getInstance(); - }; -} diff --git a/Swiften/Network/PlatformDomainNameResolver.cpp b/Swiften/Network/PlatformDomainNameResolver.cpp deleted file mode 100644 index 7b8a6d5..0000000 --- a/Swiften/Network/PlatformDomainNameResolver.cpp +++ /dev/null @@ -1,94 +0,0 @@ -#include "Swiften/Network/PlatformDomainNameResolver.h" - -// Putting this early on, because some system types conflict with thread -#include "Swiften/Network/PlatformDomainNameServiceQuery.h" - -#include <string> -#include <vector> -#include <boost/asio.hpp> -#include <boost/bind.hpp> -#include <boost/thread.hpp> -#include <boost/enable_shared_from_this.hpp> -#include <algorithm> - -#include "Swiften/Base/String.h" -#include "Swiften/Network/HostAddress.h" -#include "Swiften/EventLoop/MainEventLoop.h" -#include "Swiften/Network/HostAddressPort.h" -#include "Swiften/Network/DomainNameAddressQuery.h" - -using namespace Swift; - -namespace { - struct AddressQuery : public DomainNameAddressQuery, public boost::enable_shared_from_this<AddressQuery>, public EventOwner { - AddressQuery(const String& host) : hostname(host), thread(NULL), safeToJoin(false) {} - - ~AddressQuery() { - if (safeToJoin) { - thread->join(); - } - else { - // FIXME: UGLYYYYY - } - delete thread; - } - - void run() { - safeToJoin = false; - thread = new boost::thread(boost::bind(&AddressQuery::doRun, shared_from_this())); - } - - void doRun() { - //std::cout << "PlatformDomainNameResolver::doRun()" << std::endl; - boost::asio::ip::tcp::resolver resolver(ioService); - boost::asio::ip::tcp::resolver::query query(hostname.getUTF8String(), "5222"); - try { - //std::cout << "PlatformDomainNameResolver::doRun(): Resolving" << std::endl; - boost::asio::ip::tcp::resolver::iterator endpointIterator = resolver.resolve(query); - //std::cout << "PlatformDomainNameResolver::doRun(): Resolved" << std::endl; - if (endpointIterator == boost::asio::ip::tcp::resolver::iterator()) { - //std::cout << "PlatformDomainNameResolver::doRun(): Error 1" << std::endl; - emitError(); - } - else { - boost::asio::ip::address address = (*endpointIterator).endpoint().address(); - HostAddress result = (address.is_v4() ? HostAddress(&address.to_v4().to_bytes()[0], 4) : HostAddress(&address.to_v6().to_bytes()[0], 16)); - //std::cout << "PlatformDomainNameResolver::doRun(): Success" << std::endl; - MainEventLoop::postEvent( - boost::bind(boost::ref(onResult), result, boost::optional<DomainNameResolveError>()), - shared_from_this()); - } - } - catch (...) { - //std::cout << "PlatformDomainNameResolver::doRun(): Error 2" << std::endl; - emitError(); - } - safeToJoin = true; - } - - void emitError() { - MainEventLoop::postEvent(boost::bind(boost::ref(onResult), HostAddress(), boost::optional<DomainNameResolveError>(DomainNameResolveError())), shared_from_this()); - } - - boost::asio::io_service ioService; - String hostname; - boost::thread* thread; - bool safeToJoin; - }; - -} - -namespace Swift { - -PlatformDomainNameResolver::PlatformDomainNameResolver() { -} - -boost::shared_ptr<DomainNameServiceQuery> PlatformDomainNameResolver::createServiceQuery(const String& name) { - return boost::shared_ptr<DomainNameServiceQuery>(new PlatformDomainNameServiceQuery(getNormalized(name))); -} - -boost::shared_ptr<DomainNameAddressQuery> PlatformDomainNameResolver::createAddressQuery(const String& name) { - return boost::shared_ptr<DomainNameAddressQuery>(new AddressQuery(getNormalized(name))); -} - -} diff --git a/Swiften/Network/PlatformDomainNameResolver.h b/Swiften/Network/PlatformDomainNameResolver.h deleted file mode 100644 index 4617b15..0000000 --- a/Swiften/Network/PlatformDomainNameResolver.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#include "Swiften/Network/DomainNameResolver.h" - -namespace Swift { - class String; - - class PlatformDomainNameResolver : public DomainNameResolver { - public: - PlatformDomainNameResolver(); - - virtual boost::shared_ptr<DomainNameServiceQuery> createServiceQuery(const String& name); - virtual boost::shared_ptr<DomainNameAddressQuery> createAddressQuery(const String& name); - }; -} diff --git a/Swiften/Network/PlatformDomainNameServiceQuery.cpp b/Swiften/Network/PlatformDomainNameServiceQuery.cpp deleted file mode 100644 index bde851b..0000000 --- a/Swiften/Network/PlatformDomainNameServiceQuery.cpp +++ /dev/null @@ -1,170 +0,0 @@ -#include "Swiften/Network/PlatformDomainNameServiceQuery.h" - -#include "Swiften/Base/Platform.h" -#include <stdlib.h> -#ifdef SWIFTEN_PLATFORM_WINDOWS -#undef UNICODE -#include <windows.h> -#include <windns.h> -#ifndef DNS_TYPE_SRV -#define DNS_TYPE_SRV 33 -#endif -#else -#include <arpa/nameser.h> -#include <arpa/nameser_compat.h> -#include <resolv.h> -#endif -#include <boost/bind.hpp> - -#include "Swiften/Base/ByteArray.h" -#include "Swiften/EventLoop/MainEventLoop.h" -#include "Swiften/Base/foreach.h" - -using namespace Swift; - -namespace Swift { - -PlatformDomainNameServiceQuery::PlatformDomainNameServiceQuery(const String& service) : thread(NULL), service(service), safeToJoin(true) { -} - -PlatformDomainNameServiceQuery::~PlatformDomainNameServiceQuery() { - if (safeToJoin) { - thread->join(); - } - else { - // FIXME: UGLYYYYY - } - delete thread; -} - -void PlatformDomainNameServiceQuery::run() { - safeToJoin = false; - thread = new boost::thread(boost::bind(&PlatformDomainNameServiceQuery::doRun, shared_from_this())); -} - -void PlatformDomainNameServiceQuery::doRun() { - std::vector<DomainNameServiceQuery::Result> records; - -#if defined(SWIFTEN_PLATFORM_WINDOWS) - DNS_RECORD* responses; - // FIXME: This conversion doesn't work if unicode is deffed above - if (DnsQuery(service.getUTF8Data(), DNS_TYPE_SRV, DNS_QUERY_STANDARD, NULL, &responses, NULL) != ERROR_SUCCESS) { - emitError(); - return; - } - - DNS_RECORD* currentEntry = responses; - while (currentEntry) { - if (currentEntry->wType == DNS_TYPE_SRV) { - DomainNameServiceQuery::Result record; - record.priority = currentEntry->Data.SRV.wPriority; - record.weight = currentEntry->Data.SRV.wWeight; - record.port = currentEntry->Data.SRV.wPort; - - // The pNameTarget is actually a PCWSTR, so I would have expected this - // conversion to not work at all, but it does. - // Actually, it doesn't. Fix this and remove explicit cast - // Remove unicode undef above as well - record.hostname = String((const char*) currentEntry->Data.SRV.pNameTarget); - records.push_back(record); - } - currentEntry = currentEntry->pNext; - } - DnsRecordListFree(responses, DnsFreeRecordList); - -#else - // Make sure we reinitialize the domain list every time - res_init(); - - //std::cout << "SRV: Querying " << service << std::endl; - ByteArray response; - response.resize(NS_PACKETSZ); - int responseLength = res_query(const_cast<char*>(service.getUTF8Data()), ns_c_in, ns_t_srv, reinterpret_cast<u_char*>(response.getData()), response.getSize()); - //std::cout << "res_query done " << (responseLength != -1) << std::endl; - if (responseLength == -1) { - emitError(); - return; - } - - // Parse header - HEADER* header = reinterpret_cast<HEADER*>(response.getData()); - unsigned char* messageStart = reinterpret_cast<unsigned char*>(response.getData()); - unsigned char* messageEnd = messageStart + responseLength; - unsigned char* currentEntry = messageStart + NS_HFIXEDSZ; - - // Skip over the queries - int queriesCount = ntohs(header->qdcount); - while (queriesCount > 0) { - int entryLength = dn_skipname(currentEntry, messageEnd); - if (entryLength < 0) { - emitError(); - return; - } - currentEntry += entryLength + NS_QFIXEDSZ; - queriesCount--; - } - - // Process the SRV answers - int answersCount = ntohs(header->ancount); - while (answersCount > 0) { - DomainNameServiceQuery::Result record; - - int entryLength = dn_skipname(currentEntry, messageEnd); - currentEntry += entryLength; - currentEntry += NS_RRFIXEDSZ; - - // Priority - if (currentEntry + 2 >= messageEnd) { - emitError(); - return; - } - record.priority = ns_get16(currentEntry); - currentEntry += 2; - - // Weight - if (currentEntry + 2 >= messageEnd) { - emitError(); - return; - } - record.weight = ns_get16(currentEntry); - currentEntry += 2; - - // Port - if (currentEntry + 2 >= messageEnd) { - emitError(); - return; - } - record.port = ns_get16(currentEntry); - currentEntry += 2; - - // Hostname - if (currentEntry >= messageEnd) { - emitError(); - return; - } - ByteArray entry; - entry.resize(NS_MAXDNAME); - entryLength = dn_expand(messageStart, messageEnd, currentEntry, entry.getData(), entry.getSize()); - if (entryLength < 0) { - emitError(); - return; - } - record.hostname = String(entry.getData()); - records.push_back(record); - currentEntry += entryLength; - answersCount--; - } -#endif - - safeToJoin = true; - std::sort(records.begin(), records.end(), ResultPriorityComparator()); - //std::cout << "Sending out " << records.size() << " SRV results " << std::endl; - MainEventLoop::postEvent(boost::bind(boost::ref(onResult), records)); -} - -void PlatformDomainNameServiceQuery::emitError() { - safeToJoin = true; - MainEventLoop::postEvent(boost::bind(boost::ref(onResult), std::vector<DomainNameServiceQuery::Result>()), shared_from_this()); -} - -} diff --git a/Swiften/Network/PlatformDomainNameServiceQuery.h b/Swiften/Network/PlatformDomainNameServiceQuery.h deleted file mode 100644 index 753e2c6..0000000 --- a/Swiften/Network/PlatformDomainNameServiceQuery.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include <boost/thread.hpp> -#include <boost/enable_shared_from_this.hpp> - -#include "Swiften/Network/DomainNameServiceQuery.h" -#include "Swiften/EventLoop/EventOwner.h" -#include "Swiften/Base/String.h" - -namespace Swift { - class PlatformDomainNameServiceQuery : public DomainNameServiceQuery, public boost::enable_shared_from_this<PlatformDomainNameServiceQuery>, public EventOwner { - public: - PlatformDomainNameServiceQuery(const String& service); - ~PlatformDomainNameServiceQuery(); - - virtual void run(); - - private: - void doRun(); - void emitError(); - - private: - boost::thread* thread; - String service; - bool safeToJoin; - }; -} diff --git a/Swiften/Network/SConscript b/Swiften/Network/SConscript deleted file mode 100644 index 937ab0c..0000000 --- a/Swiften/Network/SConscript +++ /dev/null @@ -1,34 +0,0 @@ -Import("swiften_env") - -myenv = swiften_env.Clone() -myenv.MergeFlags(myenv["LIBIDN_FLAGS"]) -if myenv["target"] == "native": - myenv.MergeFlags(myenv["CARES_FLAGS"]) - -sourceList = [ - "BoostConnection.cpp", - "BoostConnectionFactory.cpp", - "BoostConnectionServer.cpp", - "MainBoostIOServiceThread.cpp", - "BoostIOServiceThread.cpp", - "ConnectionFactory.cpp", - "ConnectionServer.cpp", - "Connector.cpp", - "TimerFactory.cpp", - "DummyTimerFactory.cpp", - "BoostTimerFactory.cpp", - "DomainNameResolver.cpp", - "DomainNameAddressQuery.cpp", - "DomainNameServiceQuery.cpp", - "PlatformDomainNameResolver.cpp", - "PlatformDomainNameServiceQuery.cpp", - "StaticDomainNameResolver.cpp", - "HostAddress.cpp", - "Timer.cpp", - "BoostTimer.cpp"] -if myenv["target"] == "native": - sourceList.append("CAresDomainNameResolver.cpp") - - -objects = myenv.StaticObject(sourceList) -swiften_env.Append(SWIFTEN_OBJECTS = [objects]) diff --git a/Swiften/Network/StaticDomainNameResolver.cpp b/Swiften/Network/StaticDomainNameResolver.cpp deleted file mode 100644 index a7275d2..0000000 --- a/Swiften/Network/StaticDomainNameResolver.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include "Swiften/Network/StaticDomainNameResolver.h" - -#include <boost/bind.hpp> -#include <boost/lexical_cast.hpp> - -#include "Swiften/Network/DomainNameResolveError.h" -#include "Swiften/Base/String.h" - -using namespace Swift; - -namespace { - struct ServiceQuery : public DomainNameServiceQuery, public EventOwner { - ServiceQuery(const String& service, Swift::StaticDomainNameResolver* resolver) : service(service), resolver(resolver) {} - - virtual void run() { - if (!resolver->getIsResponsive()) { - return; - } - std::vector<DomainNameServiceQuery::Result> results; - for(StaticDomainNameResolver::ServicesCollection::const_iterator i = resolver->getServices().begin(); i != resolver->getServices().end(); ++i) { - if (i->first == service) { - results.push_back(i->second); - } - } - MainEventLoop::postEvent(boost::bind(boost::ref(onResult), results)); - } - - String service; - StaticDomainNameResolver* resolver; - }; - - struct AddressQuery : public DomainNameAddressQuery, public EventOwner { - AddressQuery(const String& host, StaticDomainNameResolver* resolver) : host(host), resolver(resolver) {} - - virtual void run() { - if (!resolver->getIsResponsive()) { - return; - } - StaticDomainNameResolver::AddressesMap::const_iterator i = resolver->getAddresses().find(host); - if (i != resolver->getAddresses().end()) { - MainEventLoop::postEvent( - boost::bind(boost::ref(onResult), i->second, boost::optional<DomainNameResolveError>())); - } - else { - MainEventLoop::postEvent(boost::bind(boost::ref(onResult), HostAddress(), boost::optional<DomainNameResolveError>(DomainNameResolveError()))); - } - - } - - String host; - StaticDomainNameResolver* resolver; - }; -} - -namespace Swift { - -StaticDomainNameResolver::StaticDomainNameResolver() : isResponsive(true) { -} - -void StaticDomainNameResolver::addAddress(const String& domain, const HostAddress& address) { - addresses[domain] = address; -} - -void StaticDomainNameResolver::addService(const String& service, const DomainNameServiceQuery::Result& result) { - services.push_back(std::make_pair(service, result)); -} - -void StaticDomainNameResolver::addXMPPClientService(const String& domain, const HostAddressPort& address) { - static int hostid = 0; - String hostname(std::string("host-") + boost::lexical_cast<std::string>(hostid)); - hostid++; - - addService("_xmpp-client._tcp." + domain, ServiceQuery::Result(hostname, address.getPort(), 0, 0)); - addAddress(hostname, address.getAddress()); -} - -boost::shared_ptr<DomainNameServiceQuery> StaticDomainNameResolver::createServiceQuery(const String& name) { - return boost::shared_ptr<DomainNameServiceQuery>(new ServiceQuery(name, this)); -} - -boost::shared_ptr<DomainNameAddressQuery> StaticDomainNameResolver::createAddressQuery(const String& name) { - return boost::shared_ptr<DomainNameAddressQuery>(new AddressQuery(name, this)); -} - -} diff --git a/Swiften/Network/StaticDomainNameResolver.h b/Swiften/Network/StaticDomainNameResolver.h deleted file mode 100644 index d7e7ba4..0000000 --- a/Swiften/Network/StaticDomainNameResolver.h +++ /dev/null @@ -1,52 +0,0 @@ -#pragma once - -#include <vector> -#include <map> - -#include "Swiften/Network/HostAddress.h" -#include "Swiften/Network/HostAddressPort.h" -#include "Swiften/Network/DomainNameResolver.h" -#include "Swiften/Network/DomainNameServiceQuery.h" -#include "Swiften/Network/DomainNameAddressQuery.h" -#include "Swiften/EventLoop/MainEventLoop.h" - -namespace Swift { - class String; - - class StaticDomainNameResolver : public DomainNameResolver { - public: - typedef std::map<String, HostAddress> AddressesMap; - typedef std::vector< std::pair<String, DomainNameServiceQuery::Result> > ServicesCollection; - - public: - StaticDomainNameResolver(); - - void addAddress(const String& domain, const HostAddress& address); - void addService(const String& service, const DomainNameServiceQuery::Result& result); - void addXMPPClientService(const String& domain, const HostAddressPort&); - - const AddressesMap& getAddresses() const { - return addresses; - } - - const ServicesCollection& getServices() const { - return services; - } - - bool getIsResponsive() const { - return isResponsive; - } - - void setIsResponsive(bool b) { - isResponsive = b; - } - - virtual boost::shared_ptr<DomainNameServiceQuery> createServiceQuery(const String& name); - virtual boost::shared_ptr<DomainNameAddressQuery> createAddressQuery(const String& name); - - private: - bool isResponsive; - AddressesMap addresses; - ServicesCollection services; - }; -} diff --git a/Swiften/Network/Timer.cpp b/Swiften/Network/Timer.cpp deleted file mode 100644 index a8d17c3..0000000 --- a/Swiften/Network/Timer.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Network/Timer.h" - -namespace Swift { - -Timer::~Timer() { -} - -} diff --git a/Swiften/Network/Timer.h b/Swiften/Network/Timer.h deleted file mode 100644 index 9b01a0d..0000000 --- a/Swiften/Network/Timer.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#include <boost/signals.hpp> - -namespace Swift { - class Timer { - public: - virtual ~Timer(); - - virtual void start() = 0; - virtual void stop() = 0; - - boost::signal<void ()> onTick; - }; -} diff --git a/Swiften/Network/TimerFactory.cpp b/Swiften/Network/TimerFactory.cpp deleted file mode 100644 index 642ac52..0000000 --- a/Swiften/Network/TimerFactory.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Network/TimerFactory.h" - -namespace Swift { - -TimerFactory::~TimerFactory() { -} - -} diff --git a/Swiften/Network/TimerFactory.h b/Swiften/Network/TimerFactory.h deleted file mode 100644 index f72a8fc..0000000 --- a/Swiften/Network/TimerFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> - -namespace Swift { - class Timer; - - class TimerFactory { - public: - virtual ~TimerFactory(); - - virtual boost::shared_ptr<Timer> createTimer(int milliseconds) = 0; - }; -} diff --git a/Swiften/Network/UnitTest/ConnectorTest.cpp b/Swiften/Network/UnitTest/ConnectorTest.cpp deleted file mode 100644 index 663011c..0000000 --- a/Swiften/Network/UnitTest/ConnectorTest.cpp +++ /dev/null @@ -1,245 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include <boost/optional.hpp> -#include <boost/bind.hpp> - -#include "Swiften/Network/Connector.h" -#include "Swiften/Network/Connection.h" -#include "Swiften/Network/ConnectionFactory.h" -#include "Swiften/Network/HostAddressPort.h" -#include "Swiften/Network/StaticDomainNameResolver.h" -#include "Swiften/Network/DummyTimerFactory.h" -#include "Swiften/EventLoop/MainEventLoop.h" -#include "Swiften/EventLoop/DummyEventLoop.h" - -using namespace Swift; - -class ConnectorTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(ConnectorTest); - CPPUNIT_TEST(testConnect); - CPPUNIT_TEST(testConnect_NoSRVHost); - CPPUNIT_TEST(testConnect_NoHosts); - CPPUNIT_TEST(testConnect_FirstSRVHostFails); - CPPUNIT_TEST(testConnect_AllSRVHostsFailWithoutFallbackHost); - CPPUNIT_TEST(testConnect_AllSRVHostsFailWithFallbackHost); - CPPUNIT_TEST(testConnect_SRVAndFallbackHostsFail); - CPPUNIT_TEST(testConnect_TimeoutDuringResolve); - CPPUNIT_TEST(testConnect_TimeoutDuringConnect); - CPPUNIT_TEST(testConnect_NoTimeout); - CPPUNIT_TEST_SUITE_END(); - - public: - ConnectorTest() : host1(HostAddress("1.1.1.1"), 1234), host2(HostAddress("2.2.2.2"), 2345), host3(HostAddress("3.3.3.3"), 5222) { - } - - void setUp() { - eventLoop = new DummyEventLoop(); - resolver = new StaticDomainNameResolver(); - connectionFactory = new MockConnectionFactory(); - timerFactory = new DummyTimerFactory(); - } - - void tearDown() { - delete timerFactory; - delete connectionFactory; - delete resolver; - delete eventLoop; - } - - void testConnect() { - std::auto_ptr<Connector> testling(createConnector()); - resolver->addXMPPClientService("foo.com", host1); - resolver->addXMPPClientService("foo.com", host2); - resolver->addAddress("foo.com", host3.getAddress()); - - testling->start(); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size())); - CPPUNIT_ASSERT(connections[0]); - CPPUNIT_ASSERT(host1 == *(connections[0]->hostAddressPort)); - } - - void testConnect_NoSRVHost() { - std::auto_ptr<Connector> testling(createConnector()); - resolver->addAddress("foo.com", host3.getAddress()); - - testling->start(); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size())); - CPPUNIT_ASSERT(connections[0]); - CPPUNIT_ASSERT(host3 == *(connections[0]->hostAddressPort)); - } - - void testConnect_NoHosts() { - std::auto_ptr<Connector> testling(createConnector()); - - testling->start(); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size())); - CPPUNIT_ASSERT(!connections[0]); - } - - void testConnect_FirstSRVHostFails() { - std::auto_ptr<Connector> testling(createConnector()); - resolver->addXMPPClientService("foo.com", host1); - resolver->addXMPPClientService("foo.com", host2); - connectionFactory->failingPorts.push_back(host1); - - testling->start(); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size())); - CPPUNIT_ASSERT(host2 == *(connections[0]->hostAddressPort)); - } - - void testConnect_AllSRVHostsFailWithoutFallbackHost() { - std::auto_ptr<Connector> testling(createConnector()); - resolver->addXMPPClientService("foo.com", host1); - resolver->addXMPPClientService("foo.com", host2); - connectionFactory->failingPorts.push_back(host1); - connectionFactory->failingPorts.push_back(host2); - - testling->start(); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size())); - CPPUNIT_ASSERT(!connections[0]); - } - - void testConnect_AllSRVHostsFailWithFallbackHost() { - std::auto_ptr<Connector> testling(createConnector()); - resolver->addXMPPClientService("foo.com", host1); - resolver->addXMPPClientService("foo.com", host2); - resolver->addAddress("foo.com", host3.getAddress()); - connectionFactory->failingPorts.push_back(host1); - connectionFactory->failingPorts.push_back(host2); - - testling->start(); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size())); - CPPUNIT_ASSERT(connections[0]); - CPPUNIT_ASSERT(host3 == *(connections[0]->hostAddressPort)); - } - - void testConnect_SRVAndFallbackHostsFail() { - std::auto_ptr<Connector> testling(createConnector()); - resolver->addXMPPClientService("foo.com", host1); - resolver->addAddress("foo.com", host3.getAddress()); - connectionFactory->failingPorts.push_back(host1); - connectionFactory->failingPorts.push_back(host3); - - testling->start(); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size())); - CPPUNIT_ASSERT(!connections[0]); - } - - void testConnect_TimeoutDuringResolve() { - std::auto_ptr<Connector> testling(createConnector()); - testling->setTimeoutMilliseconds(10); - resolver->setIsResponsive(false); - - testling->start(); - eventLoop->processEvents(); - timerFactory->setTime(10); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size())); - CPPUNIT_ASSERT(!connections[0]); - } - - void testConnect_TimeoutDuringConnect() { - std::auto_ptr<Connector> testling(createConnector()); - testling->setTimeoutMilliseconds(10); - resolver->addXMPPClientService("foo.com", host1); - connectionFactory->isResponsive = false; - - testling->start(); - eventLoop->processEvents(); - timerFactory->setTime(10); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size())); - CPPUNIT_ASSERT(!connections[0]); - } - - void testConnect_NoTimeout() { - std::auto_ptr<Connector> testling(createConnector()); - testling->setTimeoutMilliseconds(10); - resolver->addXMPPClientService("foo.com", host1); - - testling->start(); - eventLoop->processEvents(); - timerFactory->setTime(10); - eventLoop->processEvents(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size())); - CPPUNIT_ASSERT(connections[0]); - } - - - private: - Connector* createConnector() { - Connector* connector = new Connector("foo.com", resolver, connectionFactory, timerFactory); - connector->onConnectFinished.connect(boost::bind(&ConnectorTest::handleConnectorFinished, this, _1)); - return connector; - } - - void handleConnectorFinished(boost::shared_ptr<Connection> connection) { - boost::shared_ptr<MockConnection> c(boost::dynamic_pointer_cast<MockConnection>(connection)); - if (connection) { - assert(c); - } - connections.push_back(c); - } - - struct MockConnection : public Connection { - public: - MockConnection(const std::vector<HostAddressPort>& failingPorts, bool isResponsive) : failingPorts(failingPorts), isResponsive(isResponsive) {} - - void listen() { assert(false); } - void connect(const HostAddressPort& address) { - hostAddressPort = address; - if (isResponsive) { - MainEventLoop::postEvent(boost::bind(boost::ref(onConnectFinished), std::find(failingPorts.begin(), failingPorts.end(), address) != failingPorts.end())); - } - } - - void disconnect() { assert(false); } - void write(const ByteArray&) { assert(false); } - - boost::optional<HostAddressPort> hostAddressPort; - std::vector<HostAddressPort> failingPorts; - bool isResponsive; - }; - - struct MockConnectionFactory : public ConnectionFactory { - MockConnectionFactory() : isResponsive(true) { - } - - boost::shared_ptr<Connection> createConnection() { - return boost::shared_ptr<Connection>(new MockConnection(failingPorts, isResponsive)); - } - - bool isResponsive; - std::vector<HostAddressPort> failingPorts; - }; - - private: - HostAddressPort host1; - HostAddressPort host2; - HostAddressPort host3; - DummyEventLoop* eventLoop; - StaticDomainNameResolver* resolver; - MockConnectionFactory* connectionFactory; - DummyTimerFactory* timerFactory; - std::vector< boost::shared_ptr<MockConnection> > connections; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(ConnectorTest); diff --git a/Swiften/Network/UnitTest/HostAddressTest.cpp b/Swiften/Network/UnitTest/HostAddressTest.cpp deleted file mode 100644 index 50e9198..0000000 --- a/Swiften/Network/UnitTest/HostAddressTest.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Network/HostAddress.h" -#include "Swiften/Base/String.h" - -using namespace Swift; - -class HostAddressTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(HostAddressTest); - CPPUNIT_TEST(testConstructor); - CPPUNIT_TEST(testToString); - CPPUNIT_TEST(testToString_IPv6); - CPPUNIT_TEST_SUITE_END(); - - public: - void testConstructor() { - HostAddress testling("192.168.1.254"); - - CPPUNIT_ASSERT_EQUAL(std::string("192.168.1.254"), testling.toString()); - } - - void testToString() { - unsigned char address[4] = {10, 0, 1, 253}; - HostAddress testling(address, 4); - - CPPUNIT_ASSERT_EQUAL(std::string("10.0.1.253"), testling.toString()); - } - - void testToString_IPv6() { - unsigned char address[16] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17}; - HostAddress testling(address, 16); - - CPPUNIT_ASSERT_EQUAL(std::string("0102:0304:0506:0708:090a:0b0c:0d0e:0f11"), testling.toString()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(HostAddressTest); diff --git a/Swiften/Notifier/GrowlNotifier.cpp b/Swiften/Notifier/GrowlNotifier.cpp deleted file mode 100644 index 13d3e6d..0000000 --- a/Swiften/Notifier/GrowlNotifier.cpp +++ /dev/null @@ -1,91 +0,0 @@ -// FIXME: Is it safe to pass boost::function<void()> by raw values? -// FIXME: Should we release the strings created in the constructor? - -#include <cassert> - -#include "Swiften/Base/ByteArray.h" -#include "Swiften/Notifier/GrowlNotifier.h" - -#pragma GCC diagnostic ignored "-Wold-style-cast" - -namespace { - struct Context { - Context() {} - Context(const boost::function<void()>& callback) : callback(callback) {} - - boost::function<void()> callback; - }; - - void notificationClicked(CFPropertyListRef growlContext) { - Context context; - - CFDataRef growlContextData = (CFDataRef) CFArrayGetValueAtIndex((CFArrayRef) growlContext, 0); - assert(CFDataGetLength(growlContextData) == sizeof(Context)); - CFDataGetBytes(growlContextData, CFRangeMake(0, CFDataGetLength(growlContextData)), (UInt8*) &context); - - context.callback(); - } - - void notificationTimedout(CFPropertyListRef) { - } -} - -namespace Swift { - -GrowlNotifier::GrowlNotifier(const String& name) { - // All notifications - CFMutableArrayRef allNotifications = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks); - CFArrayAppendValue(allNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(ContactAvailable))); - CFArrayAppendValue(allNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(ContactUnavailable))); - CFArrayAppendValue(allNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(ContactStatusChange))); - CFArrayAppendValue(allNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(IncomingMessage))); - - // Default Notifications - CFMutableArrayRef defaultNotifications = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks); - CFArrayAppendValue(defaultNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(ContactAvailable))); - CFArrayAppendValue(defaultNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(IncomingMessage))); - - // Initialize delegate - InitGrowlDelegate(&delegate_); - delegate_.applicationName = SWIFTEN_STRING_TO_CFSTRING(name); - CFTypeRef keys[] = { GROWL_NOTIFICATIONS_ALL, GROWL_NOTIFICATIONS_DEFAULT }; - CFTypeRef values[] = { allNotifications, defaultNotifications }; - delegate_.registrationDictionary = CFDictionaryCreate(kCFAllocatorDefault, keys, values, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); - delegate_.growlNotificationWasClicked = ¬ificationClicked; - delegate_.growlNotificationTimedOut = ¬ificationTimedout; - Growl_SetDelegate(&delegate_); -} - -void GrowlNotifier::showMessage(Type type, const String& subject, const String& description, const ByteArray& picture, boost::function<void()> callback) { - CFStringRef cfSubject = SWIFTEN_STRING_TO_CFSTRING(subject); - CFStringRef cfDescription = SWIFTEN_STRING_TO_CFSTRING(description); - CFStringRef cfName = SWIFTEN_STRING_TO_CFSTRING(typeToString(type)); - CFDataRef cfIcon = CFDataCreate( NULL, (UInt8*) picture.getData(), picture.getSize()); - - Context context(callback); - CFDataRef cfContextData[1]; - cfContextData[0] = CFDataCreate(kCFAllocatorDefault, (const UInt8*) &context, sizeof(Context)); - CFArrayRef cfContext = CFArrayCreate( kCFAllocatorDefault, (const void **) cfContextData, 1, &kCFTypeArrayCallBacks ); - CFRelease(cfContextData[0]); - - Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext(cfSubject, cfDescription, cfName, cfIcon, 0, false, cfContext); - - CFRelease(cfContext); - CFRelease(cfIcon); - CFRelease(cfName); - CFRelease(cfDescription); - CFRelease(cfSubject); -} - -String GrowlNotifier::typeToString(Type type) { - switch (type) { - case ContactAvailable: return "Contact Becomes Available"; - case ContactUnavailable: return "Contact Becomes Unavailable"; - case ContactStatusChange: return "Contact Changes Status"; - case IncomingMessage: return "Incoming Message"; - } - assert(false); - return ""; -} - -} diff --git a/Swiften/Notifier/GrowlNotifier.h b/Swiften/Notifier/GrowlNotifier.h deleted file mode 100644 index 3bf53be..0000000 --- a/Swiften/Notifier/GrowlNotifier.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#include <CoreFoundation/CoreFoundation.h> -#include <Growl/Growl.h> - -#include "Swiften/Notifier/Notifier.h" - -namespace Swift { - /** - * Preconditions for using growlnotifier: - * - Must be part a bundle. - * - The Carbon/Cocoa application loop must be running (e.g. through QApplication) - * such that notifications are coming through. - * TODO: Find out what the easiest way is to do this without a QApplication. - */ - class GrowlNotifier : public Notifier { - public: - GrowlNotifier(const String& name); - - virtual void showMessage(Type type, const String& subject, const String& description, const ByteArray& picture, boost::function<void()> callback); - - private: - String typeToString(Type type); - - private: - Growl_Delegate delegate_; - }; -} diff --git a/Swiften/Notifier/Notifier.cpp b/Swiften/Notifier/Notifier.cpp deleted file mode 100644 index 88cb0ee..0000000 --- a/Swiften/Notifier/Notifier.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Notifier/Notifier.h" - -namespace Swift { - -Notifier::~Notifier() { -} - -} diff --git a/Swiften/Notifier/Notifier.h b/Swiften/Notifier/Notifier.h deleted file mode 100644 index 2ab3ba8..0000000 --- a/Swiften/Notifier/Notifier.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include <boost/function.hpp> - -#include "Swiften/Base/String.h" - -namespace Swift { - class Notifier { - public: - virtual ~Notifier(); - - enum Type { ContactAvailable, ContactUnavailable, ContactStatusChange, IncomingMessage }; - - /** - * Picture is a PNG image. - */ - virtual void showMessage( - Type type, - const String& subject, - const String& description, - const ByteArray& picture, - boost::function<void()> callback) = 0; - }; -} diff --git a/Swiften/Parser/AttributeMap.h b/Swiften/Parser/AttributeMap.h deleted file mode 100644 index 82c839a..0000000 --- a/Swiften/Parser/AttributeMap.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef ATTRIBUTEMAP_H -#define ATTRIBUTEMAP_H - -#include <map> - -#include "Swiften/Base/String.h" - -namespace Swift { - class AttributeMap : public std::map<String,String> { - public: - AttributeMap() {} - - String getAttribute(const String& attribute) const { - AttributeMap::const_iterator i = find(attribute); - if (i == end()) { - return ""; - } - else { - return i->second; - } - } - - bool getBoolAttribute(const String& attribute, bool defaultValue = false) const { - AttributeMap::const_iterator i = find(attribute); - if (i == end()) { - return defaultValue; - } - else { - return i->second == "true" || i->second == "1"; - } - } - }; -} - -#endif diff --git a/Swiften/Parser/AuthChallengeParser.cpp b/Swiften/Parser/AuthChallengeParser.cpp deleted file mode 100644 index c83cf7d..0000000 --- a/Swiften/Parser/AuthChallengeParser.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "Swiften/Parser/AuthChallengeParser.h" -#include "Swiften/StringCodecs/Base64.h" - -namespace Swift { - -AuthChallengeParser::AuthChallengeParser() : GenericElementParser<AuthChallenge>(), depth(0) { -} - -void AuthChallengeParser::handleStartElement(const String&, const String&, const AttributeMap&) { - ++depth; -} - -void AuthChallengeParser::handleEndElement(const String&, const String&) { - --depth; - if (depth == 0) { - getElementGeneric()->setValue(Base64::decode(text)); - } -} - -void AuthChallengeParser::handleCharacterData(const String& text) { - this->text += text; -} - -} diff --git a/Swiften/Parser/AuthChallengeParser.h b/Swiften/Parser/AuthChallengeParser.h deleted file mode 100644 index be44b96..0000000 --- a/Swiften/Parser/AuthChallengeParser.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include "Swiften/Parser/GenericElementParser.h" -#include "Swiften/Elements/AuthChallenge.h" -#include "Swiften/Base/String.h" - -namespace Swift { - class AuthChallengeParser : public GenericElementParser<AuthChallenge> { - public: - AuthChallengeParser(); - - virtual void handleStartElement(const String&, const String& ns, const AttributeMap&); - virtual void handleEndElement(const String&, const String& ns); - virtual void handleCharacterData(const String&); - - private: - int depth; - String text; - }; -} diff --git a/Swiften/Parser/AuthFailureParser.h b/Swiften/Parser/AuthFailureParser.h deleted file mode 100644 index 3a950ef..0000000 --- a/Swiften/Parser/AuthFailureParser.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_AuthFailureParser_H -#define SWIFTEN_AuthFailureParser_H - -#include "Swiften/Parser/GenericElementParser.h" -#include "Swiften/Elements/AuthFailure.h" - -namespace Swift { - class AuthFailureParser : public GenericElementParser<AuthFailure> { - public: - AuthFailureParser() : GenericElementParser<AuthFailure>() {} - }; -} - -#endif diff --git a/Swiften/Parser/AuthRequestParser.cpp b/Swiften/Parser/AuthRequestParser.cpp deleted file mode 100644 index 5338b88..0000000 --- a/Swiften/Parser/AuthRequestParser.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "Swiften/Parser/AuthRequestParser.h" -#include "Swiften/StringCodecs/Base64.h" - -namespace Swift { - -AuthRequestParser::AuthRequestParser() : GenericElementParser<AuthRequest>(), depth_(0) { -} - -void AuthRequestParser::handleStartElement(const String&, const String&, const AttributeMap& attribute) { - if (depth_ == 0) { - getElementGeneric()->setMechanism(attribute.getAttribute("mechanism")); - } - ++depth_; -} - -void AuthRequestParser::handleEndElement(const String&, const String&) { - --depth_; - if (depth_ == 0) { - getElementGeneric()->setMessage(Base64::decode(text_)); - } -} - -void AuthRequestParser::handleCharacterData(const String& text) { - text_ += text; -} - -} diff --git a/Swiften/Parser/AuthRequestParser.h b/Swiften/Parser/AuthRequestParser.h deleted file mode 100644 index 8916922..0000000 --- a/Swiften/Parser/AuthRequestParser.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef SWIFTEN_AuthRequestParser_H -#define SWIFTEN_AuthRequestParser_H - -#include "Swiften/Parser/GenericElementParser.h" -#include "Swiften/Elements/AuthRequest.h" -#include "Swiften/Base/String.h" - -namespace Swift { - class AuthRequestParser : public GenericElementParser<AuthRequest> { - public: - AuthRequestParser(); - - virtual void handleStartElement(const String&, const String& ns, const AttributeMap&); - virtual void handleEndElement(const String&, const String& ns); - virtual void handleCharacterData(const String&); - - private: - String text_; - int depth_; - }; -} - -#endif diff --git a/Swiften/Parser/AuthResponseParser.cpp b/Swiften/Parser/AuthResponseParser.cpp deleted file mode 100644 index b5976a5..0000000 --- a/Swiften/Parser/AuthResponseParser.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "Swiften/Parser/AuthResponseParser.h" -#include "Swiften/StringCodecs/Base64.h" - -namespace Swift { - -AuthResponseParser::AuthResponseParser() : GenericElementParser<AuthResponse>(), depth(0) { -} - -void AuthResponseParser::handleStartElement(const String&, const String&, const AttributeMap&) { - ++depth; -} - -void AuthResponseParser::handleEndElement(const String&, const String&) { - --depth; - if (depth == 0) { - getElementGeneric()->setValue(Base64::decode(text)); - } -} - -void AuthResponseParser::handleCharacterData(const String& text) { - this->text += text; -} - -} diff --git a/Swiften/Parser/AuthResponseParser.h b/Swiften/Parser/AuthResponseParser.h deleted file mode 100644 index f2b3a9e..0000000 --- a/Swiften/Parser/AuthResponseParser.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include "Swiften/Parser/GenericElementParser.h" -#include "Swiften/Elements/AuthResponse.h" -#include "Swiften/Base/String.h" - -namespace Swift { - class AuthResponseParser : public GenericElementParser<AuthResponse> { - public: - AuthResponseParser(); - - virtual void handleStartElement(const String&, const String& ns, const AttributeMap&); - virtual void handleEndElement(const String&, const String& ns); - virtual void handleCharacterData(const String&); - - private: - int depth; - String text; - }; -} diff --git a/Swiften/Parser/AuthSuccessParser.cpp b/Swiften/Parser/AuthSuccessParser.cpp deleted file mode 100644 index 2dc2aa2..0000000 --- a/Swiften/Parser/AuthSuccessParser.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "Swiften/Parser/AuthSuccessParser.h" -#include "Swiften/StringCodecs/Base64.h" - -namespace Swift { - -AuthSuccessParser::AuthSuccessParser() : GenericElementParser<AuthSuccess>(), depth(0) { -} - -void AuthSuccessParser::handleStartElement(const String&, const String&, const AttributeMap&) { - ++depth; -} - -void AuthSuccessParser::handleEndElement(const String&, const String&) { - --depth; - if (depth == 0) { - getElementGeneric()->setValue(Base64::decode(text)); - } -} - -void AuthSuccessParser::handleCharacterData(const String& text) { - this->text += text; -} - -} diff --git a/Swiften/Parser/AuthSuccessParser.h b/Swiften/Parser/AuthSuccessParser.h deleted file mode 100644 index 5d987c5..0000000 --- a/Swiften/Parser/AuthSuccessParser.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include "Swiften/Parser/GenericElementParser.h" -#include "Swiften/Elements/AuthSuccess.h" -#include "Swiften/Base/String.h" - -namespace Swift { - class AuthSuccessParser : public GenericElementParser<AuthSuccess> { - public: - AuthSuccessParser(); - - virtual void handleStartElement(const String&, const String& ns, const AttributeMap&); - virtual void handleEndElement(const String&, const String& ns); - virtual void handleCharacterData(const String&); - - private: - int depth; - String text; - }; -} diff --git a/Swiften/Parser/CompressFailureParser.h b/Swiften/Parser/CompressFailureParser.h deleted file mode 100644 index d53e0ef..0000000 --- a/Swiften/Parser/CompressFailureParser.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_CompressFailureParser_H -#define SWIFTEN_CompressFailureParser_H - -#include "Swiften/Parser/GenericElementParser.h" -#include "Swiften/Elements/CompressFailure.h" - -namespace Swift { - class CompressFailureParser : public GenericElementParser<CompressFailure> { - public: - CompressFailureParser() : GenericElementParser<CompressFailure>() {} - }; -} - -#endif diff --git a/Swiften/Parser/CompressParser.cpp b/Swiften/Parser/CompressParser.cpp deleted file mode 100644 index 7ca752d..0000000 --- a/Swiften/Parser/CompressParser.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "Swiften/Parser/CompressParser.h" - -namespace Swift { - -CompressParser::CompressParser() : GenericElementParser<CompressRequest>(), currentDepth_(0), inMethod_(false) { -} - -void CompressParser::handleStartElement(const String& element, const String&, const AttributeMap&) { - if (currentDepth_ == 1 && element == "method") { - inMethod_ = true; - currentText_ = ""; - } - ++currentDepth_; -} - -void CompressParser::handleEndElement(const String&, const String&) { - --currentDepth_; - if (currentDepth_ == 1 && inMethod_) { - getElementGeneric()->setMethod(currentText_); - inMethod_ = false; - } -} - -void CompressParser::handleCharacterData(const String& data) { - currentText_ += data; -} - -} diff --git a/Swiften/Parser/CompressParser.h b/Swiften/Parser/CompressParser.h deleted file mode 100644 index 8931778..0000000 --- a/Swiften/Parser/CompressParser.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef SWIFTEN_CompressParser_H -#define SWIFTEN_CompressParser_H - -#include "Swiften/Base/String.h" -#include "Swiften/Parser/GenericElementParser.h" -#include "Swiften/Elements/CompressRequest.h" - -namespace Swift { - class CompressParser : public GenericElementParser<CompressRequest> { - public: - CompressParser(); - - private: - void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes); - void handleEndElement(const String& element, const String& ns); - void handleCharacterData(const String& data); - - private: - int currentDepth_; - String currentText_; - bool inMethod_; - }; -} - -#endif diff --git a/Swiften/Parser/CompressedParser.h b/Swiften/Parser/CompressedParser.h deleted file mode 100644 index 365f619..0000000 --- a/Swiften/Parser/CompressedParser.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_COMPRESSEDPARSER_H -#define SWIFTEN_COMPRESSEDPARSER_H - -#include "Swiften/Parser/GenericElementParser.h" -#include "Swiften/Elements/Compressed.h" - -namespace Swift { - class CompressedParser : public GenericElementParser<Compressed> { - public: - CompressedParser() : GenericElementParser<Compressed>() {} - }; -} - -#endif diff --git a/Swiften/Parser/ElementParser.cpp b/Swiften/Parser/ElementParser.cpp deleted file mode 100644 index 1c04d92..0000000 --- a/Swiften/Parser/ElementParser.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Parser/ElementParser.h" - -namespace Swift { - -ElementParser::~ElementParser() { -} - -} diff --git a/Swiften/Parser/ElementParser.h b/Swiften/Parser/ElementParser.h deleted file mode 100644 index 3848f0c..0000000 --- a/Swiften/Parser/ElementParser.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef SWIFTEN_ElementParser_H -#define SWIFTEN_ElementParser_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Element.h" -#include "Swiften/Parser/AttributeMap.h" - -namespace Swift { - class ElementParser { - public: - virtual ~ElementParser(); - - virtual void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) = 0; - virtual void handleEndElement(const String& element, const String& ns) = 0; - virtual void handleCharacterData(const String& data) = 0; - - virtual boost::shared_ptr<Element> getElement() const = 0; - }; -} - -#endif diff --git a/Swiften/Parser/ExpatParser.cpp b/Swiften/Parser/ExpatParser.cpp deleted file mode 100644 index 6f7ff86..0000000 --- a/Swiften/Parser/ExpatParser.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include "Swiften/Parser/ExpatParser.h" - -#include <iostream> - -#include "Swiften/Base/String.h" -#include "Swiften/Parser/XMLParserClient.h" - -namespace Swift { - -static const char NAMESPACE_SEPARATOR = '\x01'; - -static void handleStartElement(void* client, const XML_Char* name, const XML_Char** attributes) { - std::pair<String,String> nsTagPair = String(name).getSplittedAtFirst(NAMESPACE_SEPARATOR); - if (nsTagPair.second == "") { - nsTagPair.second = nsTagPair.first; - nsTagPair.first = ""; - } - AttributeMap attributeValues; - const XML_Char** currentAttribute = attributes; - while (*currentAttribute) { - std::pair<String,String> nsAttributePair = String(*currentAttribute).getSplittedAtFirst(NAMESPACE_SEPARATOR); - if (nsAttributePair.second == "") { - nsAttributePair.second = nsAttributePair.first; - nsAttributePair.first = ""; - } - attributeValues[nsAttributePair.second] = String(*(currentAttribute+1)); - currentAttribute += 2; - } - - static_cast<XMLParserClient*>(client)->handleStartElement(nsTagPair.second, nsTagPair.first, attributeValues); -} - -static void handleEndElement(void* client, const XML_Char* name) { - std::pair<String,String> nsTagPair = String(name).getSplittedAtFirst(NAMESPACE_SEPARATOR); - if (nsTagPair.second == "") { - nsTagPair.second = nsTagPair.first; - nsTagPair.first = ""; - } - static_cast<XMLParserClient*>(client)->handleEndElement(nsTagPair.second, nsTagPair.first); -} - -static void handleCharacterData(void* client, const XML_Char* data, int len) { - static_cast<XMLParserClient*>(client)->handleCharacterData(String(data, len)); -} - -static void handleXMLDeclaration(void*, const XML_Char*, const XML_Char*, int) { -} - - -ExpatParser::ExpatParser(XMLParserClient* client) : XMLParser(client) { - parser_ = XML_ParserCreateNS("UTF-8", NAMESPACE_SEPARATOR); - XML_SetUserData(parser_, client); - XML_SetElementHandler(parser_, handleStartElement, handleEndElement); - XML_SetCharacterDataHandler(parser_, handleCharacterData); - XML_SetXmlDeclHandler(parser_, handleXMLDeclaration); -} - -ExpatParser::~ExpatParser() { - XML_ParserFree(parser_); -} - -bool ExpatParser::parse(const String& data) { - bool success = XML_Parse(parser_, data.getUTF8Data(), data.getUTF8Size(), false) == XML_STATUS_OK; - /*if (!success) { - std::cout << "ERROR: " << XML_ErrorString(XML_GetErrorCode(parser_)) << " while parsing " << data << std::endl; - }*/ - return success; -} - -} diff --git a/Swiften/Parser/ExpatParser.h b/Swiften/Parser/ExpatParser.h deleted file mode 100644 index 2b5e646..0000000 --- a/Swiften/Parser/ExpatParser.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef SWIFTEN_ExpatParser_H -#define SWIFTEN_ExpatParser_H - -#include <expat.h> -#include <boost/noncopyable.hpp> - -#include "Swiften/Parser/XMLParser.h" - -namespace Swift { - class ExpatParser : public XMLParser, public boost::noncopyable { - public: - ExpatParser(XMLParserClient* client); - ~ExpatParser(); - - bool parse(const String& data); - - private: - XML_Parser parser_; - }; -} - -#endif diff --git a/Swiften/Parser/GenericElementParser.h b/Swiften/Parser/GenericElementParser.h deleted file mode 100644 index e1b9cf7..0000000 --- a/Swiften/Parser/GenericElementParser.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef SWIFTEN_GenericElementParser_H -#define SWIFTEN_GenericElementParser_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Parser/ElementParser.h" - -namespace Swift { - class String; - class PayloadParserFactoryCollection; - - template<typename ElementType> - class GenericElementParser : public ElementParser { - public: - GenericElementParser() { - stanza_ = boost::shared_ptr<ElementType>(new ElementType()); - } - - virtual boost::shared_ptr<Element> getElement() const { - return stanza_; - } - - protected: - virtual boost::shared_ptr<ElementType> getElementGeneric() const { - return stanza_; - } - - private: - virtual void handleStartElement(const String&, const String&, const AttributeMap&) { - } - - virtual void handleEndElement(const String&, const String&) { - } - - virtual void handleCharacterData(const String&) { - } - - private: - boost::shared_ptr<ElementType> stanza_; - }; -} - -#endif diff --git a/Swiften/Parser/GenericPayloadParser.h b/Swiften/Parser/GenericPayloadParser.h deleted file mode 100644 index a07b795..0000000 --- a/Swiften/Parser/GenericPayloadParser.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef GENERICPAYLOADPARSER_H -#define GENERICPAYLOADPARSER_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Parser/PayloadParser.h" - -namespace Swift { - class String; - - template<typename PAYLOAD_TYPE> - class GenericPayloadParser : public PayloadParser { - public: - GenericPayloadParser() : PayloadParser() { - payload_ = boost::shared_ptr<PAYLOAD_TYPE>(new PAYLOAD_TYPE()); - } - - virtual boost::shared_ptr<Payload> getPayload() const { - return payload_; - } - - protected: - virtual boost::shared_ptr<PAYLOAD_TYPE> getPayloadInternal() const { - return payload_; - } - - private: - boost::shared_ptr<PAYLOAD_TYPE> payload_; - }; -} - -#endif diff --git a/Swiften/Parser/GenericPayloadParserFactory.h b/Swiften/Parser/GenericPayloadParserFactory.h deleted file mode 100644 index d537b46..0000000 --- a/Swiften/Parser/GenericPayloadParserFactory.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef SWIFTEN_GENERICPAYLOADPARSERFACTORY_H -#define SWIFTEN_GENERICPAYLOADPARSERFACTORY_H - -#include "Swiften/Parser/PayloadParserFactory.h" -#include "Swiften/Base/String.h" - -namespace Swift { - - template<typename PARSER_TYPE> - class GenericPayloadParserFactory : public PayloadParserFactory { - public: - GenericPayloadParserFactory(const String& tag, const String& xmlns = "") : tag_(tag), xmlns_(xmlns) {} - - virtual bool canParse(const String& element, const String& ns, const AttributeMap&) const { - return element == tag_ && (xmlns_.isEmpty() ? true : xmlns_ == ns); - } - - virtual PayloadParser* createPayloadParser() { - return new PARSER_TYPE(); - } - - private: - String tag_; - String xmlns_; - }; -} - -#endif diff --git a/Swiften/Parser/GenericStanzaParser.h b/Swiften/Parser/GenericStanzaParser.h deleted file mode 100644 index ba1807a..0000000 --- a/Swiften/Parser/GenericStanzaParser.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef SWIFTEN_GenericStanzaParser_H -#define SWIFTEN_GenericStanzaParser_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Parser/StanzaParser.h" - -namespace Swift { - class String; - class PayloadParserFactoryCollection; - - template<typename STANZA_TYPE> - class GenericStanzaParser : public StanzaParser { - public: - GenericStanzaParser(PayloadParserFactoryCollection* collection) : - StanzaParser(collection) { - stanza_ = boost::shared_ptr<STANZA_TYPE>(new STANZA_TYPE()); - } - - virtual boost::shared_ptr<Element> getElement() const { - return stanza_; - } - - virtual boost::shared_ptr<STANZA_TYPE> getStanzaGeneric() const { - return stanza_; - } - - private: - boost::shared_ptr<STANZA_TYPE> stanza_; - }; -} - -#endif diff --git a/Swiften/Parser/IQParser.cpp b/Swiften/Parser/IQParser.cpp deleted file mode 100644 index 2b4b364..0000000 --- a/Swiften/Parser/IQParser.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include <iostream> - -#include "Swiften/Parser/IQParser.h" - -namespace Swift { - -IQParser::IQParser(PayloadParserFactoryCollection* factories) : - GenericStanzaParser<IQ>(factories) { -} - -void IQParser::handleStanzaAttributes(const AttributeMap& attributes) { - AttributeMap::const_iterator type = attributes.find("type"); - if (type != attributes.end()) { - if (type->second == "set") { - getStanzaGeneric()->setType(IQ::Set); - } - else if (type->second == "get") { - getStanzaGeneric()->setType(IQ::Get); - } - else if (type->second == "result") { - getStanzaGeneric()->setType(IQ::Result); - } - else if (type->second == "error") { - getStanzaGeneric()->setType(IQ::Error); - } - else { - std::cerr << "Unknown IQ type: " << type->second << std::endl; - getStanzaGeneric()->setType(IQ::Get); - } - } -} - -} diff --git a/Swiften/Parser/IQParser.h b/Swiften/Parser/IQParser.h deleted file mode 100644 index cd2fc05..0000000 --- a/Swiften/Parser/IQParser.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef SWIFTEN_IQParser_H -#define SWIFTEN_IQParser_H - -#include "Swiften/Parser/GenericStanzaParser.h" -#include "Swiften/Elements/IQ.h" - -namespace Swift { - class IQParser : public GenericStanzaParser<IQ> { - public: - IQParser(PayloadParserFactoryCollection* factories); - - private: - virtual void handleStanzaAttributes(const AttributeMap&); - }; -} - -#endif diff --git a/Swiften/Parser/LibXMLParser.cpp b/Swiften/Parser/LibXMLParser.cpp deleted file mode 100644 index f43ed00..0000000 --- a/Swiften/Parser/LibXMLParser.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "Swiften/Parser/LibXMLParser.h" - -#include <iostream> -#include <cassert> -#include <cstring> - -#include "Swiften/Base/String.h" -#include "Swiften/Parser/XMLParserClient.h" - -namespace Swift { - -static void handleStartElement(void *client, const xmlChar* name, const xmlChar*, const xmlChar* xmlns, int, const xmlChar**, int nbAttributes, int, const xmlChar ** attributes) { - AttributeMap attributeValues; - for (int i = 0; i < nbAttributes*5; i += 5) { - attributeValues[String(reinterpret_cast<const char*>(attributes[i]))] = String(reinterpret_cast<const char*>(attributes[i+3]), attributes[i+4]-attributes[i+3]); - } - static_cast<XMLParserClient*>(client)->handleStartElement(reinterpret_cast<const char*>(name), (xmlns ? reinterpret_cast<const char*>(xmlns) : String()), attributeValues); -} - -static void handleEndElement(void *client, const xmlChar* name, const xmlChar*, const xmlChar* xmlns) { - static_cast<XMLParserClient*>(client)->handleEndElement(reinterpret_cast<const char*>(name), (xmlns ? reinterpret_cast<const char*>(xmlns) : String())); -} - -static void handleCharacterData(void* client, const xmlChar* data, int len) { - static_cast<XMLParserClient*>(client)->handleCharacterData(String(reinterpret_cast<const char*>(data), len)); -} - -static void handleError(void*, const char*, ... ) { - /* - va_list args; - va_start(args, m); - vfprintf(stdout, m, args); - va_end(args); - */ -} - -static void handleWarning(void*, const char*, ... ) { -} - - - -LibXMLParser::LibXMLParser(XMLParserClient* client) : XMLParser(client) { - memset(&handler_, 0, sizeof(handler_) ); - handler_.initialized = XML_SAX2_MAGIC; - handler_.startElementNs = &handleStartElement; - handler_.endElementNs = &handleEndElement; - handler_.characters = &handleCharacterData; - handler_.warning = &handleWarning; - handler_.error = &handleError; - - context_ = xmlCreatePushParserCtxt(&handler_, client, 0, 0, 0); - assert(context_); -} - -LibXMLParser::~LibXMLParser() { - if (context_) { - xmlFreeParserCtxt(context_); - } -} - -bool LibXMLParser::parse(const String& data) { - return xmlParseChunk(context_, data.getUTF8Data(), data.getUTF8Size(), false) == XML_ERR_OK; -} - -} diff --git a/Swiften/Parser/LibXMLParser.h b/Swiften/Parser/LibXMLParser.h deleted file mode 100644 index 58a65f1..0000000 --- a/Swiften/Parser/LibXMLParser.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include <libxml/parser.h> -#include <boost/noncopyable.hpp> - -#include "Swiften/Parser/XMLParser.h" - -namespace Swift { - class LibXMLParser : public XMLParser, public boost::noncopyable { - public: - LibXMLParser(XMLParserClient* client); - ~LibXMLParser(); - - bool parse(const String& data); - - private: - xmlSAXHandler handler_; - xmlParserCtxtPtr context_; - }; -} diff --git a/Swiften/Parser/MessageParser.cpp b/Swiften/Parser/MessageParser.cpp deleted file mode 100644 index 5e83fad..0000000 --- a/Swiften/Parser/MessageParser.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include <iostream> - -#include "Swiften/Parser/MessageParser.h" - -namespace Swift { - -MessageParser::MessageParser(PayloadParserFactoryCollection* factories) : - GenericStanzaParser<Message>(factories) { - getStanzaGeneric()->setType(Message::Normal); -} - -void MessageParser::handleStanzaAttributes(const AttributeMap& attributes) { - AttributeMap::const_iterator type = attributes.find("type"); - if (type != attributes.end()) { - if (type->second == "chat") { - getStanzaGeneric()->setType(Message::Chat); - } - else if (type->second == "error") { - getStanzaGeneric()->setType(Message::Error); - } - else if (type->second == "groupchat") { - getStanzaGeneric()->setType(Message::Groupchat); - } - else if (type->second == "headline") { - getStanzaGeneric()->setType(Message::Headline); - } - else { - getStanzaGeneric()->setType(Message::Normal); - } - } -} - -} diff --git a/Swiften/Parser/MessageParser.h b/Swiften/Parser/MessageParser.h deleted file mode 100644 index 05c9280..0000000 --- a/Swiften/Parser/MessageParser.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef SWIFTEN_MESSAGEPARSER_H -#define SWIFTEN_MESSAGEPARSER_H - -#include "Swiften/Parser/GenericStanzaParser.h" -#include "Swiften/Elements/Message.h" - -namespace Swift { - class MessageParser : public GenericStanzaParser<Message> { - public: - MessageParser(PayloadParserFactoryCollection* factories); - - private: - virtual void handleStanzaAttributes(const AttributeMap&); - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParser.cpp b/Swiften/Parser/PayloadParser.cpp deleted file mode 100644 index 072edef..0000000 --- a/Swiften/Parser/PayloadParser.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Parser/PayloadParser.h" - -namespace Swift { - -PayloadParser::~PayloadParser() { -} - -} diff --git a/Swiften/Parser/PayloadParser.h b/Swiften/Parser/PayloadParser.h deleted file mode 100644 index fc1e1c8..0000000 --- a/Swiften/Parser/PayloadParser.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef SWIFTEN_PAYLOADPARSER_H -#define SWIFTEN_PAYLOADPARSER_H - -#include <boost/shared_ptr.hpp> -#include "Swiften/Parser/AttributeMap.h" - -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class String; - - class PayloadParser { - public: - virtual ~PayloadParser(); - - virtual void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) = 0; - virtual void handleEndElement(const String& element, const String& ns) = 0; - virtual void handleCharacterData(const String& data) = 0; - - virtual boost::shared_ptr<Payload> getPayload() const = 0; - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParserFactory.cpp b/Swiften/Parser/PayloadParserFactory.cpp deleted file mode 100644 index b31f8ae..0000000 --- a/Swiften/Parser/PayloadParserFactory.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Parser/PayloadParserFactory.h" - -namespace Swift { - -PayloadParserFactory::~PayloadParserFactory() { -} - -} diff --git a/Swiften/Parser/PayloadParserFactory.h b/Swiften/Parser/PayloadParserFactory.h deleted file mode 100644 index 728b4e8..0000000 --- a/Swiften/Parser/PayloadParserFactory.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef SWIFTEN_PAYLOADPARSERFACTORY_H -#define SWIFTEN_PAYLOADPARSERFACTORY_H - -#include "Swiften/Parser/AttributeMap.h" - -namespace Swift { - class String; - class PayloadParser; - - class PayloadParserFactory { - public: - virtual ~PayloadParserFactory(); - - virtual bool canParse(const String& element, const String& ns, const AttributeMap& attributes) const = 0; - virtual PayloadParser* createPayloadParser() = 0; - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParserFactoryCollection.cpp b/Swiften/Parser/PayloadParserFactoryCollection.cpp deleted file mode 100644 index 6d3a4cf..0000000 --- a/Swiften/Parser/PayloadParserFactoryCollection.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include <boost/bind.hpp> -#include <algorithm> - -#include "Swiften/Parser/PayloadParserFactoryCollection.h" -#include "Swiften/Parser/PayloadParserFactory.h" - -namespace Swift { - -PayloadParserFactoryCollection::PayloadParserFactoryCollection() : defaultFactory_(NULL) { -} - -void PayloadParserFactoryCollection::addFactory(PayloadParserFactory* factory) { - factories_.push_back(factory); -} - -void PayloadParserFactoryCollection::removeFactory(PayloadParserFactory* factory) { - factories_.erase(remove(factories_.begin(), factories_.end(), factory), factories_.end()); -} - -void PayloadParserFactoryCollection::setDefaultFactory(PayloadParserFactory* factory) { - defaultFactory_ = factory; -} - -PayloadParserFactory* PayloadParserFactoryCollection::getPayloadParserFactory(const String& element, const String& ns, const AttributeMap& attributes) { - std::vector<PayloadParserFactory*>::reverse_iterator i = std::find_if( - factories_.rbegin(), factories_.rend(), - boost::bind(&PayloadParserFactory::canParse, _1, element, ns, attributes)); - return (i != factories_.rend() ? *i : defaultFactory_); -} - -} diff --git a/Swiften/Parser/PayloadParserFactoryCollection.h b/Swiften/Parser/PayloadParserFactoryCollection.h deleted file mode 100644 index 80a763b..0000000 --- a/Swiften/Parser/PayloadParserFactoryCollection.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef SWIFTEN_PAYLOADPARSERFACTORYCOLLECTION_H -#define SWIFTEN_PAYLOADPARSERFACTORYCOLLECTION_H - -#include <vector> - -#include "Swiften/Parser/AttributeMap.h" - -namespace Swift { - class PayloadParserFactory; - class String; - - class PayloadParserFactoryCollection { - public: - PayloadParserFactoryCollection(); - - void addFactory(PayloadParserFactory* factory); - void removeFactory(PayloadParserFactory* factory); - void setDefaultFactory(PayloadParserFactory* factory); - - PayloadParserFactory* getPayloadParserFactory(const String& element, const String& ns, const AttributeMap& attributes); - - private: - std::vector<PayloadParserFactory*> factories_; - PayloadParserFactory* defaultFactory_; - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/BodyParser.cpp b/Swiften/Parser/PayloadParsers/BodyParser.cpp deleted file mode 100644 index e5898ff..0000000 --- a/Swiften/Parser/PayloadParsers/BodyParser.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/BodyParser.h" - -namespace Swift { - -BodyParser::BodyParser() : level_(0) { -} - -void BodyParser::handleStartElement(const String&, const String&, const AttributeMap&) { - ++level_; -} - -void BodyParser::handleEndElement(const String&, const String&) { - --level_; - if (level_ == 0) { - getPayloadInternal()->setText(text_); - } -} - -void BodyParser::handleCharacterData(const String& data) { - text_ += data; -} - -} diff --git a/Swiften/Parser/PayloadParsers/BodyParser.h b/Swiften/Parser/PayloadParsers/BodyParser.h deleted file mode 100644 index 2d272ea..0000000 --- a/Swiften/Parser/PayloadParsers/BodyParser.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef SWIFTEN_BodyParser_H -#define SWIFTEN_BodyParser_H - -#include "Swiften/Elements/Body.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class BodyParser : public GenericPayloadParser<Body> { - public: - BodyParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - int level_; - String text_; - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/BodyParserFactory.h b/Swiften/Parser/PayloadParsers/BodyParserFactory.h deleted file mode 100644 index 3da7393..0000000 --- a/Swiften/Parser/PayloadParsers/BodyParserFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_BodyParserFACTORY_H -#define SWIFTEN_BodyParserFACTORY_H - -#include "Swiften/Parser/GenericPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/BodyParser.h" - -namespace Swift { - class BodyParserFactory : public GenericPayloadParserFactory<BodyParser> { - public: - BodyParserFactory() : GenericPayloadParserFactory<BodyParser>("body") {} - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/ChatStateParser.cpp b/Swiften/Parser/PayloadParsers/ChatStateParser.cpp deleted file mode 100644 index 52d860a..0000000 --- a/Swiften/Parser/PayloadParsers/ChatStateParser.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/ChatStateParser.h" - -namespace Swift { - -ChatStateParser::ChatStateParser() : level_(0) { -} - -void ChatStateParser::handleStartElement(const String& element, const String&, const AttributeMap&) { - if (level_ == 0) { - ChatState::ChatStateType state = ChatState::Active; - if (element == "active") { - state = ChatState::Active; - } else if (element == "composing") { - state = ChatState::Composing; - } else if (element == "inactive") { - state = ChatState::Inactive; - } else if (element == "paused") { - state = ChatState::Paused; - } else if (element == "gone") { - state = ChatState::Gone; - } - getPayloadInternal()->setChatState(state); - } - ++level_; -} - -void ChatStateParser::handleEndElement(const String&, const String&) { - --level_; -} - -void ChatStateParser::handleCharacterData(const String&) { - -} - -} diff --git a/Swiften/Parser/PayloadParsers/ChatStateParser.h b/Swiften/Parser/PayloadParsers/ChatStateParser.h deleted file mode 100644 index cd212c0..0000000 --- a/Swiften/Parser/PayloadParsers/ChatStateParser.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include "Swiften/Elements/ChatState.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class ChatStateParser : public GenericPayloadParser<ChatState> { - public: - ChatStateParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - int level_; - }; -} diff --git a/Swiften/Parser/PayloadParsers/ChatStateParserFactory.h b/Swiften/Parser/PayloadParsers/ChatStateParserFactory.h deleted file mode 100644 index 1582d09..0000000 --- a/Swiften/Parser/PayloadParsers/ChatStateParserFactory.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include "Swiften/Parser/PayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/ChatStateParser.h" - -namespace Swift { - class PayloadParserFactoryCollection; - - class ChatStateParserFactory : public PayloadParserFactory { - public: - ChatStateParserFactory() { - } - - virtual bool canParse(const String& element, const String& ns, const AttributeMap&) const { - return ns == "http://jabber.org/protocol/chatstates" && - (element == "active" || element == "composing" - || element == "paused" || element == "inactive" || element == "gone"); - } - - virtual PayloadParser* createPayloadParser() { - return new ChatStateParser(); - } - - }; -} diff --git a/Swiften/Parser/PayloadParsers/DiscoInfoParser.cpp b/Swiften/Parser/PayloadParsers/DiscoInfoParser.cpp deleted file mode 100644 index ffa24ad..0000000 --- a/Swiften/Parser/PayloadParsers/DiscoInfoParser.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/DiscoInfoParser.h" - -namespace Swift { - -DiscoInfoParser::DiscoInfoParser() : level_(TopLevel) { -} - -void DiscoInfoParser::handleStartElement(const String& element, const String&, const AttributeMap& attributes) { - if (level_ == PayloadLevel) { - if (element == "identity") { - getPayloadInternal()->addIdentity(DiscoInfo::Identity(attributes.getAttribute("name"), attributes.getAttribute("category"), attributes.getAttribute("type"), attributes.getAttribute("lang"))); - } - else if (element == "feature") { - getPayloadInternal()->addFeature(attributes.getAttribute("var")); - } - } - ++level_; -} - -void DiscoInfoParser::handleEndElement(const String&, const String&) { - --level_; -} - -void DiscoInfoParser::handleCharacterData(const String&) { -} - -} diff --git a/Swiften/Parser/PayloadParsers/DiscoInfoParser.h b/Swiften/Parser/PayloadParsers/DiscoInfoParser.h deleted file mode 100644 index b7be972..0000000 --- a/Swiften/Parser/PayloadParsers/DiscoInfoParser.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef SWIFTEN_DiscoInfoParser_H -#define SWIFTEN_DiscoInfoParser_H - -#include "Swiften/Elements/DiscoInfo.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class DiscoInfoParser : public GenericPayloadParser<DiscoInfo> { - public: - DiscoInfoParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - enum Level { - TopLevel = 0, - PayloadLevel = 1 - }; - int level_; - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/DiscoInfoParserFactory.h b/Swiften/Parser/PayloadParsers/DiscoInfoParserFactory.h deleted file mode 100644 index ef1c31c..0000000 --- a/Swiften/Parser/PayloadParsers/DiscoInfoParserFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_DiscoInfoParserFactory_H -#define SWIFTEN_DiscoInfoParserFactory_H - -#include "Swiften/Parser/GenericPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/DiscoInfoParser.h" - -namespace Swift { - class DiscoInfoParserFactory : public GenericPayloadParserFactory<DiscoInfoParser> { - public: - DiscoInfoParserFactory() : GenericPayloadParserFactory<DiscoInfoParser>("query", "http://jabber.org/protocol/disco#info") {} - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/ErrorParser.cpp b/Swiften/Parser/PayloadParsers/ErrorParser.cpp deleted file mode 100644 index ae85265..0000000 --- a/Swiften/Parser/PayloadParsers/ErrorParser.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/ErrorParser.h" - -namespace Swift { - -ErrorParser::ErrorParser() : level_(TopLevel) { -} - -void ErrorParser::handleStartElement(const String&, const String&, const AttributeMap& attributes) { - if (level_ == TopLevel) { - String type = attributes.getAttribute("type"); - if (type == "continue") { - getPayloadInternal()->setType(ErrorPayload::Continue); - } - else if (type == "modify") { - getPayloadInternal()->setType(ErrorPayload::Modify); - } - else if (type == "auth") { - getPayloadInternal()->setType(ErrorPayload::Auth); - } - else if (type == "wait") { - getPayloadInternal()->setType(ErrorPayload::Wait); - } - else { - getPayloadInternal()->setType(ErrorPayload::Cancel); - } - } - ++level_; -} - -void ErrorParser::handleEndElement(const String& element, const String&) { - --level_; - if (level_ == PayloadLevel) { - if (element == "text") { - getPayloadInternal()->setText(currentText_); - } - else if (element == "bad-request") { - getPayloadInternal()->setCondition(ErrorPayload::BadRequest); - } - else if (element == "conflict") { - getPayloadInternal()->setCondition(ErrorPayload::Conflict); - } - else if (element == "feature-not-implemented") { - getPayloadInternal()->setCondition(ErrorPayload::FeatureNotImplemented); - } - else if (element == "forbidden") { - getPayloadInternal()->setCondition(ErrorPayload::Forbidden); - } - else if (element == "gone") { - getPayloadInternal()->setCondition(ErrorPayload::Gone); - } - else if (element == "internal-server-error") { - getPayloadInternal()->setCondition(ErrorPayload::InternalServerError); - } - else if (element == "item-not-found") { - getPayloadInternal()->setCondition(ErrorPayload::ItemNotFound); - } - else if (element == "jid-malformed") { - getPayloadInternal()->setCondition(ErrorPayload::JIDMalformed); - } - else if (element == "not-acceptable") { - getPayloadInternal()->setCondition(ErrorPayload::NotAcceptable); - } - else if (element == "not-allowed") { - getPayloadInternal()->setCondition(ErrorPayload::NotAllowed); - } - else if (element == "not-authorized") { - getPayloadInternal()->setCondition(ErrorPayload::NotAuthorized); - } - else if (element == "payment-required") { - getPayloadInternal()->setCondition(ErrorPayload::PaymentRequired); - } - else if (element == "recipient-unavailable") { - getPayloadInternal()->setCondition(ErrorPayload::RecipientUnavailable); - } - else if (element == "redirect") { - getPayloadInternal()->setCondition(ErrorPayload::Redirect); - } - else if (element == "registration-required") { - getPayloadInternal()->setCondition(ErrorPayload::RegistrationRequired); - } - else if (element == "remote-server-not-found") { - getPayloadInternal()->setCondition(ErrorPayload::RemoteServerNotFound); - } - else if (element == "remote-server-timeout") { - getPayloadInternal()->setCondition(ErrorPayload::RemoteServerTimeout); - } - else if (element == "resource-constraint") { - getPayloadInternal()->setCondition(ErrorPayload::ResourceConstraint); - } - else if (element == "service-unavailable") { - getPayloadInternal()->setCondition(ErrorPayload::ServiceUnavailable); - } - else if (element == "subscription-required") { - getPayloadInternal()->setCondition(ErrorPayload::SubscriptionRequired); - } - else if (element == "unexpected-request") { - getPayloadInternal()->setCondition(ErrorPayload::UnexpectedRequest); - } - else { - getPayloadInternal()->setCondition(ErrorPayload::UndefinedCondition); - } - } -} - -void ErrorParser::handleCharacterData(const String& data) { - currentText_ += data; -} - -} diff --git a/Swiften/Parser/PayloadParsers/ErrorParser.h b/Swiften/Parser/PayloadParsers/ErrorParser.h deleted file mode 100644 index 17b78b9..0000000 --- a/Swiften/Parser/PayloadParsers/ErrorParser.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef SWIFTEN_ErrorParser_H -#define SWIFTEN_ErrorParser_H - -#include "Swiften/Elements/ErrorPayload.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class ErrorParser : public GenericPayloadParser<ErrorPayload> { - public: - ErrorParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - enum Level { - TopLevel = 0, - PayloadLevel = 1 - }; - int level_; - String currentText_; - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/ErrorParserFactory.h b/Swiften/Parser/PayloadParsers/ErrorParserFactory.h deleted file mode 100644 index 36d1f55..0000000 --- a/Swiften/Parser/PayloadParsers/ErrorParserFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_ErrorParserFactory_H -#define SWIFTEN_ErrorParserFactory_H - -#include "Swiften/Parser/GenericPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/ErrorParser.h" - -namespace Swift { - class ErrorParserFactory : public GenericPayloadParserFactory<ErrorParser> { - public: - ErrorParserFactory() : GenericPayloadParserFactory<ErrorParser>("error") {} - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp b/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp deleted file mode 100644 index 0857f64..0000000 --- a/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h" -#include "Swiften/Base/foreach.h" -#include "Swiften/Parser/GenericPayloadParser.h" -#include "Swiften/Parser/PayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/ErrorParserFactory.h" -#include "Swiften/Parser/PayloadParsers/BodyParserFactory.h" -#include "Swiften/Parser/PayloadParsers/ChatStateParserFactory.h" -#include "Swiften/Parser/PayloadParsers/PriorityParserFactory.h" -#include "Swiften/Parser/PayloadParsers/ResourceBindParserFactory.h" -#include "Swiften/Parser/PayloadParsers/StartSessionParserFactory.h" -#include "Swiften/Parser/PayloadParsers/StatusParserFactory.h" -#include "Swiften/Parser/PayloadParsers/StatusShowParserFactory.h" -#include "Swiften/Parser/PayloadParsers/RosterParserFactory.h" -#include "Swiften/Parser/PayloadParsers/SoftwareVersionParserFactory.h" -#include "Swiften/Parser/PayloadParsers/StorageParserFactory.h" -#include "Swiften/Parser/PayloadParsers/DiscoInfoParserFactory.h" -#include "Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h" -#include "Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParserFactory.h" -#include "Swiften/Parser/PayloadParsers/VCardUpdateParserFactory.h" -#include "Swiften/Parser/PayloadParsers/VCardParserFactory.h" -#include "Swiften/Parser/PayloadParsers/RawXMLPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/PrivateStorageParserFactory.h" - -using namespace boost; - -namespace Swift { - -FullPayloadParserFactoryCollection::FullPayloadParserFactoryCollection() { - factories_.push_back(shared_ptr<PayloadParserFactory>(new StatusParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new StatusShowParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new BodyParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new PriorityParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new ErrorParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new SoftwareVersionParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new StorageParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new RosterParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new DiscoInfoParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new ResourceBindParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new StartSessionParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new SecurityLabelParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new SecurityLabelsCatalogParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new VCardUpdateParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new VCardParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new PrivateStorageParserFactory(this))); - factories_.push_back(shared_ptr<PayloadParserFactory>(new ChatStateParserFactory())); - foreach(shared_ptr<PayloadParserFactory> factory, factories_) { - addFactory(factory.get()); - } - defaultFactory_ = new RawXMLPayloadParserFactory(); - setDefaultFactory(defaultFactory_); -} - -FullPayloadParserFactoryCollection::~FullPayloadParserFactoryCollection() { - setDefaultFactory(NULL); - delete defaultFactory_; - foreach(shared_ptr<PayloadParserFactory> factory, factories_) { - removeFactory(factory.get()); - } -} - -} diff --git a/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h b/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h deleted file mode 100644 index 82e5a56..0000000 --- a/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <vector> - -#include "Swiften/Parser/PayloadParserFactoryCollection.h" -#include "Swiften/Parser/PayloadParserFactory.h" - -namespace Swift { - class FullPayloadParserFactoryCollection : public PayloadParserFactoryCollection { - public: - FullPayloadParserFactoryCollection(); - ~FullPayloadParserFactoryCollection(); - - private: - std::vector< boost::shared_ptr<PayloadParserFactory> > factories_; - PayloadParserFactory* defaultFactory_; - }; -} diff --git a/Swiften/Parser/PayloadParsers/PriorityParser.cpp b/Swiften/Parser/PayloadParsers/PriorityParser.cpp deleted file mode 100644 index 3dcca51..0000000 --- a/Swiften/Parser/PayloadParsers/PriorityParser.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/PriorityParser.h" - -#include <boost/lexical_cast.hpp> - -namespace Swift { - -PriorityParser::PriorityParser() : level_(0) { -} - -void PriorityParser::handleStartElement(const String&, const String&, const AttributeMap&) { - ++level_; -} - -void PriorityParser::handleEndElement(const String&, const String&) { - --level_; - if (level_ == 0) { - getPayloadInternal()->setPriority(boost::lexical_cast<int>(text_)); - } -} - -void PriorityParser::handleCharacterData(const String& data) { - text_ += data; -} - -} diff --git a/Swiften/Parser/PayloadParsers/PriorityParser.h b/Swiften/Parser/PayloadParsers/PriorityParser.h deleted file mode 100644 index 7f3836f..0000000 --- a/Swiften/Parser/PayloadParsers/PriorityParser.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef SWIFTEN_PriorityParser_H -#define SWIFTEN_PriorityParser_H - -#include "Swiften/Elements/Priority.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class PriorityParser : public GenericPayloadParser<Priority> { - public: - PriorityParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - int level_; - String text_; - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/PriorityParserFactory.h b/Swiften/Parser/PayloadParsers/PriorityParserFactory.h deleted file mode 100644 index 5386326..0000000 --- a/Swiften/Parser/PayloadParsers/PriorityParserFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_PriorityParserFactory_H -#define SWIFTEN_PriorityParserFactory_H - -#include "Swiften/Parser/GenericPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/PriorityParser.h" - -namespace Swift { - class PriorityParserFactory : public GenericPayloadParserFactory<PriorityParser> { - public: - PriorityParserFactory() : GenericPayloadParserFactory<PriorityParser>("priority") {} - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/PrivateStorageParser.cpp b/Swiften/Parser/PayloadParsers/PrivateStorageParser.cpp deleted file mode 100644 index 5c3af26..0000000 --- a/Swiften/Parser/PayloadParsers/PrivateStorageParser.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/PrivateStorageParser.h" -#include "Swiften/Parser/PayloadParserFactoryCollection.h" -#include "Swiften/Parser/PayloadParserFactory.h" - -namespace Swift { - -PrivateStorageParser::PrivateStorageParser(PayloadParserFactoryCollection* factories) : factories(factories), level(0) { -} - -void PrivateStorageParser::handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) { - if (level == 1) { - PayloadParserFactory* payloadParserFactory = factories->getPayloadParserFactory(element, ns, attributes); - if (payloadParserFactory) { - currentPayloadParser.reset(payloadParserFactory->createPayloadParser()); - } - } - - if (level >= 1 && currentPayloadParser.get()) { - currentPayloadParser->handleStartElement(element, ns, attributes); - } - ++level; -} - -void PrivateStorageParser::handleEndElement(const String& element, const String& ns) { - --level; - if (currentPayloadParser.get()) { - if (level >= 1) { - currentPayloadParser->handleEndElement(element, ns); - } - - if (level == 1) { - getPayloadInternal()->setPayload(currentPayloadParser->getPayload()); - } - } -} - -void PrivateStorageParser::handleCharacterData(const String& data) { - if (level > 1 && currentPayloadParser.get()) { - currentPayloadParser->handleCharacterData(data); - } -} - -} diff --git a/Swiften/Parser/PayloadParsers/PrivateStorageParser.h b/Swiften/Parser/PayloadParsers/PrivateStorageParser.h deleted file mode 100644 index fae0f10..0000000 --- a/Swiften/Parser/PayloadParsers/PrivateStorageParser.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include <boost/optional.hpp> - -#include "Swiften/Elements/PrivateStorage.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class PayloadParserFactoryCollection; - - class PrivateStorageParser : public GenericPayloadParser<PrivateStorage> { - public: - PrivateStorageParser(PayloadParserFactoryCollection* factories); - - private: - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - PayloadParserFactoryCollection* factories; - int level; - std::auto_ptr<PayloadParser> currentPayloadParser; - }; -} diff --git a/Swiften/Parser/PayloadParsers/PrivateStorageParserFactory.h b/Swiften/Parser/PayloadParsers/PrivateStorageParserFactory.h deleted file mode 100644 index 4d9c02b..0000000 --- a/Swiften/Parser/PayloadParsers/PrivateStorageParserFactory.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include "Swiften/Parser/PayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/PrivateStorageParser.h" - -namespace Swift { - class PayloadParserFactoryCollection; - - class PrivateStorageParserFactory : public PayloadParserFactory { - public: - PrivateStorageParserFactory(PayloadParserFactoryCollection* factories) : factories(factories) { - } - - virtual bool canParse(const String& element, const String& ns, const AttributeMap&) const { - return element == "query" && ns == "jabber:iq:private"; - } - - virtual PayloadParser* createPayloadParser() { - return new PrivateStorageParser(factories); - } - - private: - PayloadParserFactoryCollection* factories; - - }; -} diff --git a/Swiften/Parser/PayloadParsers/RawXMLPayloadParser.cpp b/Swiften/Parser/PayloadParsers/RawXMLPayloadParser.cpp deleted file mode 100644 index c49af3e..0000000 --- a/Swiften/Parser/PayloadParsers/RawXMLPayloadParser.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/RawXMLPayloadParser.h" -#include "Swiften/Parser/SerializingParser.h" - -namespace Swift { - -RawXMLPayloadParser::RawXMLPayloadParser() : level_(0) { -} - -void RawXMLPayloadParser::handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) { - ++level_; - serializingParser_.handleStartElement(element, ns, attributes); -} - -void RawXMLPayloadParser::handleEndElement(const String& element, const String& ns) { - serializingParser_.handleEndElement(element, ns); - --level_; - if (level_ == 0) { - getPayloadInternal()->setRawXML(serializingParser_.getResult()); - } -} - -void RawXMLPayloadParser::handleCharacterData(const String& data) { - serializingParser_.handleCharacterData(data); -} - -} diff --git a/Swiften/Parser/PayloadParsers/RawXMLPayloadParser.h b/Swiften/Parser/PayloadParsers/RawXMLPayloadParser.h deleted file mode 100644 index f636486..0000000 --- a/Swiften/Parser/PayloadParsers/RawXMLPayloadParser.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include "Swiften/Elements/RawXMLPayload.h" -#include "Swiften/Parser/GenericPayloadParser.h" -#include "Swiften/Parser/SerializingParser.h" - -namespace Swift { - class SerializingParser; - - class RawXMLPayloadParser : public GenericPayloadParser<RawXMLPayload> { - public: - RawXMLPayloadParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - int level_; - SerializingParser serializingParser_; - }; -} diff --git a/Swiften/Parser/PayloadParsers/RawXMLPayloadParserFactory.h b/Swiften/Parser/PayloadParsers/RawXMLPayloadParserFactory.h deleted file mode 100644 index 46b1183..0000000 --- a/Swiften/Parser/PayloadParsers/RawXMLPayloadParserFactory.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include "Swiften/Parser/PayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/RawXMLPayloadParser.h" -#include "Swiften/Base/String.h" - -namespace Swift { - class RawXMLPayloadParserFactory : public PayloadParserFactory { - public: - RawXMLPayloadParserFactory() {} - - virtual bool canParse(const String&, const String&, const AttributeMap&) const { - return true; - } - - virtual PayloadParser* createPayloadParser() { - return new RawXMLPayloadParser(); - } - }; -} diff --git a/Swiften/Parser/PayloadParsers/ResourceBindParser.cpp b/Swiften/Parser/PayloadParsers/ResourceBindParser.cpp deleted file mode 100644 index c5ca787..0000000 --- a/Swiften/Parser/PayloadParsers/ResourceBindParser.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/ResourceBindParser.h" - -namespace Swift { - -ResourceBindParser::ResourceBindParser() : level_(0), inJID_(false), inResource_(false) { -} - -void ResourceBindParser::handleStartElement(const String& element, const String&, const AttributeMap&) { - if (level_ == 1) { - text_ = ""; - if (element == "resource") { - inResource_ = true; - } - if (element == "jid") { - inJID_ = true; - } - } - ++level_; -} - -void ResourceBindParser::handleEndElement(const String&, const String&) { - --level_; - if (level_ == 1) { - if (inJID_) { - getPayloadInternal()->setJID(JID(text_)); - } - else if (inResource_) { - getPayloadInternal()->setResource(text_); - } - } -} - -void ResourceBindParser::handleCharacterData(const String& data) { - text_ += data; -} - -} diff --git a/Swiften/Parser/PayloadParsers/ResourceBindParser.h b/Swiften/Parser/PayloadParsers/ResourceBindParser.h deleted file mode 100644 index 1341140..0000000 --- a/Swiften/Parser/PayloadParsers/ResourceBindParser.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef SWIFTEN_ResourceBindParser_H -#define SWIFTEN_ResourceBindParser_H - -#include "Swiften/Elements/ResourceBind.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class ResourceBindParser : public GenericPayloadParser<ResourceBind> { - public: - ResourceBindParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - int level_; - bool inJID_; - bool inResource_; - String text_; - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/ResourceBindParserFactory.h b/Swiften/Parser/PayloadParsers/ResourceBindParserFactory.h deleted file mode 100644 index 54af9c9..0000000 --- a/Swiften/Parser/PayloadParsers/ResourceBindParserFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_ResourceBindParserFactory_H -#define SWIFTEN_ResourceBindParserFactory_H - -#include "Swiften/Parser/GenericPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/ResourceBindParser.h" - -namespace Swift { - class ResourceBindParserFactory : public GenericPayloadParserFactory<ResourceBindParser> { - public: - ResourceBindParserFactory() : GenericPayloadParserFactory<ResourceBindParser>("bind", "urn:ietf:params:xml:ns:xmpp-bind") {} - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/RosterParser.cpp b/Swiften/Parser/PayloadParsers/RosterParser.cpp deleted file mode 100644 index 0c4e99b..0000000 --- a/Swiften/Parser/PayloadParsers/RosterParser.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/RosterParser.h" - -namespace Swift { - -RosterParser::RosterParser() : level_(TopLevel) { -} - -void RosterParser::handleStartElement(const String& element, const String&, const AttributeMap& attributes) { - if (level_ == PayloadLevel) { - if (element == "item") { - inItem_ = true; - currentItem_ = RosterItemPayload(); - - currentItem_.setJID(JID(attributes.getAttribute("jid"))); - currentItem_.setName(attributes.getAttribute("name")); - - String subscription = attributes.getAttribute("subscription"); - if (subscription == "both") { - currentItem_.setSubscription(RosterItemPayload::Both); - } - else if (subscription == "to") { - currentItem_.setSubscription(RosterItemPayload::To); - } - else if (subscription == "from") { - currentItem_.setSubscription(RosterItemPayload::From); - } - else if (subscription == "remove") { - currentItem_.setSubscription(RosterItemPayload::Remove); - } - else { - currentItem_.setSubscription(RosterItemPayload::None); - } - - if (attributes.getAttribute("ask") == "subscribe") { - currentItem_.setSubscriptionRequested(); - } - } - } - else if (level_ == ItemLevel) { - if (element == "group") { - currentText_ = ""; - } - } - ++level_; -} - -void RosterParser::handleEndElement(const String& element, const String&) { - --level_; - if (level_ == PayloadLevel) { - if (inItem_) { - getPayloadInternal()->addItem(currentItem_); - inItem_ = false; - } - } - else if (level_ == ItemLevel) { - if (element == "group") { - currentItem_.addGroup(currentText_); - } - } -} - -void RosterParser::handleCharacterData(const String& data) { - currentText_ += data; -} - -} diff --git a/Swiften/Parser/PayloadParsers/RosterParser.h b/Swiften/Parser/PayloadParsers/RosterParser.h deleted file mode 100644 index bd8186a..0000000 --- a/Swiften/Parser/PayloadParsers/RosterParser.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef SWIFTEN_RosterParser_H -#define SWIFTEN_RosterParser_H - -#include "Swiften/Elements/RosterPayload.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class RosterParser : public GenericPayloadParser<RosterPayload> { - public: - RosterParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - enum Level { - TopLevel = 0, - PayloadLevel = 1, - ItemLevel = 2 - }; - int level_; - bool inItem_; - RosterItemPayload currentItem_; - String currentText_; - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/RosterParserFactory.h b/Swiften/Parser/PayloadParsers/RosterParserFactory.h deleted file mode 100644 index f51b3ab..0000000 --- a/Swiften/Parser/PayloadParsers/RosterParserFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_RosterParserFactory_H -#define SWIFTEN_RosterParserFactory_H - -#include "Swiften/Parser/GenericPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/RosterParser.h" - -namespace Swift { - class RosterParserFactory : public GenericPayloadParserFactory<RosterParser> { - public: - RosterParserFactory() : GenericPayloadParserFactory<RosterParser>("query", "jabber:iq:roster") {} - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/SecurityLabelParser.cpp b/Swiften/Parser/PayloadParsers/SecurityLabelParser.cpp deleted file mode 100644 index 7e65575..0000000 --- a/Swiften/Parser/PayloadParsers/SecurityLabelParser.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/SecurityLabelParser.h" -#include "Swiften/Parser/SerializingParser.h" - -namespace Swift { - -SecurityLabelParser::SecurityLabelParser() : level_(TopLevel), labelParser_(0) { -} - -void SecurityLabelParser::handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) { - ++level_; - if (level_ == DisplayMarkingOrLabelLevel) { - if (element == "displaymarking") { - currentText_ = ""; - getPayloadInternal()->setBackgroundColor(attributes.getAttribute("bgcolor")); - getPayloadInternal()->setForegroundColor(attributes.getAttribute("fgcolor")); - } - else if (element == "label" || element == "equivalentlabel") { - assert(!labelParser_); - labelParser_ = new SerializingParser(); - } - } - else if (level_ >= SecurityLabelLevel && labelParser_) { - labelParser_->handleStartElement(element, ns, attributes); - } -} - -void SecurityLabelParser::handleEndElement(const String& element, const String& ns) { - if (level_ == DisplayMarkingOrLabelLevel) { - if (element == "displaymarking") { - getPayloadInternal()->setDisplayMarking(currentText_); - } - else if (labelParser_) { - if (element == "label") { - getPayloadInternal()->setLabel(labelParser_->getResult()); - } - else { - getPayloadInternal()->addEquivalentLabel(labelParser_->getResult()); - } - delete labelParser_; - labelParser_ = 0; - } - } - else if (labelParser_ && level_ >= SecurityLabelLevel) { - labelParser_->handleEndElement(element, ns); - } - --level_; - -} - -void SecurityLabelParser::handleCharacterData(const String& data) { - if (labelParser_) { - labelParser_->handleCharacterData(data); - } - else { - currentText_ += data; - } -} - -} diff --git a/Swiften/Parser/PayloadParsers/SecurityLabelParser.h b/Swiften/Parser/PayloadParsers/SecurityLabelParser.h deleted file mode 100644 index 70040d9..0000000 --- a/Swiften/Parser/PayloadParsers/SecurityLabelParser.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef SWIFTEN_SecurityLabelParser_H -#define SWIFTEN_SecurityLabelParser_H - -#include "Swiften/Elements/SecurityLabel.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class SerializingParser; - - class SecurityLabelParser : public GenericPayloadParser<SecurityLabel> { - public: - SecurityLabelParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - enum Level { - TopLevel = 0, - PayloadLevel = 1, - DisplayMarkingOrLabelLevel = 2, - SecurityLabelLevel = 3 - }; - int level_; - SerializingParser* labelParser_; - String currentText_; - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h b/Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h deleted file mode 100644 index 0341fbb..0000000 --- a/Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_SecurityLabelParserFactory_H -#define SWIFTEN_SecurityLabelParserFactory_H - -#include "Swiften/Parser/GenericPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/SecurityLabelParser.h" - -namespace Swift { - class SecurityLabelParserFactory : public GenericPayloadParserFactory<SecurityLabelParser> { - public: - SecurityLabelParserFactory() : GenericPayloadParserFactory<SecurityLabelParser>("securitylabel", "urn:xmpp:sec-label:0") {} - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.cpp b/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.cpp deleted file mode 100644 index e4da756..0000000 --- a/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.cpp +++ /dev/null @@ -1,55 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h" -#include "Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h" -#include "Swiften/Parser/PayloadParsers/SecurityLabelParser.h" - -namespace Swift { - -SecurityLabelsCatalogParser::SecurityLabelsCatalogParser() : level_(TopLevel), labelParser_(0) { - labelParserFactory_ = new SecurityLabelParserFactory(); -} - -SecurityLabelsCatalogParser::~SecurityLabelsCatalogParser() { - delete labelParserFactory_; -} - -void SecurityLabelsCatalogParser::handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) { - ++level_; - if (level_ == PayloadLevel) { - getPayloadInternal()->setTo(JID(attributes.getAttribute("to"))); - getPayloadInternal()->setName(attributes.getAttribute("name")); - getPayloadInternal()->setDescription(attributes.getAttribute("desc")); - } - else if (level_ == LabelLevel) { - assert(!labelParser_); - if (labelParserFactory_->canParse(element, ns, attributes)) { - labelParser_ = dynamic_cast<SecurityLabelParser*>(labelParserFactory_->createPayloadParser()); - assert(labelParser_); - } - } - - if (labelParser_) { - labelParser_->handleStartElement(element, ns, attributes); - } -} - -void SecurityLabelsCatalogParser::handleEndElement(const String& element, const String& ns) { - if (labelParser_) { - labelParser_->handleEndElement(element, ns); - } - if (level_ == LabelLevel && labelParser_) { - SecurityLabel* label = dynamic_cast<SecurityLabel*>(labelParser_->getPayload().get()); - assert(label); - getPayloadInternal()->addLabel(SecurityLabel(*label)); - delete labelParser_; - labelParser_ = 0; - } - --level_; -} - -void SecurityLabelsCatalogParser::handleCharacterData(const String& data) { - if (labelParser_) { - labelParser_->handleCharacterData(data); - } -} - -} diff --git a/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h b/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h deleted file mode 100644 index 799e43a..0000000 --- a/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef SWIFTEN_SecurityLabelsCatalogParser_H -#define SWIFTEN_SecurityLabelsCatalogParser_H - -#include "Swiften/Elements/SecurityLabelsCatalog.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class SecurityLabelParserFactory; - class SecurityLabelParser; - - class SecurityLabelsCatalogParser : public GenericPayloadParser<SecurityLabelsCatalog> { - public: - SecurityLabelsCatalogParser(); - ~SecurityLabelsCatalogParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - enum Level { - TopLevel = 0, - PayloadLevel = 1, - LabelLevel = 2 - }; - int level_; - SecurityLabelParserFactory* labelParserFactory_; - SecurityLabelParser* labelParser_; - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParserFactory.h b/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParserFactory.h deleted file mode 100644 index 99a310b..0000000 --- a/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParserFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_SecurityLabelsCatalogParserFactory_H -#define SWIFTEN_SecurityLabelsCatalogParserFactory_H - -#include "Swiften/Parser/GenericPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h" - -namespace Swift { - class SecurityLabelsCatalogParserFactory : public GenericPayloadParserFactory<SecurityLabelsCatalogParser> { - public: - SecurityLabelsCatalogParserFactory() : GenericPayloadParserFactory<SecurityLabelsCatalogParser>("catalog", "urn:xmpp:sec-label:catalog:0") {} - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/SoftwareVersionParser.cpp b/Swiften/Parser/PayloadParsers/SoftwareVersionParser.cpp deleted file mode 100644 index dae9f94..0000000 --- a/Swiften/Parser/PayloadParsers/SoftwareVersionParser.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/SoftwareVersionParser.h" - -namespace Swift { - -SoftwareVersionParser::SoftwareVersionParser() : level_(TopLevel) { -} - -void SoftwareVersionParser::handleStartElement(const String&, const String&, const AttributeMap&) { - ++level_; -} - -void SoftwareVersionParser::handleEndElement(const String& element, const String&) { - --level_; - if (level_ == PayloadLevel) { - if (element == "name") { - getPayloadInternal()->setName(currentText_); - } - else if (element == "version") { - getPayloadInternal()->setVersion(currentText_); - } - else if (element == "os") { - getPayloadInternal()->setOS(currentText_); - } - currentText_ = ""; - } -} - -void SoftwareVersionParser::handleCharacterData(const String& data) { - currentText_ += data; -} - -} diff --git a/Swiften/Parser/PayloadParsers/SoftwareVersionParser.h b/Swiften/Parser/PayloadParsers/SoftwareVersionParser.h deleted file mode 100644 index bfffc90..0000000 --- a/Swiften/Parser/PayloadParsers/SoftwareVersionParser.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef SWIFTEN_SoftwareVersionParser_H -#define SWIFTEN_SoftwareVersionParser_H - -#include "Swiften/Elements/SoftwareVersion.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class SoftwareVersionParser : public GenericPayloadParser<SoftwareVersion> { - public: - SoftwareVersionParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - enum Level { - TopLevel = 0, - PayloadLevel = 1 - }; - int level_; - String currentText_; - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/SoftwareVersionParserFactory.h b/Swiften/Parser/PayloadParsers/SoftwareVersionParserFactory.h deleted file mode 100644 index cb33e0b..0000000 --- a/Swiften/Parser/PayloadParsers/SoftwareVersionParserFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_SoftwareVersionParserFactory_H -#define SWIFTEN_SoftwareVersionParserFactory_H - -#include "Swiften/Parser/GenericPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/SoftwareVersionParser.h" - -namespace Swift { - class SoftwareVersionParserFactory : public GenericPayloadParserFactory<SoftwareVersionParser> { - public: - SoftwareVersionParserFactory() : GenericPayloadParserFactory<SoftwareVersionParser>("query", "jabber:iq:version") {} - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/StartSessionParser.h b/Swiften/Parser/PayloadParsers/StartSessionParser.h deleted file mode 100644 index 059d036..0000000 --- a/Swiften/Parser/PayloadParsers/StartSessionParser.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef SWIFTEN_StartSessionParser_H -#define SWIFTEN_StartSessionParser_H - -#include "Swiften/Elements/StartSession.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class StartSessionParser : public GenericPayloadParser<StartSession> { - public: - StartSessionParser() {} - - virtual void handleStartElement(const String&, const String&, const AttributeMap&) {} - virtual void handleEndElement(const String&, const String&) {} - virtual void handleCharacterData(const String&) {} - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/StartSessionParserFactory.h b/Swiften/Parser/PayloadParsers/StartSessionParserFactory.h deleted file mode 100644 index 5eed749..0000000 --- a/Swiften/Parser/PayloadParsers/StartSessionParserFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_StartSessionParserFactory_H -#define SWIFTEN_StartSessionParserFactory_H - -#include "Swiften/Parser/GenericPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/StartSessionParser.h" - -namespace Swift { - class StartSessionParserFactory : public GenericPayloadParserFactory<StartSessionParser> { - public: - StartSessionParserFactory() : GenericPayloadParserFactory<StartSessionParser>("session", "urn:ietf:params:xml:ns:xmpp-session") {} - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/StatusParser.cpp b/Swiften/Parser/PayloadParsers/StatusParser.cpp deleted file mode 100644 index c7771b9..0000000 --- a/Swiften/Parser/PayloadParsers/StatusParser.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/StatusParser.h" - -namespace Swift { - -StatusParser::StatusParser() : level_(0) { -} - -void StatusParser::handleStartElement(const String&, const String&, const AttributeMap&) { - ++level_; -} - -void StatusParser::handleEndElement(const String&, const String&) { - --level_; - if (level_ == 0) { - getPayloadInternal()->setText(text_); - } -} - -void StatusParser::handleCharacterData(const String& data) { - text_ += data; -} - -} diff --git a/Swiften/Parser/PayloadParsers/StatusParser.h b/Swiften/Parser/PayloadParsers/StatusParser.h deleted file mode 100644 index 36ae094..0000000 --- a/Swiften/Parser/PayloadParsers/StatusParser.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef SWIFTEN_StatusParser_H -#define SWIFTEN_StatusParser_H - -#include "Swiften/Elements/Status.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class StatusParser : public GenericPayloadParser<Status> { - public: - StatusParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - int level_; - String text_; - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/StatusParserFactory.h b/Swiften/Parser/PayloadParsers/StatusParserFactory.h deleted file mode 100644 index 72af5a9..0000000 --- a/Swiften/Parser/PayloadParsers/StatusParserFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_StatusParserFactory_H -#define SWIFTEN_StatusParserFactory_H - -#include "Swiften/Parser/GenericPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/StatusParser.h" - -namespace Swift { - class StatusParserFactory : public GenericPayloadParserFactory<StatusParser> { - public: - StatusParserFactory() : GenericPayloadParserFactory<StatusParser>("status") {} - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/StatusShowParser.cpp b/Swiften/Parser/PayloadParsers/StatusShowParser.cpp deleted file mode 100644 index c3719af..0000000 --- a/Swiften/Parser/PayloadParsers/StatusShowParser.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/StatusShowParser.h" - -namespace Swift { - -StatusShowParser::StatusShowParser() : level_(0) { -} - -void StatusShowParser::handleStartElement(const String&, const String&, const AttributeMap&) { - ++level_; -} - -void StatusShowParser::handleEndElement(const String&, const String&) { - --level_; - if (level_ == 0) { - if (text_ == "away") { - getPayloadInternal()->setType(StatusShow::Away); - } - else if (text_ == "chat") { - getPayloadInternal()->setType(StatusShow::FFC); - } - else if (text_ == "xa") { - getPayloadInternal()->setType(StatusShow::XA); - } - else if (text_ == "dnd") { - getPayloadInternal()->setType(StatusShow::DND); - } - else { - getPayloadInternal()->setType(StatusShow::Online); - } - } -} - -void StatusShowParser::handleCharacterData(const String& data) { - text_ += data; -} - -} diff --git a/Swiften/Parser/PayloadParsers/StatusShowParser.h b/Swiften/Parser/PayloadParsers/StatusShowParser.h deleted file mode 100644 index a8ddb09..0000000 --- a/Swiften/Parser/PayloadParsers/StatusShowParser.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef SWIFTEN_StatusShowParser_H -#define SWIFTEN_StatusShowParser_H - -#include "Swiften/Elements/StatusShow.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class StatusShowParser : public GenericPayloadParser<StatusShow> { - public: - StatusShowParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - int level_; - String text_; - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/StatusShowParserFactory.h b/Swiften/Parser/PayloadParsers/StatusShowParserFactory.h deleted file mode 100644 index 2ddc190..0000000 --- a/Swiften/Parser/PayloadParsers/StatusShowParserFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_StatusShowParserFactory_H -#define SWIFTEN_StatusShowParserFactory_H - -#include "Swiften/Parser/GenericPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/StatusShowParser.h" - -namespace Swift { - class StatusShowParserFactory : public GenericPayloadParserFactory<StatusShowParser> { - public: - StatusShowParserFactory() : GenericPayloadParserFactory<StatusShowParser>("show") {} - }; -} - -#endif diff --git a/Swiften/Parser/PayloadParsers/StorageParser.cpp b/Swiften/Parser/PayloadParsers/StorageParser.cpp deleted file mode 100644 index 3eab15e..0000000 --- a/Swiften/Parser/PayloadParsers/StorageParser.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/StorageParser.h" - -#include <cassert> - -namespace Swift { - -StorageParser::StorageParser() : level(TopLevel) { -} - -void StorageParser::handleStartElement(const String& element, const String&, const AttributeMap& attributes) { - if (level == BookmarkLevel) { - if (element == "conference") { - assert(!conference); - conference = Storage::Conference(); - conference->autoJoin = attributes.getBoolAttribute("autojoin", false); - conference->jid = JID(attributes.getAttribute("jid")); - conference->name = attributes.getAttribute("name"); - } - } - else if (level == DetailLevel) { - currentText = ""; - } - ++level; -} - -void StorageParser::handleEndElement(const String& element, const String&) { - --level; - if (level == BookmarkLevel) { - if (element == "conference") { - assert(conference); - getPayloadInternal()->addConference(*conference); - conference.reset(); - } - } - else if (level == DetailLevel && conference) { - if (element == "nick") { - conference->nick = currentText; - } - else if (element == "password") { - conference->password = currentText; - } - } -} - -void StorageParser::handleCharacterData(const String& data) { - currentText += data; -} - -} diff --git a/Swiften/Parser/PayloadParsers/StorageParser.h b/Swiften/Parser/PayloadParsers/StorageParser.h deleted file mode 100644 index ad0ab4d..0000000 --- a/Swiften/Parser/PayloadParsers/StorageParser.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include <boost/optional.hpp> - -#include "Swiften/Elements/Storage.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class StorageParser : public GenericPayloadParser<Storage> { - public: - StorageParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - enum Level { - TopLevel = 0, - BookmarkLevel = 1, - DetailLevel = 2 - }; - int level; - String currentText; - boost::optional<Storage::Conference> conference; - }; -} diff --git a/Swiften/Parser/PayloadParsers/StorageParserFactory.h b/Swiften/Parser/PayloadParsers/StorageParserFactory.h deleted file mode 100644 index 147d178..0000000 --- a/Swiften/Parser/PayloadParsers/StorageParserFactory.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include "Swiften/Parser/GenericPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/StorageParser.h" - -namespace Swift { - class StorageParserFactory : public GenericPayloadParserFactory<StorageParser> { - public: - StorageParserFactory() : GenericPayloadParserFactory<StorageParser>("storage", "storage:bookmarks") {} - }; -} diff --git a/Swiften/Parser/PayloadParsers/UnitTest/BodyParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/BodyParserTest.cpp deleted file mode 100644 index 2fc6180..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/BodyParserTest.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParsers/BodyParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" - -using namespace Swift; - -class BodyParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(BodyParserTest); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST_SUITE_END(); - - public: - BodyParserTest() {} - - void testParse() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse("<body>foo<baz>bar</baz>fum</body>")); - - Body* payload = dynamic_cast<Body*>(parser.getPayload().get()); - CPPUNIT_ASSERT_EQUAL(String("foobarfum"), payload->getText()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(BodyParserTest); diff --git a/Swiften/Parser/PayloadParsers/UnitTest/DiscoInfoParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/DiscoInfoParserTest.cpp deleted file mode 100644 index 49b706e..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/DiscoInfoParserTest.cpp +++ /dev/null @@ -1,47 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParsers/DiscoInfoParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" - -using namespace Swift; - -class DiscoInfoParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(DiscoInfoParserTest); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST_SUITE_END(); - - public: - DiscoInfoParserTest() {} - - void testParse() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse( - "<query xmlns=\"http://jabber.org/protocol/disco#info\">" - "<identity name=\"Swift\" category=\"client\" type=\"pc\" xml:lang=\"en\"/>" - "<identity name=\"Vlug\" category=\"client\" type=\"pc\" xml:lang=\"nl\"/>" - "<feature var=\"foo-feature\"/>" - "<feature var=\"bar-feature\"/>" - "<feature var=\"baz-feature\"/>" - "</query>")); - - DiscoInfo* payload = dynamic_cast<DiscoInfo*>(parser.getPayload().get()); - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(payload->getIdentities().size())); - CPPUNIT_ASSERT_EQUAL(String("Swift"), payload->getIdentities()[0].getName()); - CPPUNIT_ASSERT_EQUAL(String("pc"), payload->getIdentities()[0].getType()); - CPPUNIT_ASSERT_EQUAL(String("client"), payload->getIdentities()[0].getCategory()); - CPPUNIT_ASSERT_EQUAL(String("en"), payload->getIdentities()[0].getLanguage()); - CPPUNIT_ASSERT_EQUAL(String("Vlug"), payload->getIdentities()[1].getName()); - CPPUNIT_ASSERT_EQUAL(String("pc"), payload->getIdentities()[1].getType()); - CPPUNIT_ASSERT_EQUAL(String("client"), payload->getIdentities()[1].getCategory()); - CPPUNIT_ASSERT_EQUAL(String("nl"), payload->getIdentities()[1].getLanguage()); - CPPUNIT_ASSERT_EQUAL(3, static_cast<int>(payload->getFeatures().size())); - CPPUNIT_ASSERT_EQUAL(String("foo-feature"), payload->getFeatures()[0]); - CPPUNIT_ASSERT_EQUAL(String("bar-feature"), payload->getFeatures()[1]); - CPPUNIT_ASSERT_EQUAL(String("baz-feature"), payload->getFeatures()[2]); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(DiscoInfoParserTest); diff --git a/Swiften/Parser/PayloadParsers/UnitTest/ErrorParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/ErrorParserTest.cpp deleted file mode 100644 index dcd3172..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/ErrorParserTest.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParsers/ErrorParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" - -using namespace Swift; - -class ErrorParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(ErrorParserTest); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST_SUITE_END(); - - public: - ErrorParserTest() {} - - void testParse() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse( - "<error type=\"modify\">" - "<bad-request xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>" - "<text xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">boo</text>" - "</error>")); - - ErrorPayload* payload = dynamic_cast<ErrorPayload*>(parser.getPayload().get()); - CPPUNIT_ASSERT_EQUAL(ErrorPayload::BadRequest, payload->getCondition()); - CPPUNIT_ASSERT_EQUAL(ErrorPayload::Modify, payload->getType()); - CPPUNIT_ASSERT_EQUAL(String("boo"), payload->getText()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(ErrorParserTest); diff --git a/Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h b/Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h deleted file mode 100644 index 20a5feb..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -#include "Swiften/Parser/UnitTest/ParserTester.h" -#include "Swiften/Parser/PayloadParser.h" - -namespace Swift { - typedef ParserTester<PayloadParser> PayloadParserTester; -} diff --git a/Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h b/Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h deleted file mode 100644 index ac167cf..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h +++ /dev/null @@ -1,55 +0,0 @@ -#pragma once - -#include <cppunit/extensions/HelperMacros.h> - -#include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h" -#include "Swiften/Parser/XMLParser.h" -#include "Swiften/Parser/XMLParserClient.h" -#include "Swiften/Parser/PlatformXMLParserFactory.h" - -namespace Swift { - class PayloadsParserTester : public XMLParserClient { - public: - PayloadsParserTester() : level(0) { - xmlParser = PlatformXMLParserFactory().createXMLParser(this); - } - - ~PayloadsParserTester() { - delete xmlParser; - } - - bool parse(const String& data) { - return xmlParser->parse(data); - } - - virtual void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) { - if (level == 0) { - CPPUNIT_ASSERT(!payloadParser.get()); - PayloadParserFactory* payloadParserFactory = factories.getPayloadParserFactory(element, ns, attributes); - CPPUNIT_ASSERT(payloadParserFactory); - payloadParser.reset(payloadParserFactory->createPayloadParser()); - } - payloadParser->handleStartElement(element, ns, attributes); - level++; - } - - virtual void handleEndElement(const String& element, const String& ns) { - level--; - payloadParser->handleEndElement(element, ns); - } - - virtual void handleCharacterData(const String& data) { - payloadParser->handleCharacterData(data); - } - - boost::shared_ptr<Payload> getPayload() const { - return payloadParser->getPayload(); - } - - private: - XMLParser* xmlParser; - FullPayloadParserFactoryCollection factories; - std::auto_ptr<PayloadParser> payloadParser; - int level; - }; -} diff --git a/Swiften/Parser/PayloadParsers/UnitTest/PriorityParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/PriorityParserTest.cpp deleted file mode 100644 index acea437..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/PriorityParserTest.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParsers/PriorityParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" - -using namespace Swift; - -class PriorityParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(PriorityParserTest); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST_SUITE_END(); - - public: - PriorityParserTest() {} - - void testParse() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse("<priority>-120</priority>")); - - Priority* payload = dynamic_cast<Priority*>(parser.getPayload().get()); - CPPUNIT_ASSERT_EQUAL(-120, payload->getPriority()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(PriorityParserTest); diff --git a/Swiften/Parser/PayloadParsers/UnitTest/PrivateStorageParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/PrivateStorageParserTest.cpp deleted file mode 100644 index e820083..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/PrivateStorageParserTest.cpp +++ /dev/null @@ -1,89 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Elements/Storage.h" -#include "Swiften/Parser/PayloadParsers/PrivateStorageParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h" - -using namespace Swift; - -class PrivateStorageParserTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(PrivateStorageParserTest); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST(testParse_NoPayload); - CPPUNIT_TEST(testParse_MultiplePayloads); - CPPUNIT_TEST_SUITE_END(); - - public: - PrivateStorageParserTest() {} - - void testParse() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse( - "<query xmlns='jabber:iq:private'>" - "<storage xmlns='storage:bookmarks'>" - "<conference name='Swift' jid='swift@rooms.swift.im'>" - "<nick>Alice</nick>" - "</conference>" - "</storage>" - "</query>")); - - boost::shared_ptr<PrivateStorage> payload = boost::dynamic_pointer_cast<PrivateStorage>(parser.getPayload()); - CPPUNIT_ASSERT(payload); - boost::shared_ptr<Storage> storage = boost::dynamic_pointer_cast<Storage>(payload->getPayload()); - CPPUNIT_ASSERT(storage); - CPPUNIT_ASSERT_EQUAL(String("Alice"), storage->getConferences()[0].nick); - CPPUNIT_ASSERT_EQUAL(JID("swift@rooms.swift.im"), storage->getConferences()[0].jid); - } - - void testParse_NoPayload() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse("<query xmlns='jabber:iq:private'/>")); - - boost::shared_ptr<PrivateStorage> payload = boost::dynamic_pointer_cast<PrivateStorage>(parser.getPayload()); - CPPUNIT_ASSERT(payload); - CPPUNIT_ASSERT(!payload->getPayload()); - } - - void testParse_MultiplePayloads() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse( - "<query xmlns='jabber:iq:private'>" - "<storage xmlns='storage:bookmarks'>" - "<conference name='Swift' jid='swift@rooms.swift.im'>" - "<nick>Alice</nick>" - "</conference>" - "</storage>" - "<storage xmlns='storage:bookmarks'>" - "<conference name='Swift' jid='swift@rooms.swift.im'>" - "<nick>Rabbit</nick>" - "</conference>" - "</storage>" - "</query>")); - - boost::shared_ptr<PrivateStorage> payload = boost::dynamic_pointer_cast<PrivateStorage>(parser.getPayload()); - CPPUNIT_ASSERT(payload); - boost::shared_ptr<Storage> storage = boost::dynamic_pointer_cast<Storage>(payload->getPayload()); - CPPUNIT_ASSERT(storage); - CPPUNIT_ASSERT_EQUAL(String("Rabbit"), storage->getConferences()[0].nick); - } - - void testParse_UnsupportedPayload() { - PayloadParserFactoryCollection factories; - PrivateStorageParser testling(&factories); - PayloadParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse( - "<query xmlns='jabber:iq:private'>" - "<foo>Bar</foo>" - "</query>")); - - CPPUNIT_ASSERT(!boost::dynamic_pointer_cast<PrivateStorage>(testling.getPayload())->getPayload()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(PrivateStorageParserTest); diff --git a/Swiften/Parser/PayloadParsers/UnitTest/RawXMLPayloadParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/RawXMLPayloadParserTest.cpp deleted file mode 100644 index 81cc207..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/RawXMLPayloadParserTest.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParsers/RawXMLPayloadParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h" - -using namespace Swift; - -class RawXMLPayloadParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(RawXMLPayloadParserTest); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST_SUITE_END(); - - public: - RawXMLPayloadParserTest() {} - - void testParse() { - RawXMLPayloadParser testling; - PayloadParserTester parser(&testling); - - String xml = - "<foo foo-attr=\"foo-val\" xmlns=\"ns:foo\">" - "<bar bar-attr=\"bar-val\" xmlns=\"ns:bar\"/>" - "<baz baz-attr=\"baz-val\" xmlns=\"ns:baz\"/>" - "</foo>"; - CPPUNIT_ASSERT(parser.parse(xml)); - - RawXMLPayload* payload = dynamic_cast<RawXMLPayload*>(testling.getPayload().get()); - CPPUNIT_ASSERT_EQUAL(xml, payload->getRawXML()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(RawXMLPayloadParserTest); diff --git a/Swiften/Parser/PayloadParsers/UnitTest/ResourceBindParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/ResourceBindParserTest.cpp deleted file mode 100644 index b1b61ef..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/ResourceBindParserTest.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParsers/ResourceBindParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" - -using namespace Swift; - -class ResourceBindParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(ResourceBindParserTest); - CPPUNIT_TEST(testParse_JID); - CPPUNIT_TEST(testParse_Resource); - CPPUNIT_TEST_SUITE_END(); - - public: - ResourceBindParserTest() {} - - void testParse_JID() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse("<bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><jid>somenode@example.com/someresource</jid></bind>")); - - ResourceBind* payload = dynamic_cast<ResourceBind*>(parser.getPayload().get()); - CPPUNIT_ASSERT_EQUAL(JID("somenode@example.com/someresource"), payload->getJID()); - } - - void testParse_Resource() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse("<bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><resource>someresource</resource></bind>")); - - ResourceBind* payload = dynamic_cast<ResourceBind*>(parser.getPayload().get()); - CPPUNIT_ASSERT_EQUAL(String("someresource"), payload->getResource()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(ResourceBindParserTest); diff --git a/Swiften/Parser/PayloadParsers/UnitTest/RosterParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/RosterParserTest.cpp deleted file mode 100644 index 4c8db07..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/RosterParserTest.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParsers/RosterParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" - -using namespace Swift; - -class RosterParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(RosterParserTest); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST_SUITE_END(); - - public: - RosterParserTest() {} - - void testParse() { - PayloadsParserTester parser; - parser.parse( - "<query xmlns='jabber:iq:roster'>" - " <item jid='foo@bar.com' name='Foo @ Bar' subscription='from' ask='subscribe'>" - " <group>Group 1</group>" - " <group>Group 2</group>" - " </item>" - " <item jid='baz@blo.com' name='Baz'/>" - "</query>"); - - RosterPayload* payload = dynamic_cast<RosterPayload*>(parser.getPayload().get()); - const RosterPayload::RosterItemPayloads& items = payload->getItems(); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), items.size()); - - CPPUNIT_ASSERT_EQUAL(JID("foo@bar.com"), items[0].getJID()); - CPPUNIT_ASSERT_EQUAL(String("Foo @ Bar"), items[0].getName()); - CPPUNIT_ASSERT_EQUAL(RosterItemPayload::From, items[0].getSubscription()); - CPPUNIT_ASSERT(items[0].getSubscriptionRequested()); - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), items[0].getGroups().size()); - CPPUNIT_ASSERT_EQUAL(String("Group 1"), items[0].getGroups()[0]); - CPPUNIT_ASSERT_EQUAL(String("Group 2"), items[0].getGroups()[1]); - - CPPUNIT_ASSERT_EQUAL(JID("baz@blo.com"), items[1].getJID()); - CPPUNIT_ASSERT_EQUAL(String("Baz"), items[1].getName()); - CPPUNIT_ASSERT_EQUAL(RosterItemPayload::None, items[1].getSubscription()); - CPPUNIT_ASSERT(!items[1].getSubscriptionRequested()); - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), items[1].getGroups().size()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(RosterParserTest); diff --git a/Swiften/Parser/PayloadParsers/UnitTest/SecurityLabelParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/SecurityLabelParserTest.cpp deleted file mode 100644 index 8272bee..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/SecurityLabelParserTest.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParsers/SecurityLabelParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" - -using namespace Swift; - -class SecurityLabelParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(SecurityLabelParserTest); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST_SUITE_END(); - - public: - SecurityLabelParserTest() {} - - void testParse() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse( - "<securitylabel xmlns=\"urn:xmpp:sec-label:0\">" - "<displaymarking fgcolor=\"black\" bgcolor=\"red\">SECRET</displaymarking>" - "<label>" - "<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>" - "</label>" - "<equivalentlabel>" - "<icismlabel xmlns=\"http://example.gov/IC-ISM/0\" classification=\"S\" ownerProducer=\"USA\" disseminationControls=\"FOUO\"/>" - "</equivalentlabel>" - "<equivalentlabel>" - "<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MRUCAgD9DA9BcXVhIChvYnNvbGV0ZSk=</esssecuritylabel>" - "</equivalentlabel>" - "</securitylabel>")); - - SecurityLabel* payload = dynamic_cast<SecurityLabel*>(parser.getPayload().get()); - CPPUNIT_ASSERT_EQUAL(String("SECRET"), payload->getDisplayMarking()); - CPPUNIT_ASSERT_EQUAL(String("black"), payload->getForegroundColor()); - CPPUNIT_ASSERT_EQUAL(String("red"), payload->getBackgroundColor()); - CPPUNIT_ASSERT_EQUAL(String("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>"), payload->getLabel()); - CPPUNIT_ASSERT_EQUAL(String("<icismlabel classification=\"S\" disseminationControls=\"FOUO\" ownerProducer=\"USA\" xmlns=\"http://example.gov/IC-ISM/0\"/>"), payload->getEquivalentLabels()[0]); - CPPUNIT_ASSERT_EQUAL(String("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MRUCAgD9DA9BcXVhIChvYnNvbGV0ZSk=</esssecuritylabel>"), payload->getEquivalentLabels()[1]); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(SecurityLabelParserTest); diff --git a/Swiften/Parser/PayloadParsers/UnitTest/SecurityLabelsCatalogParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/SecurityLabelsCatalogParserTest.cpp deleted file mode 100644 index b2378b6..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/SecurityLabelsCatalogParserTest.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" - -using namespace Swift; - -class SecurityLabelsCatalogParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(SecurityLabelsCatalogParserTest); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST_SUITE_END(); - - public: - SecurityLabelsCatalogParserTest() {} - - void testParse() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse( - "<catalog desc=\"an example set of labels\" name=\"Default\" to=\"example.com\" xmlns=\"urn:xmpp:sec-label:catalog:0\">" - "<securitylabel xmlns=\"urn:xmpp:sec-label:0\">" - "<displaymarking bgcolor=\"red\" fgcolor=\"black\">SECRET</displaymarking>" - "<label><esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel></label>" - "</securitylabel>" - "<securitylabel xmlns=\"urn:xmpp:sec-label:0\">" - "<displaymarking bgcolor=\"navy\" fgcolor=\"black\">CONFIDENTIAL</displaymarking>" - "<label><esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQMGASk=</esssecuritylabel></label>" - "</securitylabel>" - "</catalog>")); - - SecurityLabelsCatalog* payload = dynamic_cast<SecurityLabelsCatalog*>(parser.getPayload().get()); - CPPUNIT_ASSERT_EQUAL(String("Default"), payload->getName()); - CPPUNIT_ASSERT_EQUAL(String("an example set of labels"), payload->getDescription()); - CPPUNIT_ASSERT_EQUAL(JID("example.com"), payload->getTo()); - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(payload->getLabels().size())); - CPPUNIT_ASSERT_EQUAL(String("SECRET"), payload->getLabels()[0].getDisplayMarking()); - CPPUNIT_ASSERT_EQUAL(String("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>"), payload->getLabels()[0].getLabel()); - CPPUNIT_ASSERT_EQUAL(String("CONFIDENTIAL"), payload->getLabels()[1].getDisplayMarking()); - CPPUNIT_ASSERT_EQUAL(String("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQMGASk=</esssecuritylabel>"), payload->getLabels()[1].getLabel()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(SecurityLabelsCatalogParserTest); diff --git a/Swiften/Parser/PayloadParsers/UnitTest/SoftwareVersionParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/SoftwareVersionParserTest.cpp deleted file mode 100644 index eeaa8d9..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/SoftwareVersionParserTest.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParsers/SoftwareVersionParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" - -using namespace Swift; - -class SoftwareVersionParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(SoftwareVersionParserTest); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST_SUITE_END(); - - public: - SoftwareVersionParserTest() {} - - void testParse() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse( - "<query xmlns=\"jabber:iq:version\">" - "<name>myclient</name>" - "<version>1.0</version>" - "<os>Mac OS X</os>" - "</query>")); - - SoftwareVersion* payload = dynamic_cast<SoftwareVersion*>(parser.getPayload().get()); - CPPUNIT_ASSERT_EQUAL(String("myclient"), payload->getName()); - CPPUNIT_ASSERT_EQUAL(String("1.0"), payload->getVersion()); - CPPUNIT_ASSERT_EQUAL(String("Mac OS X"), payload->getOS()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(SoftwareVersionParserTest); diff --git a/Swiften/Parser/PayloadParsers/UnitTest/StatusParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/StatusParserTest.cpp deleted file mode 100644 index 71d5b0b..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/StatusParserTest.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParsers/StatusParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" - -using namespace Swift; - -class StatusParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(StatusParserTest); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST_SUITE_END(); - - public: - StatusParserTest() {} - - void testParse() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse("<status>foo<baz>bar</baz>fum</status>")); - - Status* payload = dynamic_cast<Status*>(parser.getPayload().get()); - CPPUNIT_ASSERT_EQUAL(String("foobarfum"), payload->getText()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(StatusParserTest); diff --git a/Swiften/Parser/PayloadParsers/UnitTest/StatusShowParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/StatusShowParserTest.cpp deleted file mode 100644 index d45e98b..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/StatusShowParserTest.cpp +++ /dev/null @@ -1,68 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParsers/StatusShowParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" - -using namespace Swift; - -class StatusShowParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(StatusShowParserTest); - CPPUNIT_TEST(testParse_Invalid); - CPPUNIT_TEST(testParse_Away); - CPPUNIT_TEST(testParse_FFC); - CPPUNIT_TEST(testParse_XA); - CPPUNIT_TEST(testParse_DND); - CPPUNIT_TEST_SUITE_END(); - - public: - StatusShowParserTest() {} - - void testParse_Invalid() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse("<show>invalid</show>")); - - StatusShow* payload = dynamic_cast<StatusShow*>(parser.getPayload().get()); - CPPUNIT_ASSERT(StatusShow::Online == payload->getType()); - } - - void testParse_Away() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse("<show>away</show>")); - - StatusShow* payload = dynamic_cast<StatusShow*>(parser.getPayload().get()); - CPPUNIT_ASSERT(StatusShow::Away == payload->getType()); - } - - void testParse_FFC() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse("<show>chat</show>")); - - StatusShow* payload = dynamic_cast<StatusShow*>(parser.getPayload().get()); - CPPUNIT_ASSERT(StatusShow::FFC == payload->getType()); - } - - void testParse_XA() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse("<show>xa</show>")); - - StatusShow* payload = dynamic_cast<StatusShow*>(parser.getPayload().get()); - CPPUNIT_ASSERT(StatusShow::XA == payload->getType()); - } - - void testParse_DND() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse("<show>dnd</show>")); - - StatusShow* payload = dynamic_cast<StatusShow*>(parser.getPayload().get()); - CPPUNIT_ASSERT(StatusShow::DND == payload->getType()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(StatusShowParserTest); diff --git a/Swiften/Parser/PayloadParsers/UnitTest/StorageParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/StorageParserTest.cpp deleted file mode 100644 index 3fbf27a..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/StorageParserTest.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParsers/StorageParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" - -using namespace Swift; - -class StorageParserTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(StorageParserTest); - CPPUNIT_TEST(testParse_Conference); - CPPUNIT_TEST(testParse_MultipleConferences); - CPPUNIT_TEST_SUITE_END(); - - public: - StorageParserTest() {} - - void testParse_Conference() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse( - "<storage xmlns='storage:bookmarks'>" - "<conference " - "name='Council of Oberon' " - "autojoin='true' jid='council@conference.underhill.org'>" - "<nick>Puck</nick>" - "<password>MyPass</password>" - "</conference>" - "</storage>")); - - Storage* payload = dynamic_cast<Storage*>(parser.getPayload().get()); - std::vector<Storage::Conference> conferences = payload->getConferences(); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(conferences.size())); - CPPUNIT_ASSERT_EQUAL(String("Council of Oberon"), conferences[0].name); - CPPUNIT_ASSERT_EQUAL(JID("council@conference.underhill.org"), conferences[0].jid); - CPPUNIT_ASSERT(conferences[0].autoJoin); - CPPUNIT_ASSERT_EQUAL(String("Puck"), conferences[0].nick); - CPPUNIT_ASSERT_EQUAL(String("MyPass"), conferences[0].password); - } - - void testParse_MultipleConferences() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse( - "<storage xmlns='storage:bookmarks'>" - "<conference " - "name='Council of Oberon' " - "jid='council@conference.underhill.org' />" - "<conference " - "name='Tea party' " - "jid='teaparty@wonderland.lit' />" - "</storage>")); - - Storage* payload = dynamic_cast<Storage*>(parser.getPayload().get()); - std::vector<Storage::Conference> conferences = payload->getConferences(); - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(conferences.size())); - CPPUNIT_ASSERT_EQUAL(String("Council of Oberon"), conferences[0].name); - CPPUNIT_ASSERT_EQUAL(JID("council@conference.underhill.org"), conferences[0].jid); - CPPUNIT_ASSERT_EQUAL(String("Tea party"), conferences[1].name); - CPPUNIT_ASSERT_EQUAL(JID("teaparty@wonderland.lit"), conferences[1].jid); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(StorageParserTest); diff --git a/Swiften/Parser/PayloadParsers/UnitTest/VCardParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/VCardParserTest.cpp deleted file mode 100644 index d1ddba3..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/VCardParserTest.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParsers/VCardParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" - -using namespace Swift; - -class VCardParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(VCardParserTest); - CPPUNIT_TEST(testParse_Photo); - CPPUNIT_TEST(testParse_Nickname); - CPPUNIT_TEST_SUITE_END(); - - public: - VCardParserTest() {} - - void testParse_Photo() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse( - "<vCard xmlns='vcard-temp'>" - "<PHOTO>" - "<TYPE>image/jpeg</TYPE>" - "<BINVAL>" - "QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ej" - "EyMzQ1Njc4OTA=" - "</BINVAL>" - "</PHOTO>" - "</vCard>")); - - VCard* payload = dynamic_cast<VCard*>(parser.getPayload().get()); - CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), payload->getPhotoType()); - CPPUNIT_ASSERT_EQUAL(ByteArray("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"), payload->getPhoto()); - } - - void testParse_Nickname() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse( - "<vCard xmlns='vcard-temp'>" - "<NICKNAME>mynick</NICKNAME>" - "</vCard>")); - - VCard* payload = dynamic_cast<VCard*>(parser.getPayload().get()); - CPPUNIT_ASSERT_EQUAL(String("mynick"), payload->getNickname()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(VCardParserTest); diff --git a/Swiften/Parser/PayloadParsers/UnitTest/VCardUpdateParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/VCardUpdateParserTest.cpp deleted file mode 100644 index ef6c78e..0000000 --- a/Swiften/Parser/PayloadParsers/UnitTest/VCardUpdateParserTest.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParsers/VCardUpdateParser.h" -#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h" - -using namespace Swift; - -class VCardUpdateParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(VCardUpdateParserTest); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST_SUITE_END(); - - public: - VCardUpdateParserTest() {} - - void testParse() { - PayloadsParserTester parser; - - CPPUNIT_ASSERT(parser.parse( - "<x xmlns='vcard-temp:x:update'>" - "<photo>sha1-hash-of-image</photo>" - "</x>")); - - VCardUpdate* payload = dynamic_cast<VCardUpdate*>(parser.getPayload().get()); - CPPUNIT_ASSERT_EQUAL(String("sha1-hash-of-image"), payload->getPhotoHash()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(VCardUpdateParserTest); diff --git a/Swiften/Parser/PayloadParsers/VCardParser.cpp b/Swiften/Parser/PayloadParsers/VCardParser.cpp deleted file mode 100644 index 87416ab..0000000 --- a/Swiften/Parser/PayloadParsers/VCardParser.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/VCardParser.h" -#include "Swiften/Base/foreach.h" -#include "Swiften/StringCodecs/Base64.h" - -namespace Swift { - -VCardParser::VCardParser() { -} - -void VCardParser::handleStartElement(const String& element, const String&, const AttributeMap&) { - elementStack_.push_back(element); - currentText_ = ""; -} - -void VCardParser::handleEndElement(const String&, const String&) { - String elementHierarchy = getElementHierarchy(); - if (elementHierarchy == "/vCard/PHOTO/TYPE") { - getPayloadInternal()->setPhotoType(currentText_); - } - else if (elementHierarchy == "/vCard/PHOTO/BINVAL") { - getPayloadInternal()->setPhoto(Base64::decode(currentText_)); - } - else if (elementHierarchy == "/vCard/NICKNAME") { - getPayloadInternal()->setNickname(currentText_); - } - else if (elementHierarchy == "/vCard/FN") { - getPayloadInternal()->setFullName(currentText_); - } - else if (elementHierarchy == "/vCard/N/FAMILY") { - getPayloadInternal()->setFamilyName(currentText_); - } - else if (elementHierarchy == "/vCard/N/GIVEN") { - getPayloadInternal()->setGivenName(currentText_); - } - else if (elementHierarchy == "/vCard/EMAIL/USERID") { - getPayloadInternal()->setEMail(currentText_); - } - elementStack_.pop_back(); -} - -void VCardParser::handleCharacterData(const String& text) { - currentText_ += text; -} - -String VCardParser::getElementHierarchy() const { - String result; - foreach(const String& element, elementStack_) { - result += "/" + element; - } - return result; -} - -} diff --git a/Swiften/Parser/PayloadParsers/VCardParser.h b/Swiften/Parser/PayloadParsers/VCardParser.h deleted file mode 100644 index c1ed46b..0000000 --- a/Swiften/Parser/PayloadParsers/VCardParser.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include "Swiften/Elements/VCard.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class SerializingParser; - - class VCardParser : public GenericPayloadParser<VCard> { - public: - VCardParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - String getElementHierarchy() const; - - private: - std::vector<String> elementStack_; - String currentText_; - }; -} diff --git a/Swiften/Parser/PayloadParsers/VCardParserFactory.h b/Swiften/Parser/PayloadParsers/VCardParserFactory.h deleted file mode 100644 index 2d5302b..0000000 --- a/Swiften/Parser/PayloadParsers/VCardParserFactory.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include "Swiften/Parser/GenericPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/VCardParser.h" - -namespace Swift { - class VCardParserFactory : public GenericPayloadParserFactory<VCardParser> { - public: - VCardParserFactory() : GenericPayloadParserFactory<VCardParser>("vCard", "vcard-temp") {} - }; -} diff --git a/Swiften/Parser/PayloadParsers/VCardUpdateParser.cpp b/Swiften/Parser/PayloadParsers/VCardUpdateParser.cpp deleted file mode 100644 index e195eb7..0000000 --- a/Swiften/Parser/PayloadParsers/VCardUpdateParser.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "Swiften/Parser/PayloadParsers/VCardUpdateParser.h" - -namespace Swift { - -VCardUpdateParser::VCardUpdateParser() : level_(TopLevel) { -} - -void VCardUpdateParser::handleStartElement(const String&, const String&, const AttributeMap&) { - if (level_ == PayloadLevel) { - currentText_ = ""; - } - ++level_; -} - -void VCardUpdateParser::handleEndElement(const String& element, const String&) { - --level_; - if (level_ == PayloadLevel && element == "photo") { - getPayloadInternal()->setPhotoHash(currentText_); - } -} - -void VCardUpdateParser::handleCharacterData(const String& text) { - currentText_ += text; -} - -} diff --git a/Swiften/Parser/PayloadParsers/VCardUpdateParser.h b/Swiften/Parser/PayloadParsers/VCardUpdateParser.h deleted file mode 100644 index 3682ccf..0000000 --- a/Swiften/Parser/PayloadParsers/VCardUpdateParser.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include "Swiften/Elements/VCardUpdate.h" -#include "Swiften/Parser/GenericPayloadParser.h" - -namespace Swift { - class SerializingParser; - - class VCardUpdateParser : public GenericPayloadParser<VCardUpdate> { - public: - VCardUpdateParser(); - - virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String&); - virtual void handleCharacterData(const String& data); - - private: - enum Level { - TopLevel = 0, - PayloadLevel = 1 - }; - int level_; - String currentText_; - }; -} diff --git a/Swiften/Parser/PayloadParsers/VCardUpdateParserFactory.h b/Swiften/Parser/PayloadParsers/VCardUpdateParserFactory.h deleted file mode 100644 index 0a8dddf..0000000 --- a/Swiften/Parser/PayloadParsers/VCardUpdateParserFactory.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include "Swiften/Parser/GenericPayloadParserFactory.h" -#include "Swiften/Parser/PayloadParsers/VCardUpdateParser.h" - -namespace Swift { - class VCardUpdateParserFactory : public GenericPayloadParserFactory<VCardUpdateParser> { - public: - VCardUpdateParserFactory() : GenericPayloadParserFactory<VCardUpdateParser>("x", "vcard-temp:x:update") {} - }; -} diff --git a/Swiften/Parser/PlatformXMLParserFactory.cpp b/Swiften/Parser/PlatformXMLParserFactory.cpp deleted file mode 100644 index 0624a2d..0000000 --- a/Swiften/Parser/PlatformXMLParserFactory.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include "Swiften/Parser/PlatformXMLParserFactory.h" - -#include <cassert> - -#ifdef HAVE_LIBXML -#include "Swiften/Parser/LibXMLParser.h" -#else -#include "Swiften/Parser/ExpatParser.h" -#endif - - -namespace Swift { - -PlatformXMLParserFactory::PlatformXMLParserFactory() { -} - -XMLParser* PlatformXMLParserFactory::createXMLParser(XMLParserClient* client) { -#ifdef HAVE_LIBXML - return new LibXMLParser(client); -#else - return new ExpatParser(client); -#endif -} - -} diff --git a/Swiften/Parser/PlatformXMLParserFactory.h b/Swiften/Parser/PlatformXMLParserFactory.h deleted file mode 100644 index 28b1657..0000000 --- a/Swiften/Parser/PlatformXMLParserFactory.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef SWIFTEN_PlatformXMLParserFactory_H -#define SWIFTEN_PlatformXMLParserFactory_H - -#include "Swiften/Parser/XMLParserFactory.h" - -namespace Swift { - class PlatformXMLParserFactory : public XMLParserFactory { - public: - PlatformXMLParserFactory(); - - virtual XMLParser* createXMLParser(XMLParserClient*); - }; -} - -#endif diff --git a/Swiften/Parser/PresenceParser.cpp b/Swiften/Parser/PresenceParser.cpp deleted file mode 100644 index 72cdd4c..0000000 --- a/Swiften/Parser/PresenceParser.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include <iostream> - -#include "Swiften/Parser/PresenceParser.h" - -namespace Swift { - -PresenceParser::PresenceParser(PayloadParserFactoryCollection* factories) : - GenericStanzaParser<Presence>(factories) { -} - -void PresenceParser::handleStanzaAttributes(const AttributeMap& attributes) { - AttributeMap::const_iterator type = attributes.find("type"); - if (type != attributes.end()) { - if (type->second == "unavailable") { - getStanzaGeneric()->setType(Presence::Unavailable); - } - else if (type->second == "probe") { - getStanzaGeneric()->setType(Presence::Probe); - } - else if (type->second == "subscribe") { - getStanzaGeneric()->setType(Presence::Subscribe); - } - else if (type->second == "subscribed") { - getStanzaGeneric()->setType(Presence::Subscribed); - } - else if (type->second == "unsubscribe") { - getStanzaGeneric()->setType(Presence::Unsubscribe); - } - else if (type->second == "unsubscribed") { - getStanzaGeneric()->setType(Presence::Unsubscribed); - } - else if (type->second == "error") { - getStanzaGeneric()->setType(Presence::Error); - } - else { - std::cerr << "Unknown Presence type: " << type->second << std::endl; - getStanzaGeneric()->setType(Presence::Available); - } - } - else { - getStanzaGeneric()->setType(Presence::Available); - } -} - -} diff --git a/Swiften/Parser/PresenceParser.h b/Swiften/Parser/PresenceParser.h deleted file mode 100644 index b3ba445..0000000 --- a/Swiften/Parser/PresenceParser.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef SWIFTEN_PresenceParser_H -#define SWIFTEN_PresenceParser_H - -#include "Swiften/Parser/GenericStanzaParser.h" -#include "Swiften/Elements/Presence.h" - -namespace Swift { - class PresenceParser : public GenericStanzaParser<Presence> { - public: - PresenceParser(PayloadParserFactoryCollection* factories); - - private: - virtual void handleStanzaAttributes(const AttributeMap&); - }; -} - -#endif diff --git a/Swiften/Parser/SConscript b/Swiften/Parser/SConscript deleted file mode 100644 index 7d93d8b..0000000 --- a/Swiften/Parser/SConscript +++ /dev/null @@ -1,58 +0,0 @@ -Import("swiften_env") - -myenv = swiften_env.Clone() -myenv.MergeFlags(swiften_env["BOOST_FLAGS"]) -myenv.MergeFlags(swiften_env.get("LIBXML_FLAGS", "")) -myenv.MergeFlags(swiften_env.get("EXPAT_FLAGS", "")) - -sources = [ - "AuthRequestParser.cpp", - "AuthChallengeParser.cpp", - "AuthSuccessParser.cpp", - "AuthResponseParser.cpp", - "CompressParser.cpp", - "ElementParser.cpp", - "IQParser.cpp", - "MessageParser.cpp", - "PayloadParser.cpp", - "PayloadParserFactory.cpp", - "PayloadParserFactoryCollection.cpp", - "PayloadParsers/BodyParser.cpp", - "PayloadParsers/ChatStateParser.cpp", - "PayloadParsers/DiscoInfoParser.cpp", - "PayloadParsers/ErrorParser.cpp", - "PayloadParsers/FullPayloadParserFactoryCollection.cpp", - "PayloadParsers/PriorityParser.cpp", - "PayloadParsers/PrivateStorageParser.cpp", - "PayloadParsers/RawXMLPayloadParser.cpp", - "PayloadParsers/ResourceBindParser.cpp", - "PayloadParsers/RosterParser.cpp", - "PayloadParsers/SecurityLabelParser.cpp", - "PayloadParsers/SecurityLabelsCatalogParser.cpp", - "PayloadParsers/SoftwareVersionParser.cpp", - "PayloadParsers/StorageParser.cpp", - "PayloadParsers/StatusParser.cpp", - "PayloadParsers/StatusShowParser.cpp", - "PayloadParsers/VCardParser.cpp", - "PayloadParsers/VCardUpdateParser.cpp", - "PlatformXMLParserFactory.cpp", - "PresenceParser.cpp", - "SerializingParser.cpp", - "StanzaParser.cpp", - "StreamFeaturesParser.cpp", - "XMLParser.cpp", - "XMLParserClient.cpp", - "XMLParserFactory.cpp", - "XMPPParser.cpp", - "XMPPParserClient.cpp", - ] - -if myenv.get("HAVE_EXPAT", 0) : - myenv.Append(CPPDEFINES = "HAVE_EXPAT") - sources += ["ExpatParser.cpp"] -if myenv.get("HAVE_LIBXML", 0) : - myenv.Append(CPPDEFINES = "HAVE_LIBXML") - sources += ["LibXMLParser.cpp"] - -objects = myenv.StaticObject(sources) -swiften_env.Append(SWIFTEN_OBJECTS = [objects]) diff --git a/Swiften/Parser/SerializingParser.cpp b/Swiften/Parser/SerializingParser.cpp deleted file mode 100644 index f69e732..0000000 --- a/Swiften/Parser/SerializingParser.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include "Swiften/Parser/SerializingParser.h" -#include "Swiften/Serializer/XML/XMLTextNode.h" -#include "Swiften/Base/foreach.h" -#include <iostream> - -namespace Swift { - -SerializingParser::SerializingParser() { -} - -void SerializingParser::handleStartElement(const String& tag, const String& ns, const AttributeMap& attributes) { - boost::shared_ptr<XMLElement> element(new XMLElement(tag, ns)); - for (AttributeMap::const_iterator i = attributes.begin(); i != attributes.end(); ++i) { - element->setAttribute((*i).first, (*i).second); - } - - if (elementStack_.empty()) { - rootElement_ = element; - } - else { - (*(elementStack_.end() - 1))->addNode(element); - } - elementStack_.push_back(element); -} - -void SerializingParser::handleEndElement(const String&, const String&) { - assert(!elementStack_.empty()); - elementStack_.pop_back(); -} - -void SerializingParser::handleCharacterData(const String& data) { - if (!elementStack_.empty()) { - (*(elementStack_.end()-1))->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(data))); - } -} - -String SerializingParser::getResult() const { - return (rootElement_ ? rootElement_->serialize() : ""); -} - -} diff --git a/Swiften/Parser/SerializingParser.h b/Swiften/Parser/SerializingParser.h deleted file mode 100644 index b1d4575..0000000 --- a/Swiften/Parser/SerializingParser.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef SWIFTEN_SerializingParser_H -#define SWIFTEN_SerializingParser_H - -#include "Swiften/Base/String.h" -#include "Swiften/Parser/AttributeMap.h" -#include "Swiften/Serializer/XML/XMLElement.h" - -namespace Swift { - class SerializingParser { - public: - SerializingParser(); - - void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes); - void handleEndElement(const String& element, const String& ns); - void handleCharacterData(const String& data); - - String getResult() const; - - private: - std::vector< boost::shared_ptr<XMLElement> > elementStack_; - boost::shared_ptr<XMLElement> rootElement_; - }; -} - -#endif diff --git a/Swiften/Parser/StanzaParser.cpp b/Swiften/Parser/StanzaParser.cpp deleted file mode 100644 index 952265c..0000000 --- a/Swiften/Parser/StanzaParser.cpp +++ /dev/null @@ -1,78 +0,0 @@ -#include "Swiften/Parser/StanzaParser.h" - -#include <iostream> -#include <cassert> - -#include "Swiften/Parser/PayloadParser.h" -#include "Swiften/Parser/PayloadParserFactory.h" -#include "Swiften/Parser/PayloadParserFactoryCollection.h" -#include "Swiften/Parser/UnknownPayloadParser.h" - -namespace Swift { - -StanzaParser::StanzaParser(PayloadParserFactoryCollection* factories) : - currentDepth_(0), factories_(factories) { -} - -StanzaParser::~StanzaParser() { -} - -void StanzaParser::handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) { - if (inStanza()) { - if (!inPayload()) { - assert(!currentPayloadParser_.get()); - PayloadParserFactory* payloadParserFactory = factories_->getPayloadParserFactory(element, ns, attributes); - if (payloadParserFactory) { - currentPayloadParser_.reset(payloadParserFactory->createPayloadParser()); - } - else { - currentPayloadParser_.reset(new UnknownPayloadParser()); - } - } - assert(currentPayloadParser_.get()); - currentPayloadParser_->handleStartElement(element, ns, attributes); - } - else { - AttributeMap::const_iterator from = attributes.find("from"); - if (from != attributes.end()) { - getStanza()->setFrom(JID(from->second)); - } - AttributeMap::const_iterator to = attributes.find("to"); - if (to != attributes.end()) { - getStanza()->setTo(JID(to->second)); - } - AttributeMap::const_iterator id = attributes.find("id"); - if (id != attributes.end()) { - getStanza()->setID(id->second); - } - handleStanzaAttributes(attributes); - } - ++currentDepth_; -} - -void StanzaParser::handleEndElement(const String& element, const String& ns) { - assert(inStanza()); - if (inPayload()) { - assert(currentPayloadParser_.get()); - currentPayloadParser_->handleEndElement(element, ns); - --currentDepth_; - if (!inPayload()) { - boost::shared_ptr<Payload> payload(currentPayloadParser_->getPayload()); - if (payload) { - getStanza()->addPayload(payload); - } - currentPayloadParser_.reset(); - } - } - else { - --currentDepth_; - } -} - -void StanzaParser::handleCharacterData(const String& data) { - if (currentPayloadParser_.get()) { - currentPayloadParser_->handleCharacterData(data); - } -} - -} diff --git a/Swiften/Parser/StanzaParser.h b/Swiften/Parser/StanzaParser.h deleted file mode 100644 index c6cf753..0000000 --- a/Swiften/Parser/StanzaParser.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef SWIFTEN_StanzaParser_H -#define SWIFTEN_StanzaParser_H - -#include <boost/noncopyable.hpp> - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Stanza.h" -#include "Swiften/Parser/ElementParser.h" -#include "Swiften/Parser/AttributeMap.h" - -namespace Swift { - class PayloadParser; - class PayloadParserFactoryCollection; - - class StanzaParser : public ElementParser, public boost::noncopyable { - public: - StanzaParser(PayloadParserFactoryCollection* factories); - ~StanzaParser(); - - void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes); - void handleEndElement(const String& element, const String& ns); - void handleCharacterData(const String& data); - - virtual boost::shared_ptr<Element> getElement() const = 0; - virtual void handleStanzaAttributes(const AttributeMap&) {} - - virtual boost::shared_ptr<Stanza> getStanza() const { - return boost::dynamic_pointer_cast<Stanza>(getElement()); - } - - private: - bool inPayload() const { - return currentDepth_ > 1; - } - - bool inStanza() const { - return currentDepth_ > 0; - } - - - private: - int currentDepth_; - PayloadParserFactoryCollection* factories_; - std::auto_ptr<PayloadParser> currentPayloadParser_; - }; -} - -#endif diff --git a/Swiften/Parser/StartTLSFailureParser.h b/Swiften/Parser/StartTLSFailureParser.h deleted file mode 100644 index c955ca0..0000000 --- a/Swiften/Parser/StartTLSFailureParser.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_StartTLSFailureParser_H -#define SWIFTEN_StartTLSFailureParser_H - -#include "Swiften/Parser/GenericElementParser.h" -#include "Swiften/Elements/StartTLSFailure.h" - -namespace Swift { - class StartTLSFailureParser : public GenericElementParser<StartTLSFailure> { - public: - StartTLSFailureParser() : GenericElementParser<StartTLSFailure>() {} - }; -} - -#endif diff --git a/Swiften/Parser/StartTLSParser.h b/Swiften/Parser/StartTLSParser.h deleted file mode 100644 index afacec2..0000000 --- a/Swiften/Parser/StartTLSParser.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_StartTLSParser_H -#define SWIFTEN_StartTLSParser_H - -#include "Swiften/Parser/GenericElementParser.h" -#include "Swiften/Elements/StartTLSRequest.h" - -namespace Swift { - class StartTLSParser : public GenericElementParser<StartTLSRequest> { - public: - StartTLSParser() : GenericElementParser<StartTLSRequest>() {} - }; -} - -#endif diff --git a/Swiften/Parser/StreamFeaturesParser.cpp b/Swiften/Parser/StreamFeaturesParser.cpp deleted file mode 100644 index 5072e7c..0000000 --- a/Swiften/Parser/StreamFeaturesParser.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "Swiften/Parser/StreamFeaturesParser.h" - -namespace Swift { - -StreamFeaturesParser::StreamFeaturesParser() : GenericElementParser<StreamFeatures>(), currentDepth_(0), inMechanisms_(false), inMechanism_(false), inCompression_(false), inCompressionMethod_(false) { -} - -void StreamFeaturesParser::handleStartElement(const String& element, const String& ns, const AttributeMap&) { - if (currentDepth_ == 1) { - if (element == "starttls" && ns == "urn:ietf:params:xml:ns:xmpp-tls") { - getElementGeneric()->setHasStartTLS(); - } - else if (element == "session" && ns == "urn:ietf:params:xml:ns:xmpp-session") { - getElementGeneric()->setHasSession(); - } - else if (element == "bind" && ns == "urn:ietf:params:xml:ns:xmpp-bind") { - getElementGeneric()->setHasResourceBind(); - } - else if (element == "mechanisms" && ns == "urn:ietf:params:xml:ns:xmpp-sasl") { - inMechanisms_ = true; - } - else if (element == "compression" && ns == "http://jabber.org/features/compress") { - inCompression_ = true; - } - } - else if (currentDepth_ == 2) { - if (inCompression_ && element == "method") { - inCompressionMethod_ = true; - currentText_ = ""; - } - else if (inMechanisms_ && element == "mechanism") { - inMechanism_ = true; - currentText_ = ""; - } - } - ++currentDepth_; -} - -void StreamFeaturesParser::handleEndElement(const String&, const String&) { - --currentDepth_; - if (currentDepth_ == 1) { - inCompression_ = false; - inMechanisms_ = false; - } - else if (currentDepth_ == 2) { - if (inCompressionMethod_) { - getElementGeneric()->addCompressionMethod(currentText_); - inCompressionMethod_ = false; - } - else if (inMechanism_) { - getElementGeneric()->addAuthenticationMechanism(currentText_); - inMechanism_ = false; - } - } -} - -void StreamFeaturesParser::handleCharacterData(const String& data) { - currentText_ += data; -} - -} diff --git a/Swiften/Parser/StreamFeaturesParser.h b/Swiften/Parser/StreamFeaturesParser.h deleted file mode 100644 index 184a7e6..0000000 --- a/Swiften/Parser/StreamFeaturesParser.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef SWIFTEN_STREAMFEATURESPARSER_H -#define SWIFTEN_STREAMFEATURESPARSER_H - -#include "Swiften/Base/String.h" -#include "Swiften/Parser/GenericElementParser.h" -#include "Swiften/Elements/StreamFeatures.h" - -namespace Swift { - class StreamFeaturesParser : public GenericElementParser<StreamFeatures> { - public: - StreamFeaturesParser(); - - private: - void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes); - void handleEndElement(const String& element, const String& ns); - void handleCharacterData(const String& data); - - private: - int currentDepth_; - String currentText_; - bool inMechanisms_; - bool inMechanism_; - bool inCompression_; - bool inCompressionMethod_; - }; -} - -#endif diff --git a/Swiften/Parser/TLSProceedParser.h b/Swiften/Parser/TLSProceedParser.h deleted file mode 100644 index 2ad5438..0000000 --- a/Swiften/Parser/TLSProceedParser.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_TLSProceedParser_H -#define SWIFTEN_TLSProceedParser_H - -#include "Swiften/Parser/GenericElementParser.h" -#include "Swiften/Elements/TLSProceed.h" - -namespace Swift { - class TLSProceedParser : public GenericElementParser<TLSProceed> { - public: - TLSProceedParser() : GenericElementParser<TLSProceed>() {} - }; -} - -#endif diff --git a/Swiften/Parser/UnitTest/AttributeMapTest.cpp b/Swiften/Parser/UnitTest/AttributeMapTest.cpp deleted file mode 100644 index 17bda95..0000000 --- a/Swiften/Parser/UnitTest/AttributeMapTest.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/AttributeMap.h" - -using namespace Swift; - -class AttributeMapTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(AttributeMapTest); - CPPUNIT_TEST(testGetBoolAttribute_True); - CPPUNIT_TEST(testGetBoolAttribute_1); - CPPUNIT_TEST(testGetBoolAttribute_False); - CPPUNIT_TEST(testGetBoolAttribute_0); - CPPUNIT_TEST(testGetBoolAttribute_Invalid); - CPPUNIT_TEST(testGetBoolAttribute_UnknownWithDefaultTrue); - CPPUNIT_TEST(testGetBoolAttribute_UnknownWithDefaultFalse); - CPPUNIT_TEST_SUITE_END(); - - public: - AttributeMapTest() {} - - void testGetBoolAttribute_True() { - AttributeMap testling; - testling["foo"] = "true"; - - CPPUNIT_ASSERT(testling.getBoolAttribute("foo")); - } - - void testGetBoolAttribute_1() { - AttributeMap testling; - testling["foo"] = "1"; - - CPPUNIT_ASSERT(testling.getBoolAttribute("foo")); - } - - void testGetBoolAttribute_False() { - AttributeMap testling; - testling["foo"] = "false"; - - CPPUNIT_ASSERT(!testling.getBoolAttribute("foo", true)); - } - - void testGetBoolAttribute_0() { - AttributeMap testling; - testling["foo"] = "0"; - - CPPUNIT_ASSERT(!testling.getBoolAttribute("foo", true)); - } - - void testGetBoolAttribute_Invalid() { - AttributeMap testling; - testling["foo"] = "bla"; - - CPPUNIT_ASSERT(!testling.getBoolAttribute("foo", true)); - } - - void testGetBoolAttribute_UnknownWithDefaultTrue() { - AttributeMap testling; - - CPPUNIT_ASSERT(testling.getBoolAttribute("foo", true)); - } - - void testGetBoolAttribute_UnknownWithDefaultFalse() { - AttributeMap testling; - - CPPUNIT_ASSERT(!testling.getBoolAttribute("foo", false)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(AttributeMapTest); diff --git a/Swiften/Parser/UnitTest/ElementParserTester.h b/Swiften/Parser/UnitTest/ElementParserTester.h deleted file mode 100644 index 4d84c44..0000000 --- a/Swiften/Parser/UnitTest/ElementParserTester.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef SWIFTEN_ElementParserTester_H -#define SWIFTEN_ElementParserTester_H - -#include "Swiften/Parser/UnitTest/ParserTester.h" - -namespace Swift { - typedef ParserTester<ElementParser> ElementParserTester; -} - -#endif diff --git a/Swiften/Parser/UnitTest/IQParserTest.cpp b/Swiften/Parser/UnitTest/IQParserTest.cpp deleted file mode 100644 index 22b0adc..0000000 --- a/Swiften/Parser/UnitTest/IQParserTest.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/IQParser.h" -#include "Swiften/Parser/PayloadParserFactoryCollection.h" -#include "Swiften/Parser/UnitTest/StanzaParserTester.h" - -using namespace Swift; - -class IQParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(IQParserTest); - CPPUNIT_TEST(testParse_Set); - CPPUNIT_TEST(testParse_Get); - CPPUNIT_TEST(testParse_Result); - CPPUNIT_TEST(testParse_Error); - CPPUNIT_TEST_SUITE_END(); - - public: - IQParserTest() {} - - void setUp() { - factoryCollection_ = new PayloadParserFactoryCollection(); - } - - void tearDown() { - delete factoryCollection_; - } - - void testParse_Set() { - IQParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<iq type=\"set\"/>")); - - CPPUNIT_ASSERT_EQUAL(IQ::Set, testling.getStanzaGeneric()->getType()); - } - - void testParse_Get() { - IQParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<iq type=\"get\"/>")); - - CPPUNIT_ASSERT_EQUAL(IQ::Get, testling.getStanzaGeneric()->getType()); - } - - void testParse_Result() { - IQParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<iq type=\"result\"/>")); - - CPPUNIT_ASSERT_EQUAL(IQ::Result, testling.getStanzaGeneric()->getType()); - } - - void testParse_Error() { - IQParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<iq type=\"error\"/>")); - - CPPUNIT_ASSERT_EQUAL(IQ::Error, testling.getStanzaGeneric()->getType()); - } - - private: - PayloadParserFactoryCollection* factoryCollection_; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(IQParserTest); diff --git a/Swiften/Parser/UnitTest/MessageParserTest.cpp b/Swiften/Parser/UnitTest/MessageParserTest.cpp deleted file mode 100644 index 61a8d20..0000000 --- a/Swiften/Parser/UnitTest/MessageParserTest.cpp +++ /dev/null @@ -1,80 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/MessageParser.h" -#include "Swiften/Parser/PayloadParserFactoryCollection.h" -#include "Swiften/Parser/UnitTest/StanzaParserTester.h" - -using namespace Swift; - -class MessageParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(MessageParserTest); - CPPUNIT_TEST(testParse_Normal); - CPPUNIT_TEST(testParse_Chat); - CPPUNIT_TEST(testParse_Error); - CPPUNIT_TEST(testParse_Groupchat); - CPPUNIT_TEST(testParse_Headline); - CPPUNIT_TEST_SUITE_END(); - - public: - MessageParserTest() {} - - void setUp() { - factoryCollection_ = new PayloadParserFactoryCollection(); - } - - void tearDown() { - delete factoryCollection_; - } - - void testParse_Chat() { - MessageParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<message type=\"chat\"/>")); - - CPPUNIT_ASSERT_EQUAL(Message::Chat, testling.getStanzaGeneric()->getType()); - } - - void testParse_Groupchat() { - MessageParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<message type=\"groupchat\"/>")); - - CPPUNIT_ASSERT_EQUAL(Message::Groupchat, testling.getStanzaGeneric()->getType()); - } - - void testParse_Error() { - MessageParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<message type=\"error\"/>")); - - CPPUNIT_ASSERT_EQUAL(Message::Error, testling.getStanzaGeneric()->getType()); - } - - void testParse_Headline() { - MessageParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<message type=\"headline\"/>")); - - CPPUNIT_ASSERT_EQUAL(Message::Headline, testling.getStanzaGeneric()->getType()); - } - - void testParse_Normal() { - MessageParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<message/>")); - - CPPUNIT_ASSERT_EQUAL(Message::Normal, testling.getStanzaGeneric()->getType()); - } - - private: - PayloadParserFactoryCollection* factoryCollection_; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(MessageParserTest); diff --git a/Swiften/Parser/UnitTest/ParserTester.h b/Swiften/Parser/UnitTest/ParserTester.h deleted file mode 100644 index 7aacc8e..0000000 --- a/Swiften/Parser/UnitTest/ParserTester.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef SWIFTEN_ParserTester_H -#define SWIFTEN_ParserTester_H - -#include "Swiften/Parser/XMLParserClient.h" -#include "Swiften/Parser/PlatformXMLParserFactory.h" -#include "Swiften/Parser/XMLParser.h" - -namespace Swift { - class XMLParser; - - template<typename ParserType> - class ParserTester : public XMLParserClient { - public: - ParserTester(ParserType* parser) : parser_(parser) { - xmlParser_ = PlatformXMLParserFactory().createXMLParser(this); - } - - ~ParserTester() { - delete xmlParser_; - } - - bool parse(const String& data) { - return xmlParser_->parse(data); - } - - virtual void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) { - parser_->handleStartElement(element, ns, attributes); - } - - virtual void handleEndElement(const String& element, const String& ns) { - parser_->handleEndElement(element, ns); - } - - virtual void handleCharacterData(const String& data) { - parser_->handleCharacterData(data); - } - - private: - XMLParser* xmlParser_; - ParserType* parser_; - }; -} - -#endif diff --git a/Swiften/Parser/UnitTest/PayloadParserFactoryCollectionTest.cpp b/Swiften/Parser/UnitTest/PayloadParserFactoryCollectionTest.cpp deleted file mode 100644 index bfd2c2c..0000000 --- a/Swiften/Parser/UnitTest/PayloadParserFactoryCollectionTest.cpp +++ /dev/null @@ -1,97 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PayloadParserFactoryCollection.h" -#include "Swiften/Parser/PayloadParserFactory.h" - -using namespace Swift; - -class PayloadParserFactoryCollectionTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(PayloadParserFactoryCollectionTest); - CPPUNIT_TEST(testGetPayloadParserFactory); - CPPUNIT_TEST(testGetPayloadParserFactory_NoMatchingFactory); - CPPUNIT_TEST(testGetPayloadParserFactory_TwoMatchingFactories); - CPPUNIT_TEST(testGetPayloadParserFactory_MatchWithDefaultFactory); - CPPUNIT_TEST(testGetPayloadParserFactory_NoMatchWithDefaultFactory); - CPPUNIT_TEST_SUITE_END(); - - public: - PayloadParserFactoryCollectionTest() {} - - void setUp() { - } - - void tearDown() { - } - - void testGetPayloadParserFactory() { - PayloadParserFactoryCollection testling; - DummyFactory factory1("foo"); - testling.addFactory(&factory1); - DummyFactory factory2("bar"); - testling.addFactory(&factory2); - DummyFactory factory3("baz"); - testling.addFactory(&factory3); - - PayloadParserFactory* factory = testling.getPayloadParserFactory("bar", "", AttributeMap()); - - CPPUNIT_ASSERT(factory == &factory2); - } - - void testGetPayloadParserFactory_NoMatchingFactory() { - PayloadParserFactoryCollection testling; - DummyFactory factory("foo"); - - CPPUNIT_ASSERT(!testling.getPayloadParserFactory("bar", "", AttributeMap())); - } - - void testGetPayloadParserFactory_TwoMatchingFactories() { - PayloadParserFactoryCollection testling; - DummyFactory factory1("foo"); - testling.addFactory(&factory1); - DummyFactory factory2("foo"); - testling.addFactory(&factory2); - - PayloadParserFactory* factory = testling.getPayloadParserFactory("foo", "", AttributeMap()); - - CPPUNIT_ASSERT(factory == &factory2); - } - - void testGetPayloadParserFactory_MatchWithDefaultFactory() { - PayloadParserFactoryCollection testling; - DummyFactory factory1("foo"); - testling.addFactory(&factory1); - DummyFactory factory2; - testling.setDefaultFactory(&factory2); - - PayloadParserFactory* factory = testling.getPayloadParserFactory("foo", "", AttributeMap()); - - CPPUNIT_ASSERT(factory == &factory1); - } - - void testGetPayloadParserFactory_NoMatchWithDefaultFactory() { - PayloadParserFactoryCollection testling; - DummyFactory factory1("foo"); - testling.addFactory(&factory1); - DummyFactory factory2; - testling.setDefaultFactory(&factory2); - - PayloadParserFactory* factory = testling.getPayloadParserFactory("baz", "", AttributeMap()); - - CPPUNIT_ASSERT(factory == &factory2); - } - - - private: - struct DummyFactory : public PayloadParserFactory { - DummyFactory(const String& element = "") : element(element) {} - virtual bool canParse(const String& e, const String&, const AttributeMap&) const { - return element.isEmpty() ? true : element == e; - } - virtual PayloadParser* createPayloadParser() { return NULL; } - String element; - }; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(PayloadParserFactoryCollectionTest); diff --git a/Swiften/Parser/UnitTest/PresenceParserTest.cpp b/Swiften/Parser/UnitTest/PresenceParserTest.cpp deleted file mode 100644 index 5305161..0000000 --- a/Swiften/Parser/UnitTest/PresenceParserTest.cpp +++ /dev/null @@ -1,110 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/PresenceParser.h" -#include "Swiften/Parser/PayloadParserFactoryCollection.h" -#include "Swiften/Parser/UnitTest/StanzaParserTester.h" - -using namespace Swift; - -class PresenceParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(PresenceParserTest); - CPPUNIT_TEST(testParse_Available); - CPPUNIT_TEST(testParse_Unavailable); - CPPUNIT_TEST(testParse_Subscribe); - CPPUNIT_TEST(testParse_Subscribed); - CPPUNIT_TEST(testParse_Unsubscribe); - CPPUNIT_TEST(testParse_Unsubscribed); - CPPUNIT_TEST(testParse_Probe); - CPPUNIT_TEST(testParse_Error); - CPPUNIT_TEST_SUITE_END(); - - public: - PresenceParserTest() {} - - void setUp() { - factoryCollection_ = new PayloadParserFactoryCollection(); - } - - void tearDown() { - delete factoryCollection_; - } - - void testParse_Available() { - PresenceParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<presence/>")); - - CPPUNIT_ASSERT_EQUAL(Presence::Available, testling.getStanzaGeneric()->getType()); - } - - void testParse_Unavailable() { - PresenceParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<presence type=\"unavailable\"/>")); - - CPPUNIT_ASSERT_EQUAL(Presence::Unavailable, testling.getStanzaGeneric()->getType()); - } - - void testParse_Probe() { - PresenceParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<presence type=\"probe\"/>")); - - CPPUNIT_ASSERT_EQUAL(Presence::Probe, testling.getStanzaGeneric()->getType()); - } - - void testParse_Subscribe() { - PresenceParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<presence type=\"subscribe\"/>")); - - CPPUNIT_ASSERT_EQUAL(Presence::Subscribe, testling.getStanzaGeneric()->getType()); - } - - void testParse_Subscribed() { - PresenceParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<presence type=\"subscribed\"/>")); - - CPPUNIT_ASSERT_EQUAL(Presence::Subscribed, testling.getStanzaGeneric()->getType()); - } - - void testParse_Unsubscribe() { - PresenceParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<presence type=\"unsubscribe\"/>")); - - CPPUNIT_ASSERT_EQUAL(Presence::Unsubscribe, testling.getStanzaGeneric()->getType()); - } - - void testParse_Unsubscribed() { - PresenceParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<presence type=\"unsubscribed\"/>")); - - CPPUNIT_ASSERT_EQUAL(Presence::Unsubscribed, testling.getStanzaGeneric()->getType()); - } - - void testParse_Error() { - PresenceParser testling(factoryCollection_); - StanzaParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse("<presence type=\"error\"/>")); - - CPPUNIT_ASSERT_EQUAL(Presence::Error, testling.getStanzaGeneric()->getType()); - } - - private: - PayloadParserFactoryCollection* factoryCollection_; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(PresenceParserTest); diff --git a/Swiften/Parser/UnitTest/SerializingParserTest.cpp b/Swiften/Parser/UnitTest/SerializingParserTest.cpp deleted file mode 100644 index e08a3d0..0000000 --- a/Swiften/Parser/UnitTest/SerializingParserTest.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/SerializingParser.h" -#include "Swiften/Parser/UnitTest/StanzaParserTester.h" - -using namespace Swift; - -class SerializingParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(SerializingParserTest); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST(testParse_Empty); - CPPUNIT_TEST(testParse_ToplevelCharacterData); - CPPUNIT_TEST_SUITE_END(); - - public: - SerializingParserTest() {} - - void testParse() { - SerializingParser testling; - ParserTester<SerializingParser> parser(&testling); - - CPPUNIT_ASSERT(parser.parse( - "<message type=\"chat\" to=\"me@foo.com\">" - "<body>Hello<&World</body>" - "<html xmlns=\"http://www.w3.org/1999/xhtml\">" - "foo<b>bar</b>baz" - "</html>" - "</message>")); - - CPPUNIT_ASSERT_EQUAL(String( - "<message to=\"me@foo.com\" type=\"chat\">" - "<body>Hello<&World</body>" - "<html xmlns=\"http://www.w3.org/1999/xhtml\">foo<b xmlns=\"http://www.w3.org/1999/xhtml\">bar</b>baz</html>" - "</message>"), testling.getResult()); - } - - void testParse_Empty() { - SerializingParser testling; - - CPPUNIT_ASSERT_EQUAL(String(""), testling.getResult()); - } - - void testParse_ToplevelCharacterData() { - SerializingParser testling; - - AttributeMap attributes; - testling.handleCharacterData("foo"); - testling.handleStartElement("message", "", attributes); - testling.handleEndElement("message", ""); - testling.handleCharacterData("bar"); - - CPPUNIT_ASSERT_EQUAL(String("<message/>"), testling.getResult()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(SerializingParserTest); diff --git a/Swiften/Parser/UnitTest/StanzaParserTest.cpp b/Swiften/Parser/UnitTest/StanzaParserTest.cpp deleted file mode 100644 index 3cb1879..0000000 --- a/Swiften/Parser/UnitTest/StanzaParserTest.cpp +++ /dev/null @@ -1,209 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/StanzaParser.h" -#include "Swiften/Parser/GenericPayloadParser.h" -#include "Swiften/Parser/PayloadParserFactory.h" -#include "Swiften/Parser/PayloadParserFactoryCollection.h" -#include "Swiften/Elements/Stanza.h" -#include "Swiften/Elements/Payload.h" - -using namespace Swift; - -class StanzaParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(StanzaParserTest); - CPPUNIT_TEST(testHandleEndElement_OnePayload); - CPPUNIT_TEST(testHandleEndElement_MultiplePayloads); - CPPUNIT_TEST(testHandleEndElement_StrayCharacterData); - CPPUNIT_TEST(testHandleEndElement_UnknownPayload); - CPPUNIT_TEST(testHandleParse_BasicAttributes); - CPPUNIT_TEST_SUITE_END(); - - public: - StanzaParserTest() {} - - void setUp() { - factoryCollection_ = new PayloadParserFactoryCollection(); - factoryCollection_->addFactory(&factory1_); - factoryCollection_->addFactory(&factory2_); - } - - void tearDown() { - delete factoryCollection_; - } - - void testHandleEndElement_OnePayload() { - MyStanzaParser testling(factoryCollection_); - - AttributeMap attributes; - attributes["foo"] = "fum"; - attributes["bar"] = "baz"; - testling.handleStartElement("mystanza", "", attributes); - testling.handleStartElement("mypayload1", "", attributes); - testling.handleStartElement("child", "", attributes); - testling.handleEndElement("child", ""); - testling.handleEndElement("mypayload1", ""); - testling.handleEndElement("mystanza", ""); - - CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload1>()); - CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload1>()->hasChild); - } - - void testHandleEndElement_MultiplePayloads() { - MyStanzaParser testling(factoryCollection_); - - AttributeMap attributes; - testling.handleStartElement("mystanza", "", attributes); - testling.handleStartElement("mypayload1", "", attributes); - testling.handleEndElement("mypayload1", ""); - testling.handleStartElement("mypayload2", "", attributes); - testling.handleEndElement("mypayload2", ""); - testling.handleEndElement("mystanza", ""); - - CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload1>()); - CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload2>()); - } - - void testHandleEndElement_StrayCharacterData() { - MyStanzaParser testling(factoryCollection_); - - AttributeMap attributes; - testling.handleStartElement("mystanza", "", attributes); - testling.handleStartElement("mypayload1", "", attributes); - testling.handleEndElement("mypayload1", ""); - testling.handleCharacterData("bla"); - testling.handleStartElement("mypayload2", "", attributes); - testling.handleEndElement("mypayload2", ""); - testling.handleEndElement("mystanza", ""); - - CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload1>()); - CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload2>()); - } - - void testHandleEndElement_UnknownPayload() { - MyStanzaParser testling(factoryCollection_); - - AttributeMap attributes; - testling.handleStartElement("mystanza", "", attributes); - testling.handleStartElement("mypayload1", "", attributes); - testling.handleEndElement("mypayload1", ""); - testling.handleStartElement("unknown-payload", "", attributes); - testling.handleStartElement("unknown-payload-child", "", attributes); - testling.handleEndElement("unknown-payload-child", ""); - testling.handleEndElement("unknown-payload", ""); - testling.handleStartElement("mypayload2", "", attributes); - testling.handleEndElement("mypayload2", ""); - testling.handleEndElement("mystanza", ""); - - CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload1>()); - CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload2>()); - } - - void testHandleParse_BasicAttributes() { - MyStanzaParser testling(factoryCollection_); - - AttributeMap attributes; - attributes["to"] = "foo@example.com/blo"; - attributes["from"] = "bar@example.com/baz"; - attributes["id"] = "id-123"; - testling.handleStartElement("mystanza", "", attributes); - testling.handleEndElement("mypayload1", ""); - - CPPUNIT_ASSERT_EQUAL(JID("foo@example.com/blo"), testling.getStanza()->getTo()); - CPPUNIT_ASSERT_EQUAL(JID("bar@example.com/baz"), testling.getStanza()->getFrom()); - CPPUNIT_ASSERT_EQUAL(String("id-123"), testling.getStanza()->getID()); - } - - private: - class MyPayload1 : public Payload - { - public: - MyPayload1() : hasChild(false) {} - - bool hasChild; - }; - - class MyPayload1Parser : public GenericPayloadParser<MyPayload1> - { - public: - MyPayload1Parser() {} - - virtual void handleStartElement(const String& element, const String&, const AttributeMap&) { - if (element != "mypayload1") { - getPayloadInternal()->hasChild = true; - } - } - - virtual void handleEndElement(const String&, const String&) {} - virtual void handleCharacterData(const String&) {} - }; - - class MyPayload1ParserFactory : public PayloadParserFactory - { - public: - MyPayload1ParserFactory() {} - - PayloadParser* createPayloadParser() { return new MyPayload1Parser(); } - - bool canParse(const String& element, const String&, const AttributeMap&) const { - return element == "mypayload1"; - } - }; - - class MyPayload2 : public Payload - { - public: - MyPayload2() {} - }; - - class MyPayload2Parser : public GenericPayloadParser<MyPayload2> - { - public: - MyPayload2Parser() {} - - virtual void handleStartElement(const String&, const String&, const AttributeMap&) {} - virtual void handleEndElement(const String&, const String&) {} - virtual void handleCharacterData(const String&) {} - }; - - - class MyPayload2ParserFactory : public PayloadParserFactory - { - public: - MyPayload2ParserFactory() {} - - PayloadParser* createPayloadParser() { return new MyPayload2Parser(); } - bool canParse(const String& element, const String&, const AttributeMap&) const { - return element == "mypayload2"; - } - }; - - class MyStanza : public Stanza - { - public: - MyStanza() {} - }; - - class MyStanzaParser : public StanzaParser - { - public: - MyStanzaParser(PayloadParserFactoryCollection* collection) : StanzaParser(collection) - { - stanza_ = boost::shared_ptr<MyStanza>(new MyStanza()); - } - - virtual boost::shared_ptr<Element> getElement() const { - return stanza_; - } - - private: - boost::shared_ptr<MyStanza> stanza_; - }; - - MyPayload1ParserFactory factory1_; - MyPayload2ParserFactory factory2_; - PayloadParserFactoryCollection* factoryCollection_; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(StanzaParserTest); diff --git a/Swiften/Parser/UnitTest/StanzaParserTester.h b/Swiften/Parser/UnitTest/StanzaParserTester.h deleted file mode 100644 index cbd484f..0000000 --- a/Swiften/Parser/UnitTest/StanzaParserTester.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef SWIFTEN_StanzaParserTester_H -#define SWIFTEN_StanzaParserTester_H - -#include "Swiften/Parser/StanzaParser.h" -#include "Swiften/Parser/UnitTest/ParserTester.h" - -namespace Swift { - typedef ParserTester<StanzaParser> StanzaParserTester; -} - -#endif diff --git a/Swiften/Parser/UnitTest/StreamFeaturesParserTest.cpp b/Swiften/Parser/UnitTest/StreamFeaturesParserTest.cpp deleted file mode 100644 index 7fd0512..0000000 --- a/Swiften/Parser/UnitTest/StreamFeaturesParserTest.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Parser/StreamFeaturesParser.h" -#include "Swiften/Parser/UnitTest/ElementParserTester.h" - -using namespace Swift; - -class StreamFeaturesParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(StreamFeaturesParserTest); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST(testParse_Empty); - CPPUNIT_TEST_SUITE_END(); - - public: - StreamFeaturesParserTest() {} - - void testParse() { - StreamFeaturesParser testling; - ElementParserTester parser(&testling); - - CPPUNIT_ASSERT(parser.parse( - "<stream:features xmlns:stream='http://etherx.jabber.org/streams'>" - "<starttls xmlns=\"urn:ietf:params:xml:ns:xmpp-tls\"/>" - "<compression xmlns=\"http://jabber.org/features/compress\">" - "<method>zlib</method>" - "<method>lzw</method>" - "</compression>" - "<mechanisms xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" - "<mechanism>DIGEST-MD5</mechanism>" - "<mechanism>PLAIN</mechanism>" - "</mechanisms>" - "<bind xmlns=\"urn:ietf:params:xml:ns:xmpp-bind\"/>" - "<session xmlns=\"urn:ietf:params:xml:ns:xmpp-session\"/>" - "</stream:features>")); - - StreamFeatures* element = dynamic_cast<StreamFeatures*>(testling.getElement().get()); - CPPUNIT_ASSERT(element->hasStartTLS()); - CPPUNIT_ASSERT(element->hasSession()); - CPPUNIT_ASSERT(element->hasResourceBind()); - CPPUNIT_ASSERT(element->hasCompressionMethod("zlib")); - CPPUNIT_ASSERT(element->hasCompressionMethod("lzw")); - CPPUNIT_ASSERT(element->hasAuthenticationMechanisms()); - CPPUNIT_ASSERT(element->hasAuthenticationMechanism("DIGEST-MD5")); - CPPUNIT_ASSERT(element->hasAuthenticationMechanism("PLAIN")); - } - - void testParse_Empty() { - StreamFeaturesParser testling; - ElementParserTester parser(&testling); - - parser.parse("<stream:features xmlns:stream='http://etherx.jabber.org/streams'/>"); - - StreamFeatures* element = dynamic_cast<StreamFeatures*>(testling.getElement().get()); - CPPUNIT_ASSERT(!element->hasStartTLS()); - CPPUNIT_ASSERT(!element->hasSession()); - CPPUNIT_ASSERT(!element->hasResourceBind()); - CPPUNIT_ASSERT(!element->hasAuthenticationMechanisms()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(StreamFeaturesParserTest); diff --git a/Swiften/Parser/UnitTest/XMLParserTest.cpp b/Swiften/Parser/UnitTest/XMLParserTest.cpp deleted file mode 100644 index 6ef1899..0000000 --- a/Swiften/Parser/UnitTest/XMLParserTest.cpp +++ /dev/null @@ -1,229 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <vector> - -#include "Swiften/Base/String.h" -#include "Swiften/Parser/XMLParserClient.h" -#ifdef HAVE_EXPAT -#include "Swiften/Parser/ExpatParser.h" -#endif -#ifdef HAVE_LIBXML -#include "Swiften/Parser/LibXMLParser.h" -#endif - -using namespace Swift; - -template <typename ParserType> -class XMLParserTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(XMLParserTest); - CPPUNIT_TEST(testParse_NestedElements); - CPPUNIT_TEST(testParse_ElementInNamespacedElement); - CPPUNIT_TEST(testParse_CharacterData); - CPPUNIT_TEST(testParse_NamespacePrefix); - CPPUNIT_TEST(testParse_UnhandledXML); - CPPUNIT_TEST(testParse_InvalidXML); - CPPUNIT_TEST(testParse_InErrorState); - CPPUNIT_TEST(testParse_Incremental); - CPPUNIT_TEST_SUITE_END(); - - public: - void testParse_NestedElements() { - ParserType testling(&client_); - - CPPUNIT_ASSERT(testling.parse( - "<iq type=\"get\">" - "<query xmlns='jabber:iq:version'/>" - "</iq>")); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), client_.events.size()); - - CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[0].type); - CPPUNIT_ASSERT_EQUAL(String("iq"), client_.events[0].data); - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), client_.events[0].attributes.size()); - CPPUNIT_ASSERT_EQUAL(String("get"), client_.events[0].attributes["type"]); - CPPUNIT_ASSERT_EQUAL(String(), client_.events[0].ns); - - CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[1].type); - CPPUNIT_ASSERT_EQUAL(String("query"), client_.events[1].data); - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), client_.events[1].attributes.size()); - CPPUNIT_ASSERT_EQUAL(String("jabber:iq:version"), client_.events[1].ns); - - CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[2].type); - CPPUNIT_ASSERT_EQUAL(String("query"), client_.events[2].data); - CPPUNIT_ASSERT_EQUAL(String("jabber:iq:version"), client_.events[2].ns); - - CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[3].type); - CPPUNIT_ASSERT_EQUAL(String("iq"), client_.events[3].data); - CPPUNIT_ASSERT_EQUAL(String(), client_.events[3].ns); - } - - void testParse_ElementInNamespacedElement() { - ParserType testling(&client_); - - CPPUNIT_ASSERT(testling.parse( - "<query xmlns='jabber:iq:version'>" - "<name>Swift</name>" - "</query>")); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(5), client_.events.size()); - - CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[0].type); - CPPUNIT_ASSERT_EQUAL(String("query"), client_.events[0].data); - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), client_.events[0].attributes.size()); - CPPUNIT_ASSERT_EQUAL(String("jabber:iq:version"), client_.events[0].ns); - - CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[1].type); - CPPUNIT_ASSERT_EQUAL(String("name"), client_.events[1].data); - CPPUNIT_ASSERT_EQUAL(String("jabber:iq:version"), client_.events[1].ns); - - CPPUNIT_ASSERT_EQUAL(Client::CharacterData, client_.events[2].type); - CPPUNIT_ASSERT_EQUAL(String("Swift"), client_.events[2].data); - - CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[3].type); - CPPUNIT_ASSERT_EQUAL(String("name"), client_.events[3].data); - CPPUNIT_ASSERT_EQUAL(String("jabber:iq:version"), client_.events[3].ns); - - CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[4].type); - CPPUNIT_ASSERT_EQUAL(String("query"), client_.events[4].data); - CPPUNIT_ASSERT_EQUAL(String("jabber:iq:version"), client_.events[4].ns); - } - - void testParse_CharacterData() { - ParserType testling(&client_); - - CPPUNIT_ASSERT(testling.parse("<html>bla<i>bli</i>blo</html>")); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(7), client_.events.size()); - - CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[0].type); - CPPUNIT_ASSERT_EQUAL(String("html"), client_.events[0].data); - - CPPUNIT_ASSERT_EQUAL(Client::CharacterData, client_.events[1].type); - CPPUNIT_ASSERT_EQUAL(String("bla"), client_.events[1].data); - - CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[2].type); - CPPUNIT_ASSERT_EQUAL(String("i"), client_.events[2].data); - - CPPUNIT_ASSERT_EQUAL(Client::CharacterData, client_.events[3].type); - CPPUNIT_ASSERT_EQUAL(String("bli"), client_.events[3].data); - - CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[4].type); - CPPUNIT_ASSERT_EQUAL(String("i"), client_.events[4].data); - - CPPUNIT_ASSERT_EQUAL(Client::CharacterData, client_.events[5].type); - CPPUNIT_ASSERT_EQUAL(String("blo"), client_.events[5].data); - - CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[6].type); - CPPUNIT_ASSERT_EQUAL(String("html"), client_.events[6].data); - } - - void testParse_NamespacePrefix() { - ParserType testling(&client_); - - CPPUNIT_ASSERT(testling.parse("<p:x xmlns:p='bla'><p:y/></p:x>")); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), client_.events.size()); - - CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[0].type); - CPPUNIT_ASSERT_EQUAL(String("x"), client_.events[0].data); - CPPUNIT_ASSERT_EQUAL(String("bla"), client_.events[0].ns); - - CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[1].type); - CPPUNIT_ASSERT_EQUAL(String("y"), client_.events[1].data); - CPPUNIT_ASSERT_EQUAL(String("bla"), client_.events[1].ns); - - CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[2].type); - CPPUNIT_ASSERT_EQUAL(String("y"), client_.events[2].data); - CPPUNIT_ASSERT_EQUAL(String("bla"), client_.events[2].ns); - - CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[3].type); - CPPUNIT_ASSERT_EQUAL(String("x"), client_.events[3].data); - CPPUNIT_ASSERT_EQUAL(String("bla"), client_.events[3].ns); - } - - void testParse_UnhandledXML() { - ParserType testling(&client_); - - CPPUNIT_ASSERT(testling.parse("<iq><!-- Testing --></iq>")); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), client_.events.size()); - - CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[0].type); - CPPUNIT_ASSERT_EQUAL(String("iq"), client_.events[0].data); - - CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[1].type); - CPPUNIT_ASSERT_EQUAL(String("iq"), client_.events[1].data); - } - - void testParse_InvalidXML() { - ParserType testling(&client_); - - CPPUNIT_ASSERT(!testling.parse("<iq><bla></iq>")); - } - - void testParse_InErrorState() { - ParserType testling(&client_); - - CPPUNIT_ASSERT(!testling.parse("<iq><bla></iq>")); - CPPUNIT_ASSERT(!testling.parse("<iq/>")); - } - - void testParse_Incremental() { - ParserType testling(&client_); - - CPPUNIT_ASSERT(testling.parse("<iq")); - CPPUNIT_ASSERT(testling.parse("></iq>")); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), client_.events.size()); - - CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[0].type); - CPPUNIT_ASSERT_EQUAL(String("iq"), client_.events[0].data); - - CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[1].type); - CPPUNIT_ASSERT_EQUAL(String("iq"), client_.events[1].data); - } - - private: - class Client : public XMLParserClient { - public: - enum Type { StartElement, EndElement, CharacterData }; - struct Event { - Event( - Type type, - const String& data, - const String& ns, - const AttributeMap& attributes) - : type(type), data(data), ns(ns), attributes(attributes) {} - Event(Type type, const String& data, const String& ns = String()) - : type(type), data(data), ns(ns) {} - - Type type; - String data; - String ns; - AttributeMap attributes; - }; - - Client() {} - - virtual void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) { - events.push_back(Event(StartElement, element, ns, attributes)); - } - - virtual void handleEndElement(const String& element, const String& ns) { - events.push_back(Event(EndElement, element, ns)); - } - - virtual void handleCharacterData(const String& data) { - events.push_back(Event(CharacterData, data)); - } - - std::vector<Event> events; - } client_; -}; - -#ifdef HAVE_EXPAT -CPPUNIT_TEST_SUITE_REGISTRATION(XMLParserTest<ExpatParser>); -#endif -#ifdef HAVE_LIBXML -CPPUNIT_TEST_SUITE_REGISTRATION(XMLParserTest<LibXMLParser>); -#endif diff --git a/Swiften/Parser/UnitTest/XMPPParserTest.cpp b/Swiften/Parser/UnitTest/XMPPParserTest.cpp deleted file mode 100644 index ecdd565..0000000 --- a/Swiften/Parser/UnitTest/XMPPParserTest.cpp +++ /dev/null @@ -1,186 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <vector> - -#include "Swiften/Elements/ProtocolHeader.h" -#include "Swiften/Base/String.h" -#include "Swiften/Parser/XMPPParser.h" -#include "Swiften/Parser/ElementParser.h" -#include "Swiften/Parser/XMPPParserClient.h" -#include "Swiften/Parser/PayloadParserFactoryCollection.h" -#include "Swiften/Elements/Presence.h" -#include "Swiften/Elements/IQ.h" -#include "Swiften/Elements/Message.h" -#include "Swiften/Elements/StreamFeatures.h" -#include "Swiften/Elements/UnknownElement.h" - -using namespace Swift; - -class XMPPParserTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(XMPPParserTest); - CPPUNIT_TEST(testParse_SimpleSession); - CPPUNIT_TEST(testParse_SimpleClientFromServerSession); - CPPUNIT_TEST(testParse_Presence); - CPPUNIT_TEST(testParse_IQ); - CPPUNIT_TEST(testParse_Message); - CPPUNIT_TEST(testParse_StreamFeatures); - CPPUNIT_TEST(testParse_UnknownElement); - CPPUNIT_TEST(testParse_StrayCharacterData); - CPPUNIT_TEST(testParse_InvalidStreamStart); - CPPUNIT_TEST_SUITE_END(); - - public: - XMPPParserTest() {} - - void testParse_SimpleSession() { - XMPPParser testling(&client_, &factories_); - - CPPUNIT_ASSERT(testling.parse("<?xml version='1.0'?>")); - CPPUNIT_ASSERT(testling.parse("<stream:stream to='example.com' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' >")); - CPPUNIT_ASSERT(testling.parse("<presence/>")); - CPPUNIT_ASSERT(testling.parse("<presence/>")); - CPPUNIT_ASSERT(testling.parse("<iq/>")); - CPPUNIT_ASSERT(testling.parse("</stream:stream>")); - - CPPUNIT_ASSERT_EQUAL(5, static_cast<int>(client_.events.size())); - CPPUNIT_ASSERT_EQUAL(Client::StreamStart, client_.events[0].type); - CPPUNIT_ASSERT_EQUAL(String("example.com"), client_.events[0].to); - CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[1].type); - CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[2].type); - CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[3].type); - CPPUNIT_ASSERT_EQUAL(Client::StreamEnd, client_.events[4].type); - } - - void testParse_SimpleClientFromServerSession() { - XMPPParser testling(&client_, &factories_); - - CPPUNIT_ASSERT(testling.parse("<?xml version='1.0'?>")); - CPPUNIT_ASSERT(testling.parse("<stream:stream from='example.com' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='aeab'>")); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(client_.events.size())); - CPPUNIT_ASSERT_EQUAL(Client::StreamStart, client_.events[0].type); - CPPUNIT_ASSERT_EQUAL(String("example.com"), client_.events[0].from); - CPPUNIT_ASSERT_EQUAL(String("aeab"), client_.events[0].id); - } - - - void testParse_Presence() { - XMPPParser testling(&client_, &factories_); - - CPPUNIT_ASSERT(testling.parse("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'>")); - CPPUNIT_ASSERT(testling.parse("<presence/>")); - - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(client_.events.size())); - CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[1].type); - CPPUNIT_ASSERT(dynamic_cast<Presence*>(client_.events[1].element.get())); - } - - void testParse_IQ() { - XMPPParser testling(&client_, &factories_); - - CPPUNIT_ASSERT(testling.parse("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'>")); - CPPUNIT_ASSERT(testling.parse("<iq/>")); - - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(client_.events.size())); - CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[1].type); - CPPUNIT_ASSERT(dynamic_cast<IQ*>(client_.events[1].element.get())); - } - - void testParse_Message() { - XMPPParser testling(&client_, &factories_); - - CPPUNIT_ASSERT(testling.parse("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'>")); - CPPUNIT_ASSERT(testling.parse("<message/>")); - - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(client_.events.size())); - CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[1].type); - CPPUNIT_ASSERT(dynamic_cast<Message*>(client_.events[1].element.get())); - } - - void testParse_StreamFeatures() { - XMPPParser testling(&client_, &factories_); - - CPPUNIT_ASSERT(testling.parse("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'>")); - CPPUNIT_ASSERT(testling.parse("<stream:features/>")); - - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(client_.events.size())); - CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[1].type); - CPPUNIT_ASSERT(dynamic_cast<StreamFeatures*>(client_.events[1].element.get())); - } - - void testParse_UnknownElement() { - XMPPParser testling(&client_, &factories_); - - CPPUNIT_ASSERT(testling.parse("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'>")); - CPPUNIT_ASSERT(testling.parse("<presence/>")); - CPPUNIT_ASSERT(testling.parse("<foo/>")); - CPPUNIT_ASSERT(testling.parse("<bar/>")); - CPPUNIT_ASSERT(testling.parse("<presence/>")); - - CPPUNIT_ASSERT_EQUAL(5, static_cast<int>(client_.events.size())); - CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[2].type); - CPPUNIT_ASSERT(dynamic_cast<UnknownElement*>(client_.events[2].element.get())); - CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[3].type); - CPPUNIT_ASSERT(dynamic_cast<UnknownElement*>(client_.events[3].element.get())); - CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[4].type); - CPPUNIT_ASSERT(dynamic_cast<Presence*>(client_.events[4].element.get())); - } - - void testParse_StrayCharacterData() { - XMPPParser testling(&client_, &factories_); - - CPPUNIT_ASSERT(testling.parse("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'>")); - CPPUNIT_ASSERT(testling.parse("<presence/>")); - CPPUNIT_ASSERT(testling.parse("bla")); - CPPUNIT_ASSERT(testling.parse("<iq/>")); - - CPPUNIT_ASSERT_EQUAL(3, static_cast<int>(client_.events.size())); - CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[2].type); - CPPUNIT_ASSERT(dynamic_cast<IQ*>(client_.events[2].element.get())); - } - - void testParse_InvalidStreamStart() { - XMPPParser testling(&client_, &factories_); - - CPPUNIT_ASSERT(!testling.parse("<tream>")); - } - - private: - class Client : public XMPPParserClient { - public: - enum Type { StreamStart, ElementEvent, StreamEnd }; - struct Event { - Event(Type type, boost::shared_ptr<Element> element) - : type(type), element(element) {} - Event(Type type, const String& from, const String& to, const String& id) : type(type), from(from), to(to), id(id) {} - - Event(Type type) : type(type) {} - - Type type; - String from; - String to; - String id; - boost::shared_ptr<Element> element; - }; - - Client() {} - - void handleStreamStart(const ProtocolHeader& header) { - events.push_back(Event(StreamStart, header.getFrom(), header.getTo(), header.getID())); - } - - void handleElement(boost::shared_ptr<Element> element) { - events.push_back(Event(ElementEvent, element)); - } - - void handleStreamEnd() { - events.push_back(Event(StreamEnd)); - } - - std::vector<Event> events; - } client_; - PayloadParserFactoryCollection factories_; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(XMPPParserTest); diff --git a/Swiften/Parser/UnknownElementParser.h b/Swiften/Parser/UnknownElementParser.h deleted file mode 100644 index c016664..0000000 --- a/Swiften/Parser/UnknownElementParser.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_UnknownElementParser_H -#define SWIFTEN_UnknownElementParser_H - -#include "Swiften/Parser/GenericElementParser.h" -#include "Swiften/Elements/UnknownElement.h" - -namespace Swift { - class UnknownElementParser : public GenericElementParser<UnknownElement> { - public: - UnknownElementParser() : GenericElementParser<UnknownElement>() {} - }; -} - -#endif diff --git a/Swiften/Parser/UnknownPayloadParser.h b/Swiften/Parser/UnknownPayloadParser.h deleted file mode 100644 index ad56885..0000000 --- a/Swiften/Parser/UnknownPayloadParser.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef SWIFTEN_UNKNOWNPAYLOADPARSER_H -#define SWIFTEN_UNKNOWNPAYLOADPARSER_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Parser/PayloadParser.h" - -namespace Swift { - class String; - - class UnknownPayloadParser : public PayloadParser { - public: - UnknownPayloadParser() {} - - virtual void handleStartElement(const String&, const String&, const AttributeMap&) {} - virtual void handleEndElement(const String&, const String&) {} - virtual void handleCharacterData(const String&) {} - - virtual boost::shared_ptr<Payload> getPayload() const { - return boost::shared_ptr<Payload>(); - } - }; -} - -#endif diff --git a/Swiften/Parser/XMLParser.cpp b/Swiften/Parser/XMLParser.cpp deleted file mode 100644 index a827e99..0000000 --- a/Swiften/Parser/XMLParser.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "Swiften/Parser/XMLParser.h" - -namespace Swift { - -XMLParser::XMLParser(XMLParserClient* client) : client_(client) { -} - -XMLParser::~XMLParser() { -} - -} diff --git a/Swiften/Parser/XMLParser.h b/Swiften/Parser/XMLParser.h deleted file mode 100644 index 7ed90db..0000000 --- a/Swiften/Parser/XMLParser.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef SWIFTEN_XMLParser_H -#define SWIFTEN_XMLParser_H - -namespace Swift { - class String; - class XMLParserClient; - - class XMLParser { - public: - XMLParser(XMLParserClient* client); - virtual ~XMLParser(); - - virtual bool parse(const String& data) = 0; - - protected: - XMLParserClient* getClient() const { - return client_; - } - - private: - XMLParserClient* client_; - }; -} - -#endif diff --git a/Swiften/Parser/XMLParserClient.cpp b/Swiften/Parser/XMLParserClient.cpp deleted file mode 100644 index 53a103f..0000000 --- a/Swiften/Parser/XMLParserClient.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#include "Swiften/Parser/XMLParserClient.h" - -namespace Swift { - -XMLParserClient::~XMLParserClient() { -} - -} - diff --git a/Swiften/Parser/XMLParserClient.h b/Swiften/Parser/XMLParserClient.h deleted file mode 100644 index 7179ac6..0000000 --- a/Swiften/Parser/XMLParserClient.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef XMLPARSERCLIENT_H -#define XMLPARSERCLIENT_H - -#include "Swiften/Parser/AttributeMap.h" - -namespace Swift { - class String; - - class XMLParserClient { - public: - virtual ~XMLParserClient(); - - virtual void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) = 0; - virtual void handleEndElement(const String& element, const String& ns) = 0; - virtual void handleCharacterData(const String& data) = 0; - }; -} - -#endif diff --git a/Swiften/Parser/XMLParserFactory.cpp b/Swiften/Parser/XMLParserFactory.cpp deleted file mode 100644 index e21bb5c..0000000 --- a/Swiften/Parser/XMLParserFactory.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Parser/XMLParserFactory.h" - -namespace Swift { - -XMLParserFactory::~XMLParserFactory() { -} - -} diff --git a/Swiften/Parser/XMLParserFactory.h b/Swiften/Parser/XMLParserFactory.h deleted file mode 100644 index 8d67b17..0000000 --- a/Swiften/Parser/XMLParserFactory.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SWIFTEN_XMLParserFactory_H -#define SWIFTEN_XMLParserFactory_H - -namespace Swift { - class XMLParser; - class XMLParserClient; - - class XMLParserFactory { - public: - virtual ~XMLParserFactory(); - - virtual XMLParser* createXMLParser(XMLParserClient*) = 0; - }; -} - -#endif diff --git a/Swiften/Parser/XMPPParser.cpp b/Swiften/Parser/XMPPParser.cpp deleted file mode 100644 index 83de263..0000000 --- a/Swiften/Parser/XMPPParser.cpp +++ /dev/null @@ -1,159 +0,0 @@ -#include "Swiften/Parser/XMPPParser.h" - -#include <iostream> -#include <cassert> - -#include "Swiften/Elements/ProtocolHeader.h" -#include "Swiften/Base/String.h" -#include "Swiften/Parser/XMLParser.h" -#include "Swiften/Parser/PlatformXMLParserFactory.h" -#include "Swiften/Parser/XMPPParserClient.h" -#include "Swiften/Parser/XMPPParser.h" -#include "Swiften/Parser/ElementParser.h" -#include "Swiften/Parser/PresenceParser.h" -#include "Swiften/Parser/IQParser.h" -#include "Swiften/Parser/MessageParser.h" -#include "Swiften/Parser/StreamFeaturesParser.h" -#include "Swiften/Parser/AuthRequestParser.h" -#include "Swiften/Parser/AuthSuccessParser.h" -#include "Swiften/Parser/AuthFailureParser.h" -#include "Swiften/Parser/AuthChallengeParser.h" -#include "Swiften/Parser/AuthResponseParser.h" -#include "Swiften/Parser/StartTLSParser.h" -#include "Swiften/Parser/StartTLSFailureParser.h" -#include "Swiften/Parser/CompressParser.h" -#include "Swiften/Parser/CompressFailureParser.h" -#include "Swiften/Parser/CompressedParser.h" -#include "Swiften/Parser/UnknownElementParser.h" -#include "Swiften/Parser/TLSProceedParser.h" - -// TODO: Whenever an error occurs in the handlers, stop the parser by returing -// a bool value, and stopping the XML parser - -namespace Swift { - -XMPPParser::XMPPParser( - XMPPParserClient* client, - PayloadParserFactoryCollection* payloadParserFactories) : - xmlParser_(0), - client_(client), - payloadParserFactories_(payloadParserFactories), - currentDepth_(0), - currentElementParser_(0), - parseErrorOccurred_(false) { - xmlParser_ = PlatformXMLParserFactory().createXMLParser(this); -} - -XMPPParser::~XMPPParser() { - delete currentElementParser_; - delete xmlParser_; -} - -bool XMPPParser::parse(const String& data) { - bool xmlParseResult = xmlParser_->parse(data); - return xmlParseResult && !parseErrorOccurred_; -} - -void XMPPParser::handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) { - if (!inStream()) { - if (element == "stream" && ns == "http://etherx.jabber.org/streams") { - ProtocolHeader header; - header.setFrom(attributes.getAttribute("from")); - header.setTo(attributes.getAttribute("to")); - header.setID(attributes.getAttribute("id")); - header.setVersion(attributes.getAttribute("version")); - client_->handleStreamStart(header); - } - else { - parseErrorOccurred_ = true; - } - } - else { - if (!inElement()) { - assert(!currentElementParser_); - delete currentElementParser_; - currentElementParser_ = createElementParser(element, ns); - } - currentElementParser_->handleStartElement(element, ns, attributes); - } - ++currentDepth_; -} - -void XMPPParser::handleEndElement(const String& element, const String& ns) { - assert(inStream()); - if (inElement()) { - assert(currentElementParser_); - currentElementParser_->handleEndElement(element, ns); - --currentDepth_; - if (!inElement()) { - client_->handleElement(currentElementParser_->getElement()); - delete currentElementParser_; - currentElementParser_ = 0; - } - } - else { - assert(element == "stream"); - --currentDepth_; - client_->handleStreamEnd(); - } -} - -void XMPPParser::handleCharacterData(const String& data) { - if (currentElementParser_) { - currentElementParser_->handleCharacterData(data); - } - //else { - // std::cerr << "XMPPParser: Ignoring stray character data: " << data << std::endl; - //} -} - -ElementParser* XMPPParser::createElementParser(const String& element, const String& ns) { - if (element == "presence") { - return new PresenceParser(payloadParserFactories_); - } - else if (element == "iq") { - return new IQParser(payloadParserFactories_); - } - else if (element == "message") { - return new MessageParser(payloadParserFactories_); - } - else if (element == "features" && ns == "http://etherx.jabber.org/streams") { - return new StreamFeaturesParser(); - } - else if (element == "auth") { - return new AuthRequestParser(); - } - else if (element == "success") { - return new AuthSuccessParser(); - } - else if (element == "failure" && ns == "urn:ietf:params:xml:ns:xmpp-sasl") { - return new AuthFailureParser(); - } - else if (element == "challenge" && ns == "urn:ietf:params:xml:ns:xmpp-sasl") { - return new AuthChallengeParser(); - } - else if (element == "response" && ns == "urn:ietf:params:xml:ns:xmpp-sasl") { - return new AuthResponseParser(); - } - else if (element == "starttls") { - return new StartTLSParser(); - } - else if (element == "failure" && ns == "urn:ietf:params:xml:ns:xmpp-tls") { - return new StartTLSFailureParser(); - } - else if (element == "compress") { - return new CompressParser(); - } - else if (element == "compressed") { - return new CompressedParser(); - } - else if (element == "failure" && ns == "http://jabber.org/protocol/compress") { - return new CompressFailureParser(); - } - else if (element == "proceed") { - return new TLSProceedParser(); - } - return new UnknownElementParser(); -} - -} diff --git a/Swiften/Parser/XMPPParser.h b/Swiften/Parser/XMPPParser.h deleted file mode 100644 index 9e1109d..0000000 --- a/Swiften/Parser/XMPPParser.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef SWIFTEN_XMPPPARSER_H -#define SWIFTEN_XMPPPARSER_H - -#include <boost/shared_ptr.hpp> -#include <boost/noncopyable.hpp> - -#include "Swiften/Parser/XMLParserClient.h" -#include "Swiften/Parser/AttributeMap.h" - -namespace Swift { - class XMLParser; - class XMPPParserClient; - class String; - class ElementParser; - class PayloadParserFactoryCollection; - - class XMPPParser : public XMLParserClient, boost::noncopyable { - public: - XMPPParser( - XMPPParserClient* parserClient, - PayloadParserFactoryCollection* payloadParserFactories); - ~XMPPParser(); - - bool parse(const String&); - - private: - virtual void handleStartElement( - const String& element, - const String& ns, - const AttributeMap& attributes); - virtual void handleEndElement(const String& element, const String& ns); - virtual void handleCharacterData(const String& data); - - bool inStream() const { - return currentDepth_ > 0; - } - - bool inElement() const { - return currentDepth_ > 1; - } - - ElementParser* createElementParser(const String& element, const String& xmlns); - - private: - XMLParser* xmlParser_; - XMPPParserClient* client_; - PayloadParserFactoryCollection* payloadParserFactories_; - int currentDepth_; - ElementParser* currentElementParser_; - bool parseErrorOccurred_; - }; -} - -#endif diff --git a/Swiften/Parser/XMPPParserClient.cpp b/Swiften/Parser/XMPPParserClient.cpp deleted file mode 100644 index 66ea917..0000000 --- a/Swiften/Parser/XMPPParserClient.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Parser/XMPPParserClient.h" - -namespace Swift { - -XMPPParserClient::~XMPPParserClient() { -} - -} diff --git a/Swiften/Parser/XMPPParserClient.h b/Swiften/Parser/XMPPParserClient.h deleted file mode 100644 index b8f8e46..0000000 --- a/Swiften/Parser/XMPPParserClient.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/Element.h" - -namespace Swift { - class String; - class ProtocolHeader; - - class XMPPParserClient { - public: - virtual ~XMPPParserClient(); - - virtual void handleStreamStart(const ProtocolHeader&) = 0; - virtual void handleElement(boost::shared_ptr<Element>) = 0; - virtual void handleStreamEnd() = 0; - }; -} diff --git a/Swiften/Presence/PresenceOracle.cpp b/Swiften/Presence/PresenceOracle.cpp deleted file mode 100644 index 988fc10..0000000 --- a/Swiften/Presence/PresenceOracle.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include "PresenceOracle.h" - -#include <boost/bind.hpp> -#include "Swiften/Client/StanzaChannel.h" -namespace Swift { - -typedef std::pair<JID, std::map<JID, boost::shared_ptr<Presence> > > JIDMapPair; -typedef std::pair<JID, boost::shared_ptr<Presence> > JIDPresencePair; - -PresenceOracle::PresenceOracle(StanzaChannel* stanzaChannel) { - stanzaChannel_ = stanzaChannel; - stanzaChannel_->onPresenceReceived.connect(boost::bind(&PresenceOracle::handleIncomingPresence, this, _1)); -} - -void PresenceOracle::cancelSubscription(const JID& jid) { - boost::shared_ptr<Presence> stanza(new Presence()); - stanza->setType(Presence::Unsubscribed); - stanza->setTo(jid); - stanzaChannel_->sendPresence(stanza); -} - -void PresenceOracle::confirmSubscription(const JID& jid) { - boost::shared_ptr<Presence> stanza(new Presence()); - stanza->setType(Presence::Subscribed); - stanza->setTo(jid); - stanzaChannel_->sendPresence(stanza); -} - - -void PresenceOracle::requestSubscription(const JID& jid) { - boost::shared_ptr<Presence> stanza(new Presence()); - stanza->setType(Presence::Subscribe); - stanza->setTo(jid); - stanzaChannel_->sendPresence(stanza); -} - - -void PresenceOracle::handleIncomingPresence(boost::shared_ptr<Presence> presence) { - JID bareJID = JID(presence->getFrom().toBare()); - - if (presence->getType() == Presence::Subscribe) { - onPresenceSubscriptionRequest(bareJID, presence->getStatus()); - } else { - std::map<JID, boost::shared_ptr<Presence> > jidMap = entries_[bareJID]; - boost::shared_ptr<Presence> last; - foreach(JIDPresencePair pair, jidMap) { - if (pair.first == presence->getFrom()) { - last = pair.second; - break; - } - } - jidMap[presence->getFrom()] = presence; - entries_[bareJID] = jidMap; - onPresenceChange(presence, last); - } -} - -} diff --git a/Swiften/Presence/PresenceOracle.h b/Swiften/Presence/PresenceOracle.h deleted file mode 100644 index dc6fe5d..0000000 --- a/Swiften/Presence/PresenceOracle.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Presence.h" - -#include <map> -#include <boost/signal.hpp> - -namespace Swift { -class StanzaChannel; - -class PresenceOracle { - public: - PresenceOracle(StanzaChannel* stanzaChannel); - ~PresenceOracle() {}; - - void cancelSubscription(const JID& jid); - void confirmSubscription(const JID& jid); - void requestSubscription(const JID& jid); - - boost::signal<void (boost::shared_ptr<Presence>, boost::shared_ptr<Presence>)> onPresenceChange; - boost::signal<void (const JID&, const String&)> onPresenceSubscriptionRequest; - - private: - void handleIncomingPresence(boost::shared_ptr<Presence> presence); - std::map<JID, std::map<JID, boost::shared_ptr<Presence> > > entries_; - StanzaChannel* stanzaChannel_; -}; -} - diff --git a/Swiften/Presence/PresenceSender.cpp b/Swiften/Presence/PresenceSender.cpp deleted file mode 100644 index 8e7ef68..0000000 --- a/Swiften/Presence/PresenceSender.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include "Swiften/Presence/PresenceSender.h" -#include "Swiften/Base/foreach.h" -#include "Swiften/Client/StanzaChannel.h" - -namespace Swift { - -PresenceSender::PresenceSender(StanzaChannel* channel) : channel(channel) { -} - -void PresenceSender::sendPresence(boost::shared_ptr<Presence> presence) { - if (!channel->isAvailable()) { - return; - } - - channel->sendPresence(presence); - - if (!presence->getTo().isValid()) { - boost::shared_ptr<Presence> presenceCopy(new Presence(*presence)); - foreach(const JID& jid, directedPresenceReceivers) { - presenceCopy->setTo(jid); - channel->sendPresence(presenceCopy); - } - - lastSentUndirectedPresence = presence; - } -} - -void PresenceSender::addDirectedPresenceReceiver(const JID& jid) { - directedPresenceReceivers.insert(jid); - if (channel->isAvailable()) { - if (lastSentUndirectedPresence && lastSentUndirectedPresence->getType() == Presence::Available) { - boost::shared_ptr<Presence> presenceCopy(new Presence(*lastSentUndirectedPresence)); - presenceCopy->setTo(jid); - channel->sendPresence(presenceCopy); - } - } -} - -void PresenceSender::removeDirectedPresenceReceiver(const JID& jid) { - directedPresenceReceivers.erase(jid); - if (channel->isAvailable()) { - boost::shared_ptr<Presence> presence(new Presence()); - presence->setType(Presence::Unavailable); - presence->setTo(jid); - channel->sendPresence(presence); - } -} - -} diff --git a/Swiften/Presence/PresenceSender.h b/Swiften/Presence/PresenceSender.h deleted file mode 100644 index ef69447..0000000 --- a/Swiften/Presence/PresenceSender.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include <set> - -#include "Swiften/Elements/Presence.h" - -namespace Swift { - class StanzaChannel; - - class PresenceSender { - public: - PresenceSender(StanzaChannel*); - - void addDirectedPresenceReceiver(const JID&); - void removeDirectedPresenceReceiver(const JID&); - - void sendPresence(boost::shared_ptr<Presence>); - - private: - boost::shared_ptr<Presence> lastSentUndirectedPresence; - StanzaChannel* channel; - std::set<JID> directedPresenceReceivers; - }; -} diff --git a/Swiften/Presence/UnitTest/PresenceOracleTest.cpp b/Swiften/Presence/UnitTest/PresenceOracleTest.cpp deleted file mode 100644 index 2c9c526..0000000 --- a/Swiften/Presence/UnitTest/PresenceOracleTest.cpp +++ /dev/null @@ -1,126 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/bind.hpp> -#include <boost/shared_ptr.hpp> -#include <boost/optional.hpp> - -#include "Swiften/Presence/PresenceOracle.h" -#include "Swiften/Client/DummyStanzaChannel.h" - -using namespace Swift; - -class PresencePointerPair { - public: - boost::shared_ptr<Presence> one; - boost::shared_ptr<Presence> two; -}; - -class SubscriptionRequestInfo { - public: - boost::optional<JID> jid; - boost::optional<String> reason; -}; - -class PresenceOracleTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(PresenceOracleTest); - CPPUNIT_TEST(testFirstPresence); - CPPUNIT_TEST(testSecondPresence); - CPPUNIT_TEST(testSubscriptionRequest); - CPPUNIT_TEST_SUITE_END(); - - private: - PresenceOracle* oracle_; - DummyStanzaChannel* stanzaChannel_; - - public: - - void handlePresenceChange(boost::shared_ptr<Presence> newPresence, boost::shared_ptr<Presence> lastPresence, PresencePointerPair* out) { - CPPUNIT_ASSERT(out->one.get() == NULL); - CPPUNIT_ASSERT(out->two.get() == NULL); - out->one = newPresence; - out->two = lastPresence; - CPPUNIT_ASSERT(newPresence.get()); - CPPUNIT_ASSERT_EQUAL(newPresence, out->one); - } - - void handlePresenceSubscriptionRequest(const JID& jid, const String& reason, SubscriptionRequestInfo* info) { - CPPUNIT_ASSERT(!info->jid); - CPPUNIT_ASSERT(!info->reason); - info->jid = jid; - info->reason = reason; - } - - void setUp() { - stanzaChannel_ = new DummyStanzaChannel(); - oracle_ = new PresenceOracle(stanzaChannel_); - } - - void tearDown() { - delete oracle_; - delete stanzaChannel_; - } - - void testFirstPresence() { - PresencePointerPair out; - oracle_->onPresenceChange.connect(boost::bind(&PresenceOracleTest::handlePresenceChange, this, _1, _2, &out)); - - SubscriptionRequestInfo info; - oracle_->onPresenceSubscriptionRequest.connect(boost::bind(&PresenceOracleTest::handlePresenceSubscriptionRequest, this, _1, _2, &info)); - - boost::shared_ptr<Presence> sentPresence(new Presence("blarb")); - stanzaChannel_->onPresenceReceived(sentPresence); - - CPPUNIT_ASSERT(!info.jid); - CPPUNIT_ASSERT(!info.reason); - CPPUNIT_ASSERT(out.two.get() == NULL); - CPPUNIT_ASSERT_EQUAL(sentPresence, out.one); - } - - void testSecondPresence() { - PresencePointerPair out; - oracle_->onPresenceChange.connect(boost::bind(&PresenceOracleTest::handlePresenceChange, this, _1, _2, &out)); - - boost::shared_ptr<Presence> sentPresence1(new Presence("blarb")); - stanzaChannel_->onPresenceReceived(sentPresence1); - CPPUNIT_ASSERT_EQUAL(sentPresence1, out.one); - out.one = boost::shared_ptr<Presence>(); - - SubscriptionRequestInfo info; - oracle_->onPresenceSubscriptionRequest.connect(boost::bind(&PresenceOracleTest::handlePresenceSubscriptionRequest, this, _1, _2, &info)); - - boost::shared_ptr<Presence> sentPresence2(new Presence("test2")); - stanzaChannel_->onPresenceReceived(sentPresence2); - - CPPUNIT_ASSERT(!info.jid); - CPPUNIT_ASSERT(!info.reason); - CPPUNIT_ASSERT_EQUAL(sentPresence1, out.two); - CPPUNIT_ASSERT_EQUAL(sentPresence2, out.one); - } - - void testSubscriptionRequest() { - PresencePointerPair out; - oracle_->onPresenceChange.connect(boost::bind(&PresenceOracleTest::handlePresenceChange, this, _1, _2, &out)); - SubscriptionRequestInfo info; - oracle_->onPresenceSubscriptionRequest.connect(boost::bind(&PresenceOracleTest::handlePresenceSubscriptionRequest, this, _1, _2, &info)); - - String reasonText = "Because I want to"; - JID sentJID = JID("me@example.com"); - - boost::shared_ptr<Presence> sentPresence(new Presence()); - sentPresence->setType(Presence::Subscribe); - sentPresence->setFrom(sentJID); - sentPresence->setStatus(reasonText); - stanzaChannel_->onPresenceReceived(sentPresence); - - CPPUNIT_ASSERT(info.jid); - CPPUNIT_ASSERT(info.reason); - CPPUNIT_ASSERT_EQUAL(sentJID, info.jid.get()); - CPPUNIT_ASSERT_EQUAL(reasonText, info.reason.get()); - - CPPUNIT_ASSERT(!out.two); - CPPUNIT_ASSERT(!out.one); - } -}; -CPPUNIT_TEST_SUITE_REGISTRATION(PresenceOracleTest); - diff --git a/Swiften/Presence/UnitTest/PresenceSenderTest.cpp b/Swiften/Presence/UnitTest/PresenceSenderTest.cpp deleted file mode 100644 index 1df0269..0000000 --- a/Swiften/Presence/UnitTest/PresenceSenderTest.cpp +++ /dev/null @@ -1,120 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Client/DummyStanzaChannel.h" -#include "Swiften/Presence/PresenceSender.h" - -using namespace Swift; - -class PresenceSenderTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(PresenceSenderTest); - CPPUNIT_TEST(testSendPresence); - CPPUNIT_TEST(testSendPresence_UndirectedPresenceWithDirectedPresenceReceivers); - CPPUNIT_TEST(testSendPresence_DirectedPresenceWithDirectedPresenceReceivers); - CPPUNIT_TEST(testAddDirectedPresenceReceiver); - CPPUNIT_TEST(testAddDirectedPresenceReceiver_AfterSendingDirectedPresence); - CPPUNIT_TEST(testRemoveDirectedPresenceReceiver); - CPPUNIT_TEST_SUITE_END(); - - public: - void setUp() { - channel = new DummyStanzaChannel(); - testPresence = boost::shared_ptr<Presence>(new Presence()); - testPresence->setStatus("Foo"); - secondTestPresence = boost::shared_ptr<Presence>(new Presence()); - secondTestPresence->setStatus("Bar"); - } - - void tearDown() { - delete channel; - } - - void testSendPresence() { - std::auto_ptr<PresenceSender> testling(createPresenceSender()); - testling->sendPresence(testPresence); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel->sentStanzas.size())); - boost::shared_ptr<Presence> presence = boost::dynamic_pointer_cast<Presence>(channel->sentStanzas[0]); - CPPUNIT_ASSERT(testPresence == presence); - } - - void testSendPresence_UndirectedPresenceWithDirectedPresenceReceivers() { - std::auto_ptr<PresenceSender> testling(createPresenceSender()); - testling->addDirectedPresenceReceiver(JID("alice@wonderland.lit/teaparty")); - - testling->sendPresence(testPresence); - - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(channel->sentStanzas.size())); - boost::shared_ptr<Presence> presence = boost::dynamic_pointer_cast<Presence>(channel->sentStanzas[0]); - CPPUNIT_ASSERT(testPresence == presence); - presence = boost::dynamic_pointer_cast<Presence>(channel->sentStanzas[1]); - CPPUNIT_ASSERT_EQUAL(testPresence->getStatus(), presence->getStatus()); - CPPUNIT_ASSERT_EQUAL(JID("alice@wonderland.lit/teaparty"), presence->getTo()); - } - - void testSendPresence_DirectedPresenceWithDirectedPresenceReceivers() { - std::auto_ptr<PresenceSender> testling(createPresenceSender()); - testling->addDirectedPresenceReceiver(JID("alice@wonderland.lit/teaparty")); - channel->sentStanzas.clear(); - - testPresence->setTo(JID("foo@bar.com")); - testling->sendPresence(testPresence); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel->sentStanzas.size())); - boost::shared_ptr<Presence> presence = boost::dynamic_pointer_cast<Presence>(channel->sentStanzas[0]); - CPPUNIT_ASSERT(testPresence == presence); - } - - void testAddDirectedPresenceReceiver() { - std::auto_ptr<PresenceSender> testling(createPresenceSender()); - testling->sendPresence(testPresence); - channel->sentStanzas.clear(); - - testling->addDirectedPresenceReceiver(JID("alice@wonderland.lit/teaparty")); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel->sentStanzas.size())); - boost::shared_ptr<Presence> presence = boost::dynamic_pointer_cast<Presence>(channel->sentStanzas[0]); - CPPUNIT_ASSERT_EQUAL(testPresence->getStatus(), presence->getStatus()); - CPPUNIT_ASSERT_EQUAL(JID("alice@wonderland.lit/teaparty"), presence->getTo()); - } - - void testAddDirectedPresenceReceiver_AfterSendingDirectedPresence() { - std::auto_ptr<PresenceSender> testling(createPresenceSender()); - testling->sendPresence(testPresence); - secondTestPresence->setTo(JID("foo@bar.com")); - testling->sendPresence(secondTestPresence); - channel->sentStanzas.clear(); - - testling->addDirectedPresenceReceiver(JID("alice@wonderland.lit/teaparty")); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel->sentStanzas.size())); - boost::shared_ptr<Presence> presence = boost::dynamic_pointer_cast<Presence>(channel->sentStanzas[0]); - CPPUNIT_ASSERT_EQUAL(testPresence->getStatus(), presence->getStatus()); - CPPUNIT_ASSERT_EQUAL(JID("alice@wonderland.lit/teaparty"), presence->getTo()); - } - - void testRemoveDirectedPresenceReceiver() { - std::auto_ptr<PresenceSender> testling(createPresenceSender()); - testling->addDirectedPresenceReceiver(JID("alice@wonderland.lit/teaparty")); - channel->sentStanzas.clear(); - - testling->removeDirectedPresenceReceiver(JID("alice@wonderland.lit/teaparty")); - testling->sendPresence(testPresence); - - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(channel->sentStanzas.size())); - CPPUNIT_ASSERT_EQUAL(boost::dynamic_pointer_cast<Presence>(channel->sentStanzas[0])->getType(), Presence::Unavailable); - CPPUNIT_ASSERT(channel->sentStanzas[1] == testPresence); - } - - private: - PresenceSender* createPresenceSender() { - return new PresenceSender(channel); - } - - private: - DummyStanzaChannel* channel; - boost::shared_ptr<Presence> testPresence; - boost::shared_ptr<Presence> secondTestPresence; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(PresenceSenderTest); diff --git a/Swiften/QA/ClientTest/.gitignore b/Swiften/QA/ClientTest/.gitignore deleted file mode 100644 index 9fb3e67..0000000 --- a/Swiften/QA/ClientTest/.gitignore +++ /dev/null @@ -1 +0,0 @@ -ClientTest diff --git a/Swiften/QA/ClientTest/ClientTest.cpp b/Swiften/QA/ClientTest/ClientTest.cpp deleted file mode 100644 index 74ec908..0000000 --- a/Swiften/QA/ClientTest/ClientTest.cpp +++ /dev/null @@ -1,68 +0,0 @@ -#include <boost/bind.hpp> -#include <boost/thread.hpp> - -#include "Swiften/Client/Client.h" -#include "Swiften/Network/BoostTimer.h" -#include "Swiften/EventLoop/MainEventLoop.h" -#include "Swiften/EventLoop/SimpleEventLoop.h" -#include "Swiften/Queries/Requests/GetRosterRequest.h" -#include "Swiften/Client/ClientXMLTracer.h" -#include "Swiften/Network/BoostIOServiceThread.h" -#include "Swiften/Network/MainBoostIOServiceThread.h" - -using namespace Swift; - -SimpleEventLoop eventLoop; - -Client* client = 0; -bool reconnected = false; -bool rosterReceived = false; - -void handleRosterReceived(boost::shared_ptr<Payload>) { - if (reconnected) { - rosterReceived = true; - client->disconnect(); - eventLoop.stop(); - } - else { - reconnected = true; - client->disconnect(); - client->connect(); - } -} - -void handleConnected() { - boost::shared_ptr<GetRosterRequest> rosterRequest(new GetRosterRequest(client)); - rosterRequest->onResponse.connect(boost::bind(&handleRosterReceived, _1)); - rosterRequest->send(); -} - -int main(int, char**) { - char* jid = getenv("SWIFT_CLIENTTEST_JID"); - if (!jid) { - std::cerr << "Please set the SWIFT_CLIENTTEST_JID environment variable" << std::endl; - return -1; - } - char* pass = getenv("SWIFT_CLIENTTEST_PASS"); - if (!pass) { - std::cerr << "Please set the SWIFT_CLIENTTEST_PASS environment variable" << std::endl; - return -1; - } - - client = new Swift::Client(JID(jid), String(pass)); - ClientXMLTracer* tracer = new ClientXMLTracer(client); - client->onConnected.connect(&handleConnected); - client->connect(); - - { - boost::shared_ptr<BoostTimer> timer(new BoostTimer(30000, &MainBoostIOServiceThread::getInstance().getIOService())); - timer->onTick.connect(boost::bind(&SimpleEventLoop::stop, &eventLoop)); - timer->start(); - - eventLoop.run(); - } - - delete tracer; - delete client; - return !rosterReceived; -} diff --git a/Swiften/QA/ClientTest/SConscript b/Swiften/QA/ClientTest/SConscript deleted file mode 100644 index bc9cf95..0000000 --- a/Swiften/QA/ClientTest/SConscript +++ /dev/null @@ -1,22 +0,0 @@ -import os - -Import("env") - -if env["TEST"] : - myenv = env.Clone() - myenv.MergeFlags(myenv["SWIFTEN_FLAGS"]) - myenv.MergeFlags(myenv["CPPUNIT_FLAGS"]) - myenv.MergeFlags(myenv["LIBIDN_FLAGS"]) - myenv.MergeFlags(myenv["BOOST_FLAGS"]) - myenv.MergeFlags(myenv.get("SQLITE_FLAGS", "")) - myenv.MergeFlags(myenv["ZLIB_FLAGS"]) - myenv.MergeFlags(myenv["OPENSSL_FLAGS"]) - myenv.MergeFlags(myenv.get("LIBXML_FLAGS", "")) - myenv.MergeFlags(myenv.get("EXPAT_FLAGS", "")) - - for i in ["SWIFT_CLIENTTEST_JID", "SWIFT_CLIENTTEST_PASS"]: - if os.environ.get(i, "") : - myenv["ENV"][i] = os.environ[i] - - tester = myenv.Program("ClientTest", ["ClientTest.cpp"]) - myenv.Test(tester, "system") diff --git a/Swiften/QA/NetworkTest/.gitignore b/Swiften/QA/NetworkTest/.gitignore deleted file mode 100644 index 5a3caca..0000000 --- a/Swiften/QA/NetworkTest/.gitignore +++ /dev/null @@ -1 +0,0 @@ -NetworkTest diff --git a/Swiften/QA/NetworkTest/BoostConnectionServerTest.cpp b/Swiften/QA/NetworkTest/BoostConnectionServerTest.cpp deleted file mode 100644 index 926c9ae..0000000 --- a/Swiften/QA/NetworkTest/BoostConnectionServerTest.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Base/String.h" -#include "Swiften/Network/BoostConnectionServer.h" -#include "Swiften/Network/BoostIOServiceThread.h" -#include "Swiften/EventLoop/DummyEventLoop.h" - -using namespace Swift; - -class BoostConnectionServerTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(BoostConnectionServerTest); - CPPUNIT_TEST(testConstructor_TwoServersOnSamePort); - CPPUNIT_TEST(testStart_Conflict); - CPPUNIT_TEST(testStop); - CPPUNIT_TEST_SUITE_END(); - - public: - void setUp() { - boostIOServiceThread_ = new BoostIOServiceThread(); - eventLoop_ = new DummyEventLoop(); - stopped = false; - stoppedError.reset(); - } - - void tearDown() { - while (eventLoop_->hasEvents()) { - eventLoop_->processEvents(); - } - delete eventLoop_; - delete boostIOServiceThread_; - } - - void testConstructor_TwoServersOnSamePort() { - boost::shared_ptr<BoostConnectionServer> testling(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService())); - boost::shared_ptr<BoostConnectionServer> testling2(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService())); - } - - void testStart_Conflict() { - boost::shared_ptr<BoostConnectionServer> testling(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService())); - testling->start(); - - boost::shared_ptr<BoostConnectionServer> testling2(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService())); - testling2->onStopped.connect( - boost::bind(&BoostConnectionServerTest::handleStopped, this, _1)); - - testling->stop(); - } - - void testStop() { - boost::shared_ptr<BoostConnectionServer> testling(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService())); - testling->start(); - - testling->stop(); - - boost::shared_ptr<BoostConnectionServer> testling2(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService())); - testling2->start(); - - testling2->stop(); - } - - void handleStopped(boost::optional<BoostConnectionServer::Error> e) { - stopped = true; - stoppedError = e; - } - - private: - BoostIOServiceThread* boostIOServiceThread_; - DummyEventLoop* eventLoop_; - bool stopped; - boost::optional<BoostConnectionServer::Error> stoppedError; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(BoostConnectionServerTest); diff --git a/Swiften/QA/NetworkTest/BoostConnectionTest.cpp b/Swiften/QA/NetworkTest/BoostConnectionTest.cpp deleted file mode 100644 index af4e003..0000000 --- a/Swiften/QA/NetworkTest/BoostConnectionTest.cpp +++ /dev/null @@ -1,88 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Base/String.h" -#include "Swiften/Base/sleep.h" -#include "Swiften/Network/BoostConnection.h" -#include "Swiften/Network/HostAddress.h" -#include "Swiften/Network/HostAddressPort.h" -#include "Swiften/Network/BoostIOServiceThread.h" -#include "Swiften/EventLoop/DummyEventLoop.h" - -const unsigned char* address = reinterpret_cast<const unsigned char*>("\x41\x63\xde\x89"); - -using namespace Swift; - -class BoostConnectionTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(BoostConnectionTest); - CPPUNIT_TEST(testDestructor); - CPPUNIT_TEST(testDestructor_PendingEvents); - CPPUNIT_TEST(testWrite); - CPPUNIT_TEST_SUITE_END(); - - public: - BoostConnectionTest() {} - - void setUp() { - boostIOServiceThread_ = new BoostIOServiceThread(); - eventLoop_ = new DummyEventLoop(); - disconnected = false; - } - - void tearDown() { - delete eventLoop_; - delete boostIOServiceThread_; - } - - void testDestructor() { - { - boost::shared_ptr<BoostConnection> testling(new BoostConnection(&boostIOServiceThread_->getIOService())); - testling->connect(HostAddressPort(HostAddress(address, 4), 5222)); - } - } - - void testDestructor_PendingEvents() { - { - boost::shared_ptr<BoostConnection> testling(new BoostConnection(&boostIOServiceThread_->getIOService())); - testling->connect(HostAddressPort(HostAddress(address, 4), 5222)); - while (!eventLoop_->hasEvents()) { - Swift::sleep(10); - } - } - eventLoop_->processEvents(); - } - - void testWrite() { - boost::shared_ptr<BoostConnection> testling(new BoostConnection(&boostIOServiceThread_->getIOService())); - testling->onConnectFinished.connect(boost::bind(&BoostConnectionTest::doWrite, this, testling.get())); - testling->onDataRead.connect(boost::bind(&BoostConnectionTest::handleDataRead, this, _1)); - testling->onDisconnected.connect(boost::bind(&BoostConnectionTest::handleDisconnected, this)); - testling->connect(HostAddressPort(HostAddress("65.99.222.137"), 5222)); - while (receivedData.isEmpty()) { - Swift::sleep(10); - eventLoop_->processEvents(); - } - testling->disconnect(); - } - - void doWrite(BoostConnection* connection) { - connection->write(ByteArray("<stream:stream>")); - } - - void handleDataRead(const ByteArray& data) { - receivedData += data; - } - - void handleDisconnected() { - disconnected = true; - } - - private: - BoostIOServiceThread* boostIOServiceThread_; - DummyEventLoop* eventLoop_; - ByteArray receivedData; - bool disconnected; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(BoostConnectionTest); diff --git a/Swiften/QA/NetworkTest/DomainNameResolverTest.cpp b/Swiften/QA/NetworkTest/DomainNameResolverTest.cpp deleted file mode 100644 index 09837d6..0000000 --- a/Swiften/QA/NetworkTest/DomainNameResolverTest.cpp +++ /dev/null @@ -1,168 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/bind.hpp> - -#include "Swiften/Base/sleep.h" -#include "Swiften/Base/String.h" -#include "Swiften/Base/ByteArray.h" -#include "Swiften/Network/PlatformDomainNameResolver.h" -#include "Swiften/Network/DomainNameAddressQuery.h" -#include "Swiften/Network/DomainNameServiceQuery.h" -#include "Swiften/EventLoop/DummyEventLoop.h" - -using namespace Swift; - -class DomainNameResolverTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(DomainNameResolverTest); - CPPUNIT_TEST(testResolveAddress); - CPPUNIT_TEST(testResolveAddress_Error); - //CPPUNIT_TEST(testResolveAddress_IPv6); - CPPUNIT_TEST(testResolveAddress_International); - CPPUNIT_TEST(testResolveAddress_Localhost); - CPPUNIT_TEST(testResolveService); - CPPUNIT_TEST(testResolveService_Error); - CPPUNIT_TEST_SUITE_END(); - - public: - DomainNameResolverTest() {} - - void setUp() { - eventLoop = new DummyEventLoop(); - resolver = new PlatformDomainNameResolver(); - resultsAvailable = false; - } - - void tearDown() { - delete resolver; - delete eventLoop; - } - - void testResolveAddress() { - boost::shared_ptr<DomainNameAddressQuery> query(createAddressQuery("xmpp.test.swift.im")); - - query->run(); - waitForResults(); - - CPPUNIT_ASSERT(!addressQueryError); - CPPUNIT_ASSERT_EQUAL(std::string("10.0.0.0"), addressQueryResult.toString()); - } - - void testResolveAddress_Error() { - boost::shared_ptr<DomainNameAddressQuery> query(createAddressQuery("invalid.test.swift.im")); - - query->run(); - waitForResults(); - - CPPUNIT_ASSERT(addressQueryError); - } - - void testResolveAddress_IPv6() { - boost::shared_ptr<DomainNameAddressQuery> query(createAddressQuery("xmpp-ipv6.test.swift.im")); - - query->run(); - waitForResults(); - - CPPUNIT_ASSERT(!addressQueryError); - CPPUNIT_ASSERT_EQUAL(std::string("0000:0000:0000:0000:0000:ffff:0a00:0104"), addressQueryResult.toString()); - } - - void testResolveAddress_International() { - boost::shared_ptr<DomainNameAddressQuery> query(createAddressQuery("tron\xc3\xa7on.test.swift.im")); - - query->run(); - waitForResults(); - - CPPUNIT_ASSERT(!addressQueryError); - CPPUNIT_ASSERT_EQUAL(std::string("10.0.0.3"), addressQueryResult.toString()); - } - - void testResolveAddress_Localhost() { - boost::shared_ptr<DomainNameAddressQuery> query(createAddressQuery("localhost")); - - query->run(); - waitForResults(); - - CPPUNIT_ASSERT(!addressQueryError); - CPPUNIT_ASSERT_EQUAL(std::string("127.0.0.1"), addressQueryResult.toString()); - } - - - void testResolveService() { - boost::shared_ptr<DomainNameServiceQuery> query(createServiceQuery("_xmpp-client._tcp.xmpp-srv.test.swift.im")); - - query->run(); - waitForResults(); - - CPPUNIT_ASSERT_EQUAL(4, static_cast<int>(serviceQueryResult.size())); - CPPUNIT_ASSERT_EQUAL(String("xmpp1.test.swift.im"), serviceQueryResult[0].hostname); - CPPUNIT_ASSERT_EQUAL(5000, serviceQueryResult[0].port); - CPPUNIT_ASSERT_EQUAL(0, serviceQueryResult[0].priority); - CPPUNIT_ASSERT_EQUAL(1, serviceQueryResult[0].weight); - CPPUNIT_ASSERT_EQUAL(String("xmpp-invalid.test.swift.im"), serviceQueryResult[1].hostname); - CPPUNIT_ASSERT_EQUAL(5000, serviceQueryResult[1].port); - CPPUNIT_ASSERT_EQUAL(1, serviceQueryResult[1].priority); - CPPUNIT_ASSERT_EQUAL(100, serviceQueryResult[1].weight); - CPPUNIT_ASSERT_EQUAL(String("xmpp3.test.swift.im"), serviceQueryResult[2].hostname); - CPPUNIT_ASSERT_EQUAL(5000, serviceQueryResult[2].port); - CPPUNIT_ASSERT_EQUAL(3, serviceQueryResult[2].priority); - CPPUNIT_ASSERT_EQUAL(100, serviceQueryResult[2].weight); - CPPUNIT_ASSERT_EQUAL(String("xmpp2.test.swift.im"), serviceQueryResult[3].hostname); - CPPUNIT_ASSERT_EQUAL(5000, serviceQueryResult[3].port); - CPPUNIT_ASSERT_EQUAL(5, serviceQueryResult[3].priority); - CPPUNIT_ASSERT_EQUAL(100, serviceQueryResult[3].weight); - } - - void testResolveService_Error() { - } - -/* - } - */ - - private: - boost::shared_ptr<DomainNameAddressQuery> createAddressQuery(const String& domain) { - boost::shared_ptr<DomainNameAddressQuery> result = resolver->createAddressQuery(domain); - result->onResult.connect(boost::bind(&DomainNameResolverTest::handleAddressQueryResult, this, _1, _2)); - return result; - } - - void handleAddressQueryResult(const HostAddress& address, boost::optional<DomainNameResolveError> error) { - addressQueryResult = address; - addressQueryError = error; - resultsAvailable = true; - } - - boost::shared_ptr<DomainNameServiceQuery> createServiceQuery(const String& domain) { - boost::shared_ptr<DomainNameServiceQuery> result = resolver->createServiceQuery(domain); - result->onResult.connect(boost::bind(&DomainNameResolverTest::handleServiceQueryResult, this, _1)); - return result; - } - - void handleServiceQueryResult(const std::vector<DomainNameServiceQuery::Result>& result) { - serviceQueryResult = result; - resultsAvailable = true; - } - - void waitForResults() { - eventLoop->processEvents(); - int ticks = 0; - while (!resultsAvailable) { - ticks++; - if (ticks > 1000) { - CPPUNIT_ASSERT(false); - } - Swift::sleep(10); - eventLoop->processEvents(); - } - } - - private: - DummyEventLoop* eventLoop; - bool resultsAvailable; - HostAddress addressQueryResult; - boost::optional<DomainNameResolveError> addressQueryError; - std::vector<DomainNameServiceQuery::Result> serviceQueryResult; - PlatformDomainNameResolver* resolver; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(DomainNameResolverTest); diff --git a/Swiften/QA/NetworkTest/SConscript b/Swiften/QA/NetworkTest/SConscript deleted file mode 100644 index 871df39..0000000 --- a/Swiften/QA/NetworkTest/SConscript +++ /dev/null @@ -1,18 +0,0 @@ -import os - -Import("env") - -if env["TEST"] : - myenv = env.Clone() - myenv.MergeFlags(myenv["CHECKER_FLAGS"]) - myenv.MergeFlags(myenv["SWIFTEN_FLAGS"]) - myenv.MergeFlags(myenv["CPPUNIT_FLAGS"]) - myenv.MergeFlags(myenv["BOOST_FLAGS"]) - myenv.MergeFlags(myenv["LIBIDN_FLAGS"]) - - tester = myenv.Program("NetworkTest", [ - "BoostConnectionServerTest.cpp", - "BoostConnectionTest.cpp", - "DomainNameResolverTest.cpp", - ]) - myenv.Test(tester, "system") diff --git a/Swiften/QA/SConscript b/Swiften/QA/SConscript deleted file mode 100644 index ede7b39..0000000 --- a/Swiften/QA/SConscript +++ /dev/null @@ -1,4 +0,0 @@ -SConscript([ - "NetworkTest/SConscript", - "ClientTest/SConscript", - ]) diff --git a/Swiften/Queries/DummyIQChannel.h b/Swiften/Queries/DummyIQChannel.h deleted file mode 100644 index c0a4a25..0000000 --- a/Swiften/Queries/DummyIQChannel.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef SWIFTEN_DummyIQChannel_H -#define SWIFTEN_DummyIQChannel_H - -#include <vector> - -#include "Swiften/Queries/IQChannel.h" - -namespace Swift { - class DummyIQChannel : public IQChannel { - public: - DummyIQChannel() {} - - virtual void sendIQ(boost::shared_ptr<IQ> iq) { - iqs_.push_back(iq); - } - - virtual String getNewIQID() { - return "test-id"; - } - - virtual bool isAvailable() { - return true; - } - - std::vector<boost::shared_ptr<IQ> > iqs_; - }; -} - -#endif diff --git a/Swiften/Queries/GenericRequest.h b/Swiften/Queries/GenericRequest.h deleted file mode 100644 index 77dae52..0000000 --- a/Swiften/Queries/GenericRequest.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include <boost/signal.hpp> - -#include "Swiften/Queries/Request.h" - -namespace Swift { - template<typename PAYLOAD_TYPE> - class GenericRequest : public Request { - public: - GenericRequest( - IQ::Type type, - const JID& receiver, - boost::shared_ptr<Payload> payload, - IQRouter* router) : - Request(type, receiver, payload, router) { - } - - virtual void handleResponse(boost::shared_ptr<Payload> payload, boost::optional<ErrorPayload> error) { - onResponse(boost::dynamic_pointer_cast<PAYLOAD_TYPE>(payload), error); - } - - public: - boost::signal<void (boost::shared_ptr<PAYLOAD_TYPE>, const boost::optional<ErrorPayload>&)> onResponse; - }; -} diff --git a/Swiften/Queries/GetResponder.h b/Swiften/Queries/GetResponder.h deleted file mode 100644 index 2bd2fe2..0000000 --- a/Swiften/Queries/GetResponder.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include "Swiften/Queries/Responder.h" - -namespace Swift { - template<typename T> - class GetResponder : public Responder<T> { - public: - GetResponder(IQRouter* router) : Responder<T>(router) {} - - private: - virtual bool handleSetRequest(const JID&, const String&, boost::shared_ptr<T>) { return false; } - }; -} diff --git a/Swiften/Queries/IQChannel.cpp b/Swiften/Queries/IQChannel.cpp deleted file mode 100644 index 539dea0..0000000 --- a/Swiften/Queries/IQChannel.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Queries/IQChannel.h" - -namespace Swift { - -IQChannel::~IQChannel() { -} - -} diff --git a/Swiften/Queries/IQChannel.h b/Swiften/Queries/IQChannel.h deleted file mode 100644 index 1692afe..0000000 --- a/Swiften/Queries/IQChannel.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef SWIFTEN_IQChannel_H -#define SWIFTEN_IQChannel_H - -#include <boost/signal.hpp> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/IQ.h" - -namespace Swift { - class IQChannel { - public: - virtual ~IQChannel(); - - virtual void sendIQ(boost::shared_ptr<IQ>) = 0; - virtual String getNewIQID() = 0; - - virtual bool isAvailable() = 0; - - boost::signal<void (boost::shared_ptr<IQ>)> onIQReceived; - }; -} - -#endif diff --git a/Swiften/Queries/IQHandler.cpp b/Swiften/Queries/IQHandler.cpp deleted file mode 100644 index 81bd773..0000000 --- a/Swiften/Queries/IQHandler.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#include "Swiften/Queries/IQHandler.h" -#include "Swiften/Queries/IQRouter.h" - -namespace Swift { - -IQHandler::~IQHandler() { -} - -} diff --git a/Swiften/Queries/IQHandler.h b/Swiften/Queries/IQHandler.h deleted file mode 100644 index 7389b3a..0000000 --- a/Swiften/Queries/IQHandler.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef SWIFTEN_IQHandler_H -#define SWIFTEN_IQHandler_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/IQ.h" - -namespace Swift { - class IQRouter; - - class IQHandler { - public: - virtual ~IQHandler(); - - virtual bool handleIQ(boost::shared_ptr<IQ>) = 0; - }; -} - -#endif diff --git a/Swiften/Queries/IQRouter.cpp b/Swiften/Queries/IQRouter.cpp deleted file mode 100644 index fdfa00b..0000000 --- a/Swiften/Queries/IQRouter.cpp +++ /dev/null @@ -1,81 +0,0 @@ -#include "Swiften/Queries/IQRouter.h" - -#include <algorithm> -#include <boost/bind.hpp> - -#include "Swiften/Base/foreach.h" -#include "Swiften/Queries/IQHandler.h" -#include "Swiften/Queries/IQChannel.h" -#include "Swiften/Elements/ErrorPayload.h" - -namespace Swift { - -static void noop(IQHandler*) {} - -IQRouter::IQRouter(IQChannel* channel) : channel_(channel), queueRemoves_(false) { - channel->onIQReceived.connect(boost::bind(&IQRouter::handleIQ, this, _1)); -} - -IQRouter::~IQRouter() { -} - -bool IQRouter::isAvailable() { - return channel_->isAvailable(); -} - -void IQRouter::handleIQ(boost::shared_ptr<IQ> iq) { - queueRemoves_ = true; - - bool handled = false; - foreach(boost::shared_ptr<IQHandler> handler, handlers_) { - handled |= handler->handleIQ(iq); - if (handled) { - break; - } - } - if (!handled && (iq->getType() == IQ::Get || iq->getType() == IQ::Set) ) { - channel_->sendIQ(IQ::createError(iq->getFrom(), iq->getID(), ErrorPayload::FeatureNotImplemented, ErrorPayload::Cancel)); - } - - processPendingRemoves(); - - queueRemoves_ = false; -} - -void IQRouter::processPendingRemoves() { - foreach(boost::shared_ptr<IQHandler> handler, queuedRemoves_) { - handlers_.erase(std::remove(handlers_.begin(), handlers_.end(), handler), handlers_.end()); - } - queuedRemoves_.clear(); -} - -void IQRouter::addHandler(IQHandler* handler) { - addHandler(boost::shared_ptr<IQHandler>(handler, noop)); -} - -void IQRouter::removeHandler(IQHandler* handler) { - removeHandler(boost::shared_ptr<IQHandler>(handler, noop)); -} - -void IQRouter::addHandler(boost::shared_ptr<IQHandler> handler) { - handlers_.push_back(handler); -} - -void IQRouter::removeHandler(boost::shared_ptr<IQHandler> handler) { - if (queueRemoves_) { - queuedRemoves_.push_back(handler); - } - else { - handlers_.erase(std::remove(handlers_.begin(), handlers_.end(), handler), handlers_.end()); - } -} - -void IQRouter::sendIQ(boost::shared_ptr<IQ> iq) { - channel_->sendIQ(iq); -} - -String IQRouter::getNewIQID() { - return channel_->getNewIQID(); -} - -} diff --git a/Swiften/Queries/IQRouter.h b/Swiften/Queries/IQRouter.h deleted file mode 100644 index 717a845..0000000 --- a/Swiften/Queries/IQRouter.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef SWIFTEN_IQRouter_H -#define SWIFTEN_IQRouter_H - -#include <boost/shared_ptr.hpp> -#include <vector> - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/IQ.h" - -namespace Swift { - class IQChannel; - class IQHandler; - - class IQRouter { - public: - IQRouter(IQChannel* channel); - ~IQRouter(); - - void addHandler(IQHandler* handler); - void removeHandler(IQHandler* handler); - void addHandler(boost::shared_ptr<IQHandler> handler); - void removeHandler(boost::shared_ptr<IQHandler> handler); - - void sendIQ(boost::shared_ptr<IQ> iq); - String getNewIQID(); - - bool isAvailable(); - - private: - void handleIQ(boost::shared_ptr<IQ> iq); - void processPendingRemoves(); - - private: - IQChannel* channel_; - std::vector< boost::shared_ptr<IQHandler> > handlers_; - std::vector< boost::shared_ptr<IQHandler> > queuedRemoves_; - bool queueRemoves_; - }; -} - -#endif diff --git a/Swiften/Queries/Request.cpp b/Swiften/Queries/Request.cpp deleted file mode 100644 index ce9f763..0000000 --- a/Swiften/Queries/Request.cpp +++ /dev/null @@ -1,55 +0,0 @@ -#include "Swiften/Queries/Request.h" -#include "Swiften/Queries/IQRouter.h" -#include "Swiften/EventLoop/MainEventLoop.h" - -namespace Swift { - -Request::Request(IQ::Type type, const JID& receiver, boost::shared_ptr<Payload> payload, IQRouter* router) : router_(router), type_(type), receiver_(receiver), payload_(payload), sent_(false) { -} - -Request::Request(IQ::Type type, const JID& receiver, IQRouter* router) : router_(router), type_(type), receiver_(receiver), sent_(false) { -} - -void Request::send() { - assert(payload_); - assert(!sent_); - sent_ = true; - - boost::shared_ptr<IQ> iq(new IQ(type_)); - iq->setTo(receiver_); - iq->addPayload(payload_); - id_ = router_->getNewIQID(); - iq->setID(id_); - - try { - router_->addHandler(shared_from_this()); - } - catch (const std::exception&) { - router_->addHandler(this); - } - - router_->sendIQ(iq); -} - -bool Request::handleIQ(boost::shared_ptr<IQ> iq) { - bool handled = false; - if (sent_ && iq->getID() == id_) { - if (iq->getType() == IQ::Result) { - handleResponse(iq->getPayloadOfSameType(payload_), boost::optional<ErrorPayload>()); - } - else { - boost::shared_ptr<ErrorPayload> errorPayload = iq->getPayload<ErrorPayload>(); - if (errorPayload) { - handleResponse(boost::shared_ptr<Payload>(), boost::optional<ErrorPayload>(*errorPayload)); - } - else { - handleResponse(boost::shared_ptr<Payload>(), boost::optional<ErrorPayload>(ErrorPayload::UndefinedCondition)); - } - } - router_->removeHandler(this); - handled = true; - } - return handled; -} - -} diff --git a/Swiften/Queries/Request.h b/Swiften/Queries/Request.h deleted file mode 100644 index cc4a58e..0000000 --- a/Swiften/Queries/Request.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef SWIFTEN_Request_H -#define SWIFTEN_Request_H - -#include <boost/shared_ptr.hpp> -#include <boost/optional.hpp> -#include <boost/enable_shared_from_this.hpp> - -#include "Swiften/Base/String.h" -#include "Swiften/Queries/IQHandler.h" -#include "Swiften/Elements/IQ.h" -#include "Swiften/Elements/Payload.h" -#include "Swiften/Elements/ErrorPayload.h" -#include "Swiften/JID/JID.h" - -namespace Swift { - class Request : public IQHandler, public boost::enable_shared_from_this<Request> { - public: - Request( - IQ::Type type, - const JID& receiver, - boost::shared_ptr<Payload> payload, - IQRouter* router); - Request( - IQ::Type type, - const JID& receiver, - IQRouter* router); - - void send(); - - protected: - virtual void setPayload(boost::shared_ptr<Payload> p) { - payload_ = p; - } - - virtual void handleResponse(boost::shared_ptr<Payload>, boost::optional<ErrorPayload>) = 0; - - private: - bool handleIQ(boost::shared_ptr<IQ>); - - private: - IQRouter* router_; - IQ::Type type_; - JID receiver_; - boost::shared_ptr<Payload> payload_; - String id_; - bool sent_; - }; -} - -#endif diff --git a/Swiften/Queries/Requests/GetDiscoInfoRequest.h b/Swiften/Queries/Requests/GetDiscoInfoRequest.h deleted file mode 100644 index 70f09ca..0000000 --- a/Swiften/Queries/Requests/GetDiscoInfoRequest.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include "Swiften/Queries/GenericRequest.h" -#include "Swiften/Elements/DiscoInfo.h" - -namespace Swift { - class GetDiscoInfoRequest : public GenericRequest<DiscoInfo> { - public: - GetDiscoInfoRequest(const JID& jid, IQRouter* router) : - GenericRequest<DiscoInfo>(IQ::Get, jid, boost::shared_ptr<DiscoInfo>(new DiscoInfo()), router) { - } - }; -} diff --git a/Swiften/Queries/Requests/GetPrivateStorageRequest.h b/Swiften/Queries/Requests/GetPrivateStorageRequest.h deleted file mode 100644 index 5d6440e..0000000 --- a/Swiften/Queries/Requests/GetPrivateStorageRequest.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -#include <boost/signals.hpp> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Queries/Request.h" -#include "Swiften/Elements/PrivateStorage.h" -#include "Swiften/Elements/ErrorPayload.h" - -namespace Swift { - template<typename PAYLOAD_TYPE> - class GetPrivateStorageRequest : public Request { - public: - GetPrivateStorageRequest(IQRouter* router) : Request(IQ::Get, JID(), boost::shared_ptr<PrivateStorage>(new PrivateStorage(boost::shared_ptr<Payload>(new PAYLOAD_TYPE()))), router) { - } - - virtual void handleResponse(boost::shared_ptr<Payload> payload, boost::optional<ErrorPayload> error) { - boost::shared_ptr<PrivateStorage> storage = boost::dynamic_pointer_cast<PrivateStorage>(payload); - if (storage) { - onResponse(boost::dynamic_pointer_cast<PAYLOAD_TYPE>(storage->getPayload()), error); - } - else { - onResponse(boost::shared_ptr<PAYLOAD_TYPE>(), error); - } - } - - public: - boost::signal<void (boost::shared_ptr<PAYLOAD_TYPE>, const boost::optional<ErrorPayload>&)> onResponse; - }; -} diff --git a/Swiften/Queries/Requests/GetRosterRequest.h b/Swiften/Queries/Requests/GetRosterRequest.h deleted file mode 100644 index cac1c12..0000000 --- a/Swiften/Queries/Requests/GetRosterRequest.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include "Swiften/Queries/GenericRequest.h" -#include "Swiften/Elements/RosterPayload.h" - -namespace Swift { - class GetRosterRequest : public GenericRequest<RosterPayload> { - public: - GetRosterRequest(IQRouter* router) : - GenericRequest<RosterPayload>(IQ::Get, JID(), boost::shared_ptr<Payload>(new RosterPayload()), router) { - } - }; -} diff --git a/Swiften/Queries/Requests/GetSecurityLabelsCatalogRequest.h b/Swiften/Queries/Requests/GetSecurityLabelsCatalogRequest.h deleted file mode 100644 index 87b51ce..0000000 --- a/Swiften/Queries/Requests/GetSecurityLabelsCatalogRequest.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include "Swiften/Queries/GenericRequest.h" -#include "Swiften/Elements/SecurityLabelsCatalog.h" - -namespace Swift { - class GetSecurityLabelsCatalogRequest : public GenericRequest<SecurityLabelsCatalog> { - public: - GetSecurityLabelsCatalogRequest( - const JID& recipient, - IQRouter* router) : - GenericRequest<SecurityLabelsCatalog>( - IQ::Get, JID(), boost::shared_ptr<SecurityLabelsCatalog>(new SecurityLabelsCatalog(recipient)), router) { - } - }; -} diff --git a/Swiften/Queries/Requests/GetVCardRequest.h b/Swiften/Queries/Requests/GetVCardRequest.h deleted file mode 100644 index 8fc6e17..0000000 --- a/Swiften/Queries/Requests/GetVCardRequest.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -#include "Swiften/Queries/GenericRequest.h" -#include "Swiften/Elements/VCard.h" - -namespace Swift { - class GetVCardRequest : public GenericRequest<VCard> { - public: - GetVCardRequest(const JID& jid, IQRouter* router) : GenericRequest<VCard>(IQ::Get, jid, boost::shared_ptr<Payload>(new VCard()), router) { - } - }; -} diff --git a/Swiften/Queries/Requests/SetPrivateStorageRequest.h b/Swiften/Queries/Requests/SetPrivateStorageRequest.h deleted file mode 100644 index 834ddd8..0000000 --- a/Swiften/Queries/Requests/SetPrivateStorageRequest.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include <boost/signals.hpp> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Queries/Request.h" -#include "Swiften/Elements/PrivateStorage.h" -#include "Swiften/Elements/ErrorPayload.h" - -namespace Swift { - template<typename PAYLOAD_TYPE> - class SetPrivateStorageRequest : public Request { - public: - SetPrivateStorageRequest(boost::shared_ptr<PAYLOAD_TYPE> payload, IQRouter* router) : Request(IQ::Set, JID(), boost::shared_ptr<PrivateStorage>(new PrivateStorage(payload)), router) { - } - - virtual void handleResponse(boost::shared_ptr<Payload> payload, boost::optional<ErrorPayload> error) { - onResponse(error); - } - - public: - boost::signal<void (const boost::optional<ErrorPayload>&)> onResponse; - }; -} diff --git a/Swiften/Queries/Requests/UnitTest/GetPrivateStorageRequestTest.cpp b/Swiften/Queries/Requests/UnitTest/GetPrivateStorageRequestTest.cpp deleted file mode 100644 index a86a111..0000000 --- a/Swiften/Queries/Requests/UnitTest/GetPrivateStorageRequestTest.cpp +++ /dev/null @@ -1,106 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/shared_ptr.hpp> -#include <boost/bind.hpp> - -#include "Swiften/Queries/Requests/GetPrivateStorageRequest.h" -#include "Swiften/Queries/IQRouter.h" -#include "Swiften/Queries/DummyIQChannel.h" -#include "Swiften/Elements/Payload.h" - -using namespace Swift; - -class GetPrivateStorageRequestTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(GetPrivateStorageRequestTest); - CPPUNIT_TEST(testSend); - CPPUNIT_TEST(testHandleResponse); - CPPUNIT_TEST(testHandleResponse_Error); - CPPUNIT_TEST_SUITE_END(); - - public: - class MyPayload : public Payload { - public: - MyPayload(const String& text = "") : text(text) {} - String text; - }; - - public: - GetPrivateStorageRequestTest() {} - - void setUp() { - channel = new DummyIQChannel(); - router = new IQRouter(channel); - } - - void tearDown() { - delete router; - delete channel; - } - - void testSend() { - GetPrivateStorageRequest<MyPayload> request(router); - request.send(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel->iqs_.size())); - CPPUNIT_ASSERT_EQUAL(JID(), channel->iqs_[0]->getTo()); - CPPUNIT_ASSERT_EQUAL(IQ::Get, channel->iqs_[0]->getType()); - boost::shared_ptr<PrivateStorage> storage = channel->iqs_[0]->getPayload<PrivateStorage>(); - CPPUNIT_ASSERT(storage); - boost::shared_ptr<MyPayload> payload = boost::dynamic_pointer_cast<MyPayload>(storage->getPayload()); - CPPUNIT_ASSERT(payload); - } - - void testHandleResponse() { - GetPrivateStorageRequest<MyPayload> testling(router); - testling.onResponse.connect(boost::bind(&GetPrivateStorageRequestTest::handleResponse, this, _1, _2)); - testling.send(); - channel->onIQReceived(createResponse("test-id", "foo")); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(responses.size())); - CPPUNIT_ASSERT_EQUAL(String("foo"), boost::dynamic_pointer_cast<MyPayload>(responses[0])->text); - } - - void testHandleResponse_Error() { - GetPrivateStorageRequest<MyPayload> testling(router); - testling.onResponse.connect(boost::bind(&GetPrivateStorageRequestTest::handleResponse, this, _1, _2)); - testling.send(); - channel->onIQReceived(createError("test-id")); - - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(responses.size())); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(errors.size())); - } - - private: - void handleResponse(boost::shared_ptr<Payload> p, const boost::optional<ErrorPayload>& e) { - if (e) { - errors.push_back(*e); - } - else { - responses.push_back(p); - } - } - - boost::shared_ptr<IQ> createResponse(const String& id, const String& text) { - boost::shared_ptr<IQ> iq(new IQ(IQ::Result)); - boost::shared_ptr<PrivateStorage> storage(new PrivateStorage()); - storage->setPayload(boost::shared_ptr<Payload>(new MyPayload(text))); - iq->addPayload(storage); - iq->setID(id); - return iq; - } - - boost::shared_ptr<IQ> createError(const String& id) { - boost::shared_ptr<IQ> iq(new IQ(IQ::Error)); - iq->setID(id); - return iq; - } - - private: - IQRouter* router; - DummyIQChannel* channel; - std::vector< ErrorPayload > errors; - std::vector< boost::shared_ptr<Payload> > responses; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(GetPrivateStorageRequestTest); diff --git a/Swiften/Queries/Responder.h b/Swiften/Queries/Responder.h deleted file mode 100644 index 9c025eb..0000000 --- a/Swiften/Queries/Responder.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef SWIFTEN_Responder_H -#define SWIFTEN_Responder_H - -#include "Swiften/Queries/IQHandler.h" -#include "Swiften/Queries/IQRouter.h" -#include "Swiften/Elements/ErrorPayload.h" - -namespace Swift { - template<typename PAYLOAD_TYPE> - class Responder : public IQHandler { - public: - Responder(IQRouter* router) : router_(router) { - router_->addHandler(this); - } - - ~Responder() { - router_->removeHandler(this); - } - - protected: - virtual bool handleGetRequest(const JID& from, const String& id, boost::shared_ptr<PAYLOAD_TYPE> payload) = 0; - virtual bool handleSetRequest(const JID& from, const String& id, boost::shared_ptr<PAYLOAD_TYPE> payload) = 0; - - void sendResponse(const JID& to, const String& id, boost::shared_ptr<Payload> payload) { - router_->sendIQ(IQ::createResult(to, id, payload)); - } - - void sendError(const JID& to, const String& id, ErrorPayload::Condition condition, ErrorPayload::Type type) { - router_->sendIQ(IQ::createError(to, id, condition, type)); - } - - private: - virtual bool handleIQ(boost::shared_ptr<IQ> iq) { - if (iq->getType() == IQ::Set || iq->getType() == IQ::Get) { - boost::shared_ptr<PAYLOAD_TYPE> payload(iq->getPayload<PAYLOAD_TYPE>()); - if (payload) { - bool result; - if (iq->getType() == IQ::Set) { - result = handleSetRequest(iq->getFrom(), iq->getID(), payload); - } - else { - result = handleGetRequest(iq->getFrom(), iq->getID(), payload); - } - if (!result) { - router_->sendIQ(IQ::createError(iq->getFrom(), iq->getID(), ErrorPayload::NotAllowed, ErrorPayload::Cancel)); - } - return true; - } - } - return false; - } - - private: - IQRouter* router_; - }; -} - -#endif diff --git a/Swiften/Queries/Responders/DiscoInfoResponder.cpp b/Swiften/Queries/Responders/DiscoInfoResponder.cpp deleted file mode 100644 index 572f83f..0000000 --- a/Swiften/Queries/Responders/DiscoInfoResponder.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "Swiften/Queries/Responders/DiscoInfoResponder.h" -#include "Swiften/Queries/IQRouter.h" -#include "Swiften/Elements/DiscoInfo.h" - -namespace Swift { - -DiscoInfoResponder::DiscoInfoResponder(IQRouter* router) : GetResponder<DiscoInfo>(router) { -} - -void DiscoInfoResponder::setDiscoInfo(const DiscoInfo& info) { - info_ = info; -} - -void DiscoInfoResponder::setDiscoInfo(const String& node, const DiscoInfo& info) { - DiscoInfo newInfo(info); - newInfo.setNode(node); - nodeInfo_[node] = newInfo; -} - -bool DiscoInfoResponder::handleGetRequest(const JID& from, const String& id, boost::shared_ptr<DiscoInfo> info) { - if (info->getNode().isEmpty()) { - sendResponse(from, id, boost::shared_ptr<DiscoInfo>(new DiscoInfo(info_))); - } - else { - std::map<String,DiscoInfo>::const_iterator i = nodeInfo_.find(info->getNode()); - if (i != nodeInfo_.end()) { - sendResponse(from, id, boost::shared_ptr<DiscoInfo>(new DiscoInfo((*i).second))); - } - else { - sendError(from, id, ErrorPayload::ItemNotFound, ErrorPayload::Cancel); - } - } - return true; -} - -} diff --git a/Swiften/Queries/Responders/DiscoInfoResponder.h b/Swiften/Queries/Responders/DiscoInfoResponder.h deleted file mode 100644 index 3270d5d..0000000 --- a/Swiften/Queries/Responders/DiscoInfoResponder.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef SWIFTEN_DiscoInfoResponder_H -#define SWIFTEN_DiscoInfoResponder_H - -#include <map> - -#include "Swiften/Queries/GetResponder.h" -#include "Swiften/Elements/DiscoInfo.h" - -namespace Swift { - class IQRouter; - - class DiscoInfoResponder : public GetResponder<DiscoInfo> { - public: - DiscoInfoResponder(IQRouter* router); - - void setDiscoInfo(const DiscoInfo& info); - void setDiscoInfo(const String& node, const DiscoInfo& info); - - private: - virtual bool handleGetRequest(const JID& from, const String& id, boost::shared_ptr<DiscoInfo> payload); - - private: - DiscoInfo info_; - std::map<String, DiscoInfo> nodeInfo_; - }; -} - -#endif diff --git a/Swiften/Queries/Responders/RosterPushResponder.h b/Swiften/Queries/Responders/RosterPushResponder.h deleted file mode 100644 index 69185c8..0000000 --- a/Swiften/Queries/Responders/RosterPushResponder.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include <boost/signal.hpp> - -#include "Swiften/Queries/SetResponder.h" -#include "Swiften/Elements/RosterPayload.h" - -namespace Swift { - class RosterPushResponder : public SetResponder<RosterPayload> { - public: - RosterPushResponder(IQRouter* router) : SetResponder<RosterPayload>(router) {} - - public: - boost::signal<void (boost::shared_ptr<RosterPayload>)> onRosterReceived; - - private: - virtual bool handleSetRequest(const JID& from, const String& id, boost::shared_ptr<RosterPayload> payload) { - onRosterReceived(payload); - sendResponse(from, id, boost::shared_ptr<Payload>()); - return true; - } - }; -} diff --git a/Swiften/Queries/Responders/SoftwareVersionResponder.cpp b/Swiften/Queries/Responders/SoftwareVersionResponder.cpp deleted file mode 100644 index e608f24..0000000 --- a/Swiften/Queries/Responders/SoftwareVersionResponder.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "Swiften/Queries/Responders/SoftwareVersionResponder.h" -#include "Swiften/Queries/IQRouter.h" - -namespace Swift { - -SoftwareVersionResponder::SoftwareVersionResponder( - const String& client, const String& version, IQRouter* router) : - GetResponder<SoftwareVersion>(router), client_(client), version_(version) { -} - -bool SoftwareVersionResponder::handleGetRequest(const JID& from, const String& id, boost::shared_ptr<SoftwareVersion>) { - sendResponse(from, id, boost::shared_ptr<SoftwareVersion>(new SoftwareVersion(client_, version_))); - return true; -} - -} diff --git a/Swiften/Queries/Responders/SoftwareVersionResponder.h b/Swiften/Queries/Responders/SoftwareVersionResponder.h deleted file mode 100644 index 85d1089..0000000 --- a/Swiften/Queries/Responders/SoftwareVersionResponder.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef SWIFTEN_SoftwareVersionResponder_H -#define SWIFTEN_SoftwareVersionResponder_H - -#include "Swiften/Queries/GetResponder.h" -#include "Swiften/Elements/SoftwareVersion.h" - -namespace Swift { - class IQRouter; - - class SoftwareVersionResponder : public GetResponder<SoftwareVersion> { - public: - SoftwareVersionResponder(const String& client, const String& version, IQRouter* router); - - private: - virtual bool handleGetRequest(const JID& from, const String& id, boost::shared_ptr<SoftwareVersion> payload); - - private: - String client_; - String version_; - }; -} - -#endif diff --git a/Swiften/Queries/Responders/UnitTest/DiscoInfoResponderTest.cpp b/Swiften/Queries/Responders/UnitTest/DiscoInfoResponderTest.cpp deleted file mode 100644 index 5993d0c..0000000 --- a/Swiften/Queries/Responders/UnitTest/DiscoInfoResponderTest.cpp +++ /dev/null @@ -1,84 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <typeinfo> - -#include "Swiften/Queries/Responders/DiscoInfoResponder.h" -#include "Swiften/Queries/IQRouter.h" -#include "Swiften/Queries/DummyIQChannel.h" - -using namespace Swift; - -class DiscoInfoResponderTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(DiscoInfoResponderTest); - CPPUNIT_TEST(testHandleRequest_GetToplevelInfo); - CPPUNIT_TEST(testHandleRequest_GetNodeInfo); - CPPUNIT_TEST(testHandleRequest_GetInvalidNodeInfo); - CPPUNIT_TEST_SUITE_END(); - - public: - DiscoInfoResponderTest() {} - - void setUp() { - channel_ = new DummyIQChannel(); - router_ = new IQRouter(channel_); - } - - void tearDown() { - delete router_; - delete channel_; - } - - void testHandleRequest_GetToplevelInfo() { - DiscoInfoResponder testling(router_); - DiscoInfo discoInfo; - discoInfo.addFeature("foo"); - testling.setDiscoInfo(discoInfo); - - boost::shared_ptr<DiscoInfo> query(new DiscoInfo()); - channel_->onIQReceived(IQ::createRequest(IQ::Get, JID("foo@bar.com"), "id-1", query)); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size())); - boost::shared_ptr<DiscoInfo> payload(channel_->iqs_[0]->getPayload<DiscoInfo>()); - CPPUNIT_ASSERT(payload); - CPPUNIT_ASSERT_EQUAL(String(""), payload->getNode()); - CPPUNIT_ASSERT(payload->hasFeature("foo")); - } - - void testHandleRequest_GetNodeInfo() { - DiscoInfoResponder testling(router_); - DiscoInfo discoInfo; - discoInfo.addFeature("foo"); - testling.setDiscoInfo(discoInfo); - DiscoInfo discoInfoBar; - discoInfoBar.addFeature("bar"); - testling.setDiscoInfo("bar-node", discoInfoBar); - - boost::shared_ptr<DiscoInfo> query(new DiscoInfo()); - query->setNode("bar-node"); - channel_->onIQReceived(IQ::createRequest(IQ::Get, JID("foo@bar.com"), "id-1", query)); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size())); - boost::shared_ptr<DiscoInfo> payload(channel_->iqs_[0]->getPayload<DiscoInfo>()); - CPPUNIT_ASSERT(payload); - CPPUNIT_ASSERT_EQUAL(String("bar-node"), payload->getNode()); - CPPUNIT_ASSERT(payload->hasFeature("bar")); - } - - void testHandleRequest_GetInvalidNodeInfo() { - DiscoInfoResponder testling(router_); - - boost::shared_ptr<DiscoInfo> query(new DiscoInfo()); - query->setNode("bar-node"); - channel_->onIQReceived(IQ::createRequest(IQ::Get, JID("foo@bar.com"), "id-1", query)); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size())); - boost::shared_ptr<ErrorPayload> payload(channel_->iqs_[0]->getPayload<ErrorPayload>()); - CPPUNIT_ASSERT(payload); - } - - private: - IQRouter* router_; - DummyIQChannel* channel_; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(DiscoInfoResponderTest); diff --git a/Swiften/Queries/SetResponder.h b/Swiften/Queries/SetResponder.h deleted file mode 100644 index 51fe39a..0000000 --- a/Swiften/Queries/SetResponder.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include "Swiften/Queries/Responder.h" - -namespace Swift { - template<typename T> - class SetResponder : public Responder<T> { - public: - SetResponder(IQRouter* router) : Responder<T>(router) {} - - private: - virtual bool handleGetRequest(const JID&, const String&, boost::shared_ptr<T>) { return false; } - }; -} diff --git a/Swiften/Queries/UnitTest/IQRouterTest.cpp b/Swiften/Queries/UnitTest/IQRouterTest.cpp deleted file mode 100644 index 5760b09..0000000 --- a/Swiften/Queries/UnitTest/IQRouterTest.cpp +++ /dev/null @@ -1,143 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/shared_ptr.hpp> -#include <boost/bind.hpp> - -#include "Swiften/Queries/IQHandler.h" -#include "Swiften/Queries/IQRouter.h" -#include "Swiften/Queries/DummyIQChannel.h" - -using namespace Swift; - -class IQRouterTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(IQRouterTest); - CPPUNIT_TEST(testRemoveHandler); - CPPUNIT_TEST(testRemoveHandler_AfterHandleIQ); - CPPUNIT_TEST(testHandleIQ_SuccesfulHandlerFirst); - CPPUNIT_TEST(testHandleIQ_SuccesfulHandlerLast); - CPPUNIT_TEST(testHandleIQ_NoSuccesfulHandler); - CPPUNIT_TEST(testHandleIQ_HandlerRemovedDuringHandle); - CPPUNIT_TEST_SUITE_END(); - - public: - IQRouterTest() {} - - void setUp() { - channel_ = new DummyIQChannel(); - } - - void tearDown() { - delete channel_; - } - - void testRemoveHandler() { - IQRouter testling(channel_); - DummyIQHandler handler1(true, &testling); - DummyIQHandler handler2(true, &testling); - testling.removeHandler(&handler1); - - channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ())); - - CPPUNIT_ASSERT_EQUAL(0, handler1.called); - CPPUNIT_ASSERT_EQUAL(1, handler2.called); - } - - void testRemoveHandler_AfterHandleIQ() { - IQRouter testling(channel_); - DummyIQHandler handler1(true, &testling); - DummyIQHandler handler2(true, &testling); - - channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ())); - testling.removeHandler(&handler1); - channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ())); - - CPPUNIT_ASSERT_EQUAL(1, handler1.called); - CPPUNIT_ASSERT_EQUAL(1, handler2.called); - } - - void testHandleIQ_SuccesfulHandlerFirst() { - IQRouter testling(channel_); - DummyIQHandler handler1(true, &testling); - DummyIQHandler handler2(false, &testling); - - channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ())); - - CPPUNIT_ASSERT_EQUAL(1, handler1.called); - CPPUNIT_ASSERT_EQUAL(0, handler2.called); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(channel_->iqs_.size())); - } - - void testHandleIQ_SuccesfulHandlerLast() { - IQRouter testling(channel_); - DummyIQHandler handler1(false, &testling); - DummyIQHandler handler2(true, &testling); - - channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ())); - - CPPUNIT_ASSERT_EQUAL(1, handler1.called); - CPPUNIT_ASSERT_EQUAL(1, handler2.called); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(channel_->iqs_.size())); - } - - void testHandleIQ_NoSuccesfulHandler() { - IQRouter testling(channel_); - DummyIQHandler handler(false, &testling); - - channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ())); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size())); - CPPUNIT_ASSERT(channel_->iqs_[0]->getPayload<ErrorPayload>()); - } - - - void testHandleIQ_HandlerRemovedDuringHandle() { - IQRouter testling(channel_); - RemovingIQHandler handler1(&testling); - DummyIQHandler handler2(true, &testling); - - channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ())); - channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ())); - - CPPUNIT_ASSERT_EQUAL(1, handler1.called); - CPPUNIT_ASSERT_EQUAL(2, handler2.called); - } - - private: - struct DummyIQHandler : public IQHandler { - DummyIQHandler(bool handle, IQRouter* router) : handle(handle), router(router), called(0) { - router->addHandler(this); - } - - ~DummyIQHandler() { - router->removeHandler(this); - } - - virtual bool handleIQ(boost::shared_ptr<IQ>) { - called++; - return handle; - } - bool handle; - IQRouter* router; - int called; - }; - - struct RemovingIQHandler : public IQHandler { - RemovingIQHandler(IQRouter* router) : router(router), called(0) { - router->addHandler(this); - } - - virtual bool handleIQ(boost::shared_ptr<IQ>) { - called++; - router->removeHandler(this); - return false; - } - IQRouter* router; - int called; - }; - - - DummyIQChannel* channel_; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(IQRouterTest); diff --git a/Swiften/Queries/UnitTest/RequestTest.cpp b/Swiften/Queries/UnitTest/RequestTest.cpp deleted file mode 100644 index c569bb5..0000000 --- a/Swiften/Queries/UnitTest/RequestTest.cpp +++ /dev/null @@ -1,167 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/shared_ptr.hpp> -#include <boost/bind.hpp> - -#include "Swiften/Queries/GenericRequest.h" -#include "Swiften/Queries/IQRouter.h" -#include "Swiften/Queries/DummyIQChannel.h" -#include "Swiften/Elements/Payload.h" - -using namespace Swift; - -class RequestTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(RequestTest); - CPPUNIT_TEST(testSendGet); - CPPUNIT_TEST(testSendSet); - CPPUNIT_TEST(testHandleIQ); - CPPUNIT_TEST(testHandleIQ_InvalidID); - CPPUNIT_TEST(testHandleIQ_Error); - CPPUNIT_TEST(testHandleIQ_ErrorWithoutPayload); - CPPUNIT_TEST(testHandleIQ_BeforeSend); - CPPUNIT_TEST_SUITE_END(); - - public: - class MyPayload : public Payload { - public: - MyPayload(const String& s = "") : text_(s) {} - String text_; - }; - - typedef GenericRequest<MyPayload> MyRequest; - - public: - RequestTest() {} - - void setUp() { - channel_ = new DummyIQChannel(); - router_ = new IQRouter(channel_); - payload_ = boost::shared_ptr<Payload>(new MyPayload("foo")); - responsePayload_ = boost::shared_ptr<Payload>(new MyPayload("bar")); - responsesReceived_ = 0; - } - - void tearDown() { - delete router_; - delete channel_; - } - - void testSendSet() { - MyRequest testling(IQ::Set, JID("foo@bar.com/baz"), payload_, router_); - testling.send(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size())); - CPPUNIT_ASSERT_EQUAL(JID("foo@bar.com/baz"), channel_->iqs_[0]->getTo()); - CPPUNIT_ASSERT_EQUAL(IQ::Set, channel_->iqs_[0]->getType()); - CPPUNIT_ASSERT_EQUAL(String("test-id"), channel_->iqs_[0]->getID()); - } - - void testSendGet() { - MyRequest testling(IQ::Get, JID("foo@bar.com/baz"), payload_, router_); - testling.send(); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size())); - CPPUNIT_ASSERT_EQUAL(IQ::Get, channel_->iqs_[0]->getType()); - } - - void testHandleIQ() { - MyRequest testling(IQ::Get, JID("foo@bar.com/baz"), payload_, router_); - testling.onResponse.connect(boost::bind(&RequestTest::handleResponse, this, _1, _2)); - testling.send(); - - channel_->onIQReceived(createResponse("test-id")); - - CPPUNIT_ASSERT_EQUAL(1, responsesReceived_); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(receivedErrors.size())); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size())); - } - - // FIXME: Doesn't test that it didn't handle the payload - void testHandleIQ_InvalidID() { - MyRequest testling(IQ::Get, JID("foo@bar.com/baz"), payload_, router_); - testling.onResponse.connect(boost::bind(&RequestTest::handleResponse, this, _1, _2)); - testling.send(); - - channel_->onIQReceived(createResponse("different-id")); - - CPPUNIT_ASSERT_EQUAL(0, responsesReceived_); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(receivedErrors.size())); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size())); - } - - void testHandleIQ_Error() { - MyRequest testling(IQ::Get, JID("foo@bar.com/baz"), payload_, router_); - testling.onResponse.connect(boost::bind(&RequestTest::handleResponse, this, _1, _2)); - testling.send(); - - boost::shared_ptr<IQ> error = createError("test-id"); - boost::shared_ptr<Payload> errorPayload = boost::shared_ptr<ErrorPayload>(new ErrorPayload(ErrorPayload::FeatureNotImplemented)); - error->addPayload(errorPayload); - channel_->onIQReceived(error); - - CPPUNIT_ASSERT_EQUAL(0, responsesReceived_); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(receivedErrors.size())); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size())); - CPPUNIT_ASSERT_EQUAL(ErrorPayload::FeatureNotImplemented, receivedErrors[0].getCondition()); - } - - void testHandleIQ_ErrorWithoutPayload() { - MyRequest testling(IQ::Get, JID("foo@bar.com/baz"), payload_, router_); - testling.onResponse.connect(boost::bind(&RequestTest::handleResponse, this, _1, _2)); - testling.send(); - - channel_->onIQReceived(createError("test-id")); - - CPPUNIT_ASSERT_EQUAL(0, responsesReceived_); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(receivedErrors.size())); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size())); - CPPUNIT_ASSERT_EQUAL(ErrorPayload::UndefinedCondition, receivedErrors[0].getCondition()); - } - - void testHandleIQ_BeforeSend() { - MyRequest testling(IQ::Get, JID("foo@bar.com/baz"), payload_, router_); - testling.onResponse.connect(boost::bind(&RequestTest::handleResponse, this, _1, _2)); - channel_->onIQReceived(createResponse("test-id")); - - CPPUNIT_ASSERT_EQUAL(0, responsesReceived_); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(receivedErrors.size())); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(channel_->iqs_.size())); - } - - private: - void handleResponse(boost::shared_ptr<Payload> p, const boost::optional<ErrorPayload>& e) { - if (e) { - receivedErrors.push_back(*e); - } - else { - boost::shared_ptr<MyPayload> payload(boost::dynamic_pointer_cast<MyPayload>(p)); - CPPUNIT_ASSERT(payload); - CPPUNIT_ASSERT_EQUAL(String("bar"), payload->text_); - ++responsesReceived_; - } - } - - boost::shared_ptr<IQ> createResponse(const String& id) { - boost::shared_ptr<IQ> iq(new IQ(IQ::Result)); - iq->addPayload(responsePayload_); - iq->setID(id); - return iq; - } - - boost::shared_ptr<IQ> createError(const String& id) { - boost::shared_ptr<IQ> iq(new IQ(IQ::Error)); - iq->setID(id); - return iq; - } - - private: - IQRouter* router_; - DummyIQChannel* channel_; - boost::shared_ptr<Payload> payload_; - boost::shared_ptr<Payload> responsePayload_; - int responsesReceived_; - std::vector<ErrorPayload> receivedErrors; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(RequestTest); diff --git a/Swiften/Queries/UnitTest/ResponderTest.cpp b/Swiften/Queries/UnitTest/ResponderTest.cpp deleted file mode 100644 index 5c758e4..0000000 --- a/Swiften/Queries/UnitTest/ResponderTest.cpp +++ /dev/null @@ -1,132 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/shared_ptr.hpp> -#include <boost/bind.hpp> - -#include "Swiften/Queries/Responder.h" -#include "Swiften/Queries/IQRouter.h" -#include "Swiften/Queries/DummyIQChannel.h" -#include "Swiften/Elements/SoftwareVersion.h" - -using namespace Swift; - -class ResponderTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(ResponderTest); - CPPUNIT_TEST(testConstructor); - CPPUNIT_TEST(testHandleIQ_Set); - CPPUNIT_TEST(testHandleIQ_Get); - CPPUNIT_TEST(testHandleIQ_Error); - CPPUNIT_TEST(testHandleIQ_Result); - CPPUNIT_TEST(testHandleIQ_NoPayload); - CPPUNIT_TEST_SUITE_END(); - - public: - ResponderTest() {} - - void setUp() { - channel_ = new DummyIQChannel(); - router_ = new IQRouter(channel_); - payload_ = boost::shared_ptr<SoftwareVersion>(new SoftwareVersion("foo")); - } - - void tearDown() { - delete router_; - delete channel_; - } - - void testConstructor() { - MyResponder testling(router_); - - channel_->onIQReceived(createRequest(IQ::Set)); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(testling.setPayloads_.size())); - } - - void testHandleIQ_Set() { - MyResponder testling(router_); - - CPPUNIT_ASSERT(dynamic_cast<IQHandler*>(&testling)->handleIQ(createRequest(IQ::Set))); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(testling.setPayloads_.size())); - CPPUNIT_ASSERT(payload_ == testling.setPayloads_[0]); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.getPayloads_.size())); - } - - void testHandleIQ_Get() { - MyResponder testling(router_); - - CPPUNIT_ASSERT(dynamic_cast<IQHandler*>(&testling)->handleIQ(createRequest(IQ::Get))); - - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(testling.getPayloads_.size())); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.setPayloads_.size())); - CPPUNIT_ASSERT(payload_ == testling.getPayloads_[0]); - } - - void testHandleIQ_Error() { - MyResponder testling(router_); - - CPPUNIT_ASSERT(!dynamic_cast<IQHandler*>(&testling)->handleIQ(createRequest(IQ::Error))); - - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.getPayloads_.size())); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.setPayloads_.size())); - } - - void testHandleIQ_Result() { - MyResponder testling(router_); - - CPPUNIT_ASSERT(!dynamic_cast<IQHandler*>(&testling)->handleIQ(createRequest(IQ::Result))); - - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.getPayloads_.size())); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.setPayloads_.size())); - } - - void testHandleIQ_NoPayload() { - MyResponder testling(router_); - - CPPUNIT_ASSERT(!dynamic_cast<IQHandler*>(&testling)->handleIQ(boost::shared_ptr<IQ>(new IQ(IQ::Get)))); - - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.getPayloads_.size())); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.setPayloads_.size())); - } - - private: - boost::shared_ptr<IQ> createRequest(IQ::Type type) { - boost::shared_ptr<IQ> iq(new IQ(type)); - iq->addPayload(payload_); - iq->setID("myid"); - iq->setFrom(JID("foo@bar.com/baz")); - return iq; - } - - private: - class MyResponder : public Responder<SoftwareVersion> { - public: - MyResponder(IQRouter* router) : Responder<SoftwareVersion>(router), getRequestResponse_(true), setRequestResponse_(true) {} - - virtual bool handleGetRequest(const JID& from, const String& id, boost::shared_ptr<SoftwareVersion> payload) { - CPPUNIT_ASSERT_EQUAL(JID("foo@bar.com/baz"), from); - CPPUNIT_ASSERT_EQUAL(String("myid"), id); - getPayloads_.push_back(payload); - return getRequestResponse_; - } - virtual bool handleSetRequest(const JID& from, const String& id, boost::shared_ptr<SoftwareVersion> payload) { - CPPUNIT_ASSERT_EQUAL(JID("foo@bar.com/baz"), from); - CPPUNIT_ASSERT_EQUAL(String("myid"), id); - setPayloads_.push_back(payload); - return setRequestResponse_; - } - - bool getRequestResponse_; - bool setRequestResponse_; - std::vector<boost::shared_ptr<SoftwareVersion> > getPayloads_; - std::vector<boost::shared_ptr<SoftwareVersion> > setPayloads_; - }; - - private: - IQRouter* router_; - DummyIQChannel* channel_; - boost::shared_ptr<SoftwareVersion> payload_; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(ResponderTest); diff --git a/Swiften/Roster/AppearOffline.h b/Swiften/Roster/AppearOffline.h deleted file mode 100644 index 673e018..0000000 --- a/Swiften/Roster/AppearOffline.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include "Swiften/Roster/RosterItemOperation.h" -#include "Swiften/Roster/ContactRosterItem.h" - -namespace Swift { - -class RosterItem; - -class AppearOffline : public RosterItemOperation { - public: - AppearOffline() { - } - - virtual void operator() (RosterItem* item) const { - ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(item); - if (contact) { - contact->setStatusShow(StatusShow::None); - } - } - -}; - -} - - diff --git a/Swiften/Roster/ContactRosterItem.cpp b/Swiften/Roster/ContactRosterItem.cpp deleted file mode 100644 index 968f7f1..0000000 --- a/Swiften/Roster/ContactRosterItem.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include "Swiften/Roster/ContactRosterItem.h" -#include "Swiften/Roster/GroupRosterItem.h" - -namespace Swift { - - -ContactRosterItem::ContactRosterItem(const JID& jid, const String& name, GroupRosterItem* parent, TreeWidgetFactory* factory) : jid_(jid), name_(name) { - parent->addChild(this); - widget_ = factory->createTreeWidgetItem(parent->getWidget()); - widget_->setText(name.isEmpty() ? jid.toString() : name); - widget_->onUserAction.connect(boost::bind(&ContactRosterItem::handleUserAction, this, _1)); - setStatusShow(StatusShow::None); -} - -ContactRosterItem::~ContactRosterItem() { - delete widget_; -} - -StatusShow::Type ContactRosterItem::getStatusShow() { - return statusShow_; -} - -void ContactRosterItem::setStatusShow(StatusShow::Type show) { - statusShow_ = show; - widget_->setStatusShow(show); -} - -void ContactRosterItem::setStatusText(const String& status) { - widget_->setStatusText(status); -} - -void ContactRosterItem::setAvatarPath(const String& path) { - widget_->setAvatarPath(path); -} - -const JID& ContactRosterItem::getJID() const { - return jid_; -} - -void ContactRosterItem::show() { - widget_->show(); -} - -void ContactRosterItem::hide() { - widget_->hide(); -} - -} - - diff --git a/Swiften/Roster/ContactRosterItem.h b/Swiften/Roster/ContactRosterItem.h deleted file mode 100644 index f1810aa..0000000 --- a/Swiften/Roster/ContactRosterItem.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef SWIFTEN_ContactRosterItem_H -#define SWIFTEN_ContactRosterItem_H - -#include "Swiften/Base/String.h" -#include "Swiften/JID/JID.h" -#include "Swiften/Roster/TreeWidgetFactory.h" -#include "Swiften/Roster/RosterItem.h" -#include "Swiften/Roster/UserRosterAction.h" -#include "Swiften/Elements/StatusShow.h" - -#include <boost/bind.hpp> -#include <boost/signal.hpp> -#include <boost/shared_ptr.hpp> - -namespace Swift { - -class TreeWidgetItem; -class GroupRosterItem; -class ContactRosterItem : public RosterItem { - public: - ContactRosterItem(const JID& jid, const String& name, GroupRosterItem* parent, TreeWidgetFactory* factory); - ~ContactRosterItem(); - - StatusShow::Type getStatusShow(); - void setStatusShow(StatusShow::Type show); - void setStatusText(const String& status); - void setAvatarPath(const String& path); - const JID& getJID() const; - void show(); - void hide(); - - private: - JID jid_; - String name_; - TreeWidgetItem *widget_; - StatusShow::Type statusShow_; -}; - -} -#endif - diff --git a/Swiften/Roster/GroupRosterItem.h b/Swiften/Roster/GroupRosterItem.h deleted file mode 100644 index 2ab59ea..0000000 --- a/Swiften/Roster/GroupRosterItem.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef SWIFTEN_GroupRosterItem_H -#define SWIFTEN_GroupRosterItem_H - -#include "Swiften/Roster/RosterItem.h" -#include "Swiften/Base/String.h" -#include "Swiften/Roster/TreeWidget.h" -#include "Swiften/Roster/TreeWidgetFactory.h" -#include "Swiften/Roster/TreeWidgetItem.h" -#include "Swiften/Roster/ContactRosterItem.h" - -#include <list> - -namespace Swift { - -class GroupRosterItem : public RosterItem { - public: - GroupRosterItem(const String& name, TreeWidget* tree, TreeWidgetFactory* factory) : name_(name) { - widget_ = factory->createTreeWidgetItem(tree); - widget_->setExpanded(true); - widget_->setText(name); - } - - ~GroupRosterItem() { - delete widget_; - } - - const String& getName() const { - return name_; - } - - TreeWidgetItem* getWidget() const { - return widget_; - } - - const std::list<RosterItem*>& getChildren() const { - return children_; - } - - void addChild(RosterItem* item) { - children_.push_back(item); - } - - void removeChild(const JID& jid) { - std::list<RosterItem*>::iterator it = children_.begin(); - while (it != children_.end()) { - ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(*it); - if (contact && contact->getJID() == jid) { - delete contact; - it = children_.erase(it); - continue; - } - GroupRosterItem* group = dynamic_cast<GroupRosterItem*>(*it); - if (group) { - group->removeChild(jid); - } - it++; - } - } - - private: - String name_; - TreeWidgetItem* widget_; - std::list<RosterItem*> children_; -}; - -} -#endif - diff --git a/Swiften/Roster/OfflineRosterFilter.h b/Swiften/Roster/OfflineRosterFilter.h deleted file mode 100644 index 512d074..0000000 --- a/Swiften/Roster/OfflineRosterFilter.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef SWIFTEN_OfflineRosterFilter_H -#define SWIFTEN_OfflineRosterFilter_H - -#include "Swiften/Roster/ContactRosterItem.h" -#include "Swiften/Roster/RosterItem.h" -#include "Swiften/Roster/RosterFilter.h" -#include "Swiften/Elements/StatusShow.h" - -namespace Swift { - -class OfflineRosterFilter : public RosterFilter { - public: - virtual ~OfflineRosterFilter() {} - virtual bool operator() (RosterItem *item) const { - ContactRosterItem *contactItem = dynamic_cast<ContactRosterItem*>(item); - return contactItem && contactItem->getStatusShow() == StatusShow::None; - } -}; - -} -#endif - - - diff --git a/Swiften/Roster/OpenChatRosterAction.h b/Swiften/Roster/OpenChatRosterAction.h deleted file mode 100644 index 03715a5..0000000 --- a/Swiften/Roster/OpenChatRosterAction.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef SWIFTEN_OpenChatRosterAction_H -#define SWIFTEN_OpenChatRosterAction_H - -#include "Swiften/Roster/UserRosterAction.h" - -namespace Swift { -class RosterItem; -class TreeWidgetItem; - -class OpenChatRosterAction : public UserRosterAction { - public: - virtual ~OpenChatRosterAction() {}; - -}; - -} -#endif - - - diff --git a/Swiften/Roster/Roster.cpp b/Swiften/Roster/Roster.cpp deleted file mode 100644 index 28245af..0000000 --- a/Swiften/Roster/Roster.cpp +++ /dev/null @@ -1,139 +0,0 @@ -#include "Swiften/Roster/Roster.h" - -#include "Swiften/Base/foreach.h" -#include "Swiften/Base/String.h" -#include "Swiften/JID/JID.h" -#include "Swiften/Roster/ContactRosterItem.h" -#include "Swiften/Roster/RosterItem.h" -#include "Swiften/Roster/GroupRosterItem.h" -#include "Swiften/Roster/RosterItemOperation.h" -#include "Swiften/Roster/TreeWidget.h" -#include "Swiften/Roster/TreeWidgetFactory.h" - -#include <boost/bind.hpp> - -#include <deque> - -namespace Swift { - -Roster::Roster(TreeWidget *treeWidget, TreeWidgetFactory *widgetFactory) : treeWidget_(treeWidget), widgetFactory_(widgetFactory) { -} - -Roster::~Roster() { - foreach (RosterItem* item, items_) { - delete item; - } - delete treeWidget_; -} - -TreeWidget* Roster::getWidget() { - return treeWidget_; -} - -GroupRosterItem* Roster::getGroup(const String& groupName) { - foreach (RosterItem *item, children_) { - GroupRosterItem *group = dynamic_cast<GroupRosterItem*>(item); - if (group && group->getName() == groupName) { - return group; - } - } - GroupRosterItem* group = new GroupRosterItem(groupName, treeWidget_, widgetFactory_); - children_.push_back(group); - items_.push_back(group); - return group; -} - -void Roster::handleUserAction(boost::shared_ptr<UserRosterAction> action) { - onUserAction(action); -} - -void Roster::addContact(const JID& jid, const String& name, const String& group) { - ContactRosterItem *item = new ContactRosterItem(jid, name, getGroup(group), widgetFactory_); - items_.push_back(item); - item->onUserAction.connect(boost::bind(&Roster::handleUserAction, this, _1)); - filterItem(item); - -} - -void Roster::removeContact(const JID& jid) { - std::vector<RosterItem*>::iterator it = children_.begin(); - while (it != children_.end()) { - ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(*it); - if (contact && contact->getJID() == jid) { - delete contact; - it = children_.erase(it); - continue; - } - GroupRosterItem* group = dynamic_cast<GroupRosterItem*>(*it); - if (group) { - group->removeChild(jid); - } - it++; - } -} - -void Roster::removeContactFromGroup(const JID& jid, const String& groupName) { - std::vector<RosterItem*>::iterator it = children_.begin(); - while (it != children_.end()) { - GroupRosterItem* group = dynamic_cast<GroupRosterItem*>(*it); - if (group && group->getName() == groupName) { - group->removeChild(jid); - } - it++; - } -} - - -void Roster::applyOnItems(const RosterItemOperation& operation) { - std::deque<RosterItem*> queue(children_.begin(), children_.end()); - while (!queue.empty()) { - RosterItem* item = *queue.begin(); - queue.pop_front(); - operation(item); - GroupRosterItem* group = dynamic_cast<GroupRosterItem*>(item); - if (group) { - queue.insert(queue.begin(), group->getChildren().begin(), group->getChildren().end()); - } - } - filterAll(); -} - -void Roster::removeFilter(RosterFilter *filter) { - for (unsigned int i = 0; i < filters_.size(); i++) { - if (filters_[i] == filter) { - filters_.erase(filters_.begin() + i); - break; - } - } - filterAll(); -} - - -void Roster::filterItem(RosterItem* rosterItem) { - ContactRosterItem *item = dynamic_cast<ContactRosterItem*>(rosterItem); - if (!item) { - return; - } - bool hide = true; - foreach (RosterFilter *filter, filters_) { - hide &= (*filter)(item); - } - filters_.size() > 0 && hide ? item->hide() : item->show(); -} - -void Roster::filterAll() { - std::deque<RosterItem*> queue(children_.begin(), children_.end()); - while (!queue.empty()) { - RosterItem *item = *queue.begin(); - queue.pop_front(); - GroupRosterItem* group = dynamic_cast<GroupRosterItem*>(item); - if (group) { - queue.insert(queue.begin(), group->getChildren().begin(), group->getChildren().end()); - } else { - filterItem(item); - } - } -} - -} - diff --git a/Swiften/Roster/Roster.h b/Swiften/Roster/Roster.h deleted file mode 100644 index 6010832..0000000 --- a/Swiften/Roster/Roster.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef SWIFTEN_Roster_H -#define SWIFTEN_Roster_H - -#include "Swiften/Base/String.h" -#include "Swiften/JID/JID.h" -#include "Swiften/Roster/RosterItemOperation.h" -#include "Swiften/Roster/UserRosterAction.h" -#include "Swiften/Roster/RosterFilter.h" - -#include <vector> -#include <boost/signal.hpp> -#include <boost/shared_ptr.hpp> - -namespace Swift { - -class TreeWidgetFactory; -class TreeWidget; -class RosterItem; -class GroupRosterItem; - -class Roster { - public: - Roster(TreeWidget *treeWidget, TreeWidgetFactory *widgetFactory); - ~Roster(); - - TreeWidget* getWidget(); - GroupRosterItem* getGroup(const String& groupName); - void addContact(const JID& jid, const String& name, const String& group); - void removeContact(const JID& jid); - void removeContactFromGroup(const JID& jid, const String& group); - void applyOnItems(const RosterItemOperation& operation); - boost::signal<void (boost::shared_ptr<UserRosterAction>)> onUserAction; - void addFilter(RosterFilter *filter) {filters_.push_back(filter);filterAll();} - void removeFilter(RosterFilter *filter); - std::vector<RosterFilter*> getFilters() {return filters_;} - - private: - void filterItem(RosterItem* item); - void filterAll(); - void handleUserAction(boost::shared_ptr<UserRosterAction> action); - TreeWidget *treeWidget_; - TreeWidgetFactory *widgetFactory_; - std::vector<RosterItem*> children_; - std::vector<RosterItem*> items_; - std::vector<RosterFilter*> filters_; -}; -} - -#endif diff --git a/Swiften/Roster/RosterFilter.h b/Swiften/Roster/RosterFilter.h deleted file mode 100644 index a824304..0000000 --- a/Swiften/Roster/RosterFilter.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef SWIFTEN_RosterFilter_H -#define SWIFTEN_RosterFilter_H - -#include "Swiften/Roster/RosterItem.h" - -namespace Swift { - -class RosterFilter { - public: - virtual ~RosterFilter() {} - virtual bool operator() (RosterItem* item) const = 0; -}; - -} -#endif - - diff --git a/Swiften/Roster/RosterItem.h b/Swiften/Roster/RosterItem.h deleted file mode 100644 index 2707920..0000000 --- a/Swiften/Roster/RosterItem.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef SWIFTEN_RosterItem_H -#define SWIFTEN_RosterItem_H - -#include "Swiften/Roster/UserRosterAction.h" - -#include <boost/signal.hpp> -#include <boost/shared_ptr.hpp> - -namespace Swift { - -class RosterItem { - public: - virtual ~RosterItem() {}; - boost::signal<void (boost::shared_ptr<UserRosterAction>)> onUserAction; - protected: - void handleUserAction(boost::shared_ptr<UserRosterAction> action) { - action->setRosterItem(this); - onUserAction(action); - } -}; - -} -#endif - diff --git a/Swiften/Roster/RosterItemOperation.h b/Swiften/Roster/RosterItemOperation.h deleted file mode 100644 index ea8e723..0000000 --- a/Swiften/Roster/RosterItemOperation.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SWIFTEN_RosterItemOperation_H -#define SWIFTEN_RosterItemOperation_H - -#include "Swiften/Roster/RosterItem.h" - -namespace Swift { - -class RosterItemOperation { - public: - virtual ~RosterItemOperation() {} - virtual void operator() (RosterItem*) const = 0; -}; - -} -#endif - diff --git a/Swiften/Roster/SetAvatar.h b/Swiften/Roster/SetAvatar.h deleted file mode 100644 index 7bc9c37..0000000 --- a/Swiften/Roster/SetAvatar.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef SWIFTEN_SetAvatar_H -#define SWIFTEN_SetAvatar_H - -#include "Swiften/Elements/Presence.h" -#include "Swiften/JID/JID.h" -#include "Swiften/Roster/RosterItemOperation.h" -#include "Swiften/Roster/ContactRosterItem.h" - -namespace Swift { - -class RosterItem; - -class SetAvatar : public RosterItemOperation { - public: - SetAvatar(const JID& jid, const String& path, JID::CompareType compareType = JID::WithoutResource) : jid_(jid), path_(path), compareType_(compareType) { - } - - virtual void operator() (RosterItem* item) const { - ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(item); - if (contact && contact->getJID().equals(jid_, compareType_)) { - contact->setAvatarPath(path_); - } - } - - private: - JID jid_; - String path_; - JID::CompareType compareType_; -}; - -} -#endif - diff --git a/Swiften/Roster/SetPresence.h b/Swiften/Roster/SetPresence.h deleted file mode 100644 index a18ae6d..0000000 --- a/Swiften/Roster/SetPresence.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SWIFTEN_SetPresence_H -#define SWIFTEN_SetPresence_H - -#include "Swiften/Elements/Presence.h" -#include "Swiften/JID/JID.h" -#include "Swiften/Roster/RosterItemOperation.h" -#include "Swiften/Roster/ContactRosterItem.h" - -namespace Swift { - -class RosterItem; - -class SetPresence : public RosterItemOperation { - public: - SetPresence(boost::shared_ptr<Presence> presence, JID::CompareType compareType = JID::WithoutResource) : presence_(presence), compareType_(compareType) { - } - - virtual void operator() (RosterItem* item) const { - ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(item); - if (contact && contact->getJID().equals(presence_->getFrom(), compareType_)) { - if (presence_->getType() != Presence::Available) { - contact->setStatusShow(StatusShow::None); - contact->setStatusText(presence_->getStatus()); - } else { - contact->setStatusShow(presence_->getShow()); - contact->setStatusText(presence_->getStatus()); - } - } - } - - private: - boost::shared_ptr<Presence> presence_; - JID::CompareType compareType_; -}; - -} -#endif - diff --git a/Swiften/Roster/TreeWidget.h b/Swiften/Roster/TreeWidget.h deleted file mode 100644 index a26003e..0000000 --- a/Swiften/Roster/TreeWidget.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef SWIFTEN_TreeWidget_H -#define SWIFTEN_TreeWidget_H - -namespace Swift { - -class TreeWidget { - public: - virtual ~TreeWidget() {} -}; - -} -#endif - diff --git a/Swiften/Roster/TreeWidgetFactory.h b/Swiften/Roster/TreeWidgetFactory.h deleted file mode 100644 index f4ba68d..0000000 --- a/Swiften/Roster/TreeWidgetFactory.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef SWIFTEN_TreeWidgetFactory_H -#define SWIFTEN_TreeWidgetFactory_H - -namespace Swift { - -class TreeWidgetItem; -class TreeWidget; - -class TreeWidgetFactory { - public: - virtual ~TreeWidgetFactory() {} - virtual TreeWidget* createTreeWidget() = 0; - virtual TreeWidgetItem* createTreeWidgetItem(TreeWidgetItem* item) = 0; - virtual TreeWidgetItem* createTreeWidgetItem(TreeWidget* item) = 0; -}; - -} - -#endif - diff --git a/Swiften/Roster/TreeWidgetItem.h b/Swiften/Roster/TreeWidgetItem.h deleted file mode 100644 index 4124546..0000000 --- a/Swiften/Roster/TreeWidgetItem.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef SWIFTEN_TreeWidgetItem_H -#define SWIFTEN_TreeWidgetItem_H - -#include "Swiften/Base/String.h" -#include "Swiften/Roster/UserRosterAction.h" -#include "Swiften/Elements/StatusShow.h" - -#include <boost/signal.hpp> -#include <boost/shared_ptr.hpp> - -namespace Swift { - -class TreeWidgetItem { - public: - virtual ~TreeWidgetItem() {} - virtual void setText(const String& text) = 0; - virtual void setStatusText(const String& text) = 0; - virtual void setAvatarPath(const String& path) = 0; - virtual void setExpanded(bool b) = 0; - //virtual void setTextColor(unsigned long color) = 0; - virtual void setStatusShow(StatusShow::Type show) = 0; - //virtual void setBackgroundColor(unsigned long color) = 0; - boost::signal<void (boost::shared_ptr<UserRosterAction>)> onUserAction; - virtual void show() = 0; - virtual void hide() = 0; - void performUserAction(boost::shared_ptr<UserRosterAction> action) { - action->setTreeWidgetItem(this); - onUserAction(action); - } -}; - -} -#endif - diff --git a/Swiften/Roster/UnitTest/MockTreeWidget.h b/Swiften/Roster/UnitTest/MockTreeWidget.h deleted file mode 100644 index e6f6def..0000000 --- a/Swiften/Roster/UnitTest/MockTreeWidget.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef SWIFTEN_MockTreeWidget_H -#define SWIFTEN_MockTreeWidget_H - -#include "Swiften/Roster/TreeWidget.h" - -namespace Swift { - -class MockTreeWidget : public TreeWidget { - public: - virtual ~MockTreeWidget() {} -}; - -} -#endif diff --git a/Swiften/Roster/UnitTest/MockTreeWidgetFactory.h b/Swiften/Roster/UnitTest/MockTreeWidgetFactory.h deleted file mode 100644 index b2b4f10..0000000 --- a/Swiften/Roster/UnitTest/MockTreeWidgetFactory.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef SWIFTEN_MockTreeWidgetFactory_H -#define SWIFTEN_MockTreeWidgetFactory_H - -#include "Swiften/Roster/TreeWidgetFactory.h" - -#include <vector> -#include "Swiften/Base/foreach.h" -#include "Swiften/Roster/UnitTest/MockTreeWidget.h" -#include "Swiften/Roster/UnitTest/MockTreeWidgetItem.h" - -namespace Swift { - -class MockTreeWidgetItem; -class MockTreeWidget; - -class MockTreeWidgetFactory : public TreeWidgetFactory { - public: - virtual ~MockTreeWidgetFactory() {} - virtual TreeWidget* createTreeWidget() { - root_ = new MockTreeWidget(); - return root_; - }; - virtual TreeWidgetItem* createTreeWidgetItem(TreeWidgetItem* group) { - MockTreeWidgetItem* entry = new MockTreeWidgetItem(); - groupMembers_[group].push_back(entry); - return entry; - }; - virtual TreeWidgetItem* createTreeWidgetItem(TreeWidget*) { - MockTreeWidgetItem* group = new MockTreeWidgetItem(); - groups_.push_back(group); - return group; - }; - virtual std::vector<String> getGroups() { - std::vector<String> groupNames; - foreach (MockTreeWidgetItem* group, groups_) { - groupNames.push_back(group->getText()); - } - return groupNames; - }; - private: - std::vector<MockTreeWidgetItem*> groups_; - std::map<TreeWidgetItem*, std::vector<MockTreeWidgetItem*> > groupMembers_; - MockTreeWidget* root_; -}; - -} - -#endif - - diff --git a/Swiften/Roster/UnitTest/MockTreeWidgetItem.h b/Swiften/Roster/UnitTest/MockTreeWidgetItem.h deleted file mode 100644 index a40aca7..0000000 --- a/Swiften/Roster/UnitTest/MockTreeWidgetItem.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef SWIFTEN_MockTreeWidgetItem_H -#define SWIFTEN_MockTreeWidgetItem_H - -#include "Swiften/Base/String.h" -#include "Swiften/Roster/TreeWidgetItem.h" - -#include <boost/signal.hpp> -#include <boost/shared_ptr.hpp> - -namespace Swift { - -class MockTreeWidgetItem : public TreeWidgetItem { - public: - virtual ~MockTreeWidgetItem() {}; - virtual void setText(const String& text) {text_ = text;}; - String getText() {return text_;}; - virtual void setStatusText(const String&) {}; - virtual void setAvatarPath(const String&) {}; - virtual void setExpanded(bool) {}; - virtual void setStatusShow(StatusShow::Type /*show*/) {}; - virtual void show() {}; - virtual void hide() {}; - private: - String text_; -}; - -} -#endif - - diff --git a/Swiften/Roster/UnitTest/OfflineRosterFilterTest.cpp b/Swiften/Roster/UnitTest/OfflineRosterFilterTest.cpp deleted file mode 100644 index e69de29..0000000 --- a/Swiften/Roster/UnitTest/OfflineRosterFilterTest.cpp +++ /dev/null diff --git a/Swiften/Roster/UnitTest/RosterTest.cpp b/Swiften/Roster/UnitTest/RosterTest.cpp deleted file mode 100644 index b43a41c..0000000 --- a/Swiften/Roster/UnitTest/RosterTest.cpp +++ /dev/null @@ -1,57 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Roster/Roster.h" -#include "Swiften/Roster/UnitTest/MockTreeWidget.h" -#include "Swiften/Roster/UnitTest/MockTreeWidgetFactory.h" -#include "Swiften/Roster/UnitTest/MockTreeWidgetItem.h" - -using namespace Swift; - -class RosterTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(RosterTest); - CPPUNIT_TEST(testGetGroup); - CPPUNIT_TEST_SUITE_END(); - - private: - Roster *roster_; - TreeWidget *widget_; - TreeWidgetFactory *factory_; - JID jid1_; - JID jid2_; - JID jid3_; - - public: - - RosterTest() : jid1_(JID("a@b.c")), jid2_(JID("b@c.d")), jid3_(JID("c@d.e")) {} - - void setUp() { - factory_ = new MockTreeWidgetFactory(); - widget_ = factory_->createTreeWidget(); - roster_ = new Roster(widget_, factory_); - } - - void tearDown() { - delete roster_; - //delete widget_; - delete factory_; - } - - void testGetGroup() { - roster_->addContact(jid1_, "Bert", "group1"); - roster_->addContact(jid2_, "Ernie", "group2"); - roster_->addContact(jid3_, "Cookie", "group1"); - - CPPUNIT_ASSERT_EQUAL(roster_->getGroup("group1"), roster_->getGroup("group1")); - CPPUNIT_ASSERT_EQUAL(roster_->getGroup("group2"), roster_->getGroup("group2")); - CPPUNIT_ASSERT_EQUAL(roster_->getGroup("group3"), roster_->getGroup("group3")); - CPPUNIT_ASSERT(roster_->getGroup("group1") != roster_->getGroup("group2")); - CPPUNIT_ASSERT(roster_->getGroup("group2") != roster_->getGroup("group3")); - CPPUNIT_ASSERT(roster_->getGroup("group3") != roster_->getGroup("group1")); - } - -}; -CPPUNIT_TEST_SUITE_REGISTRATION(RosterTest); - diff --git a/Swiften/Roster/UnitTest/XMPPRosterTest.cpp b/Swiften/Roster/UnitTest/XMPPRosterTest.cpp deleted file mode 100644 index d03953e..0000000 --- a/Swiften/Roster/UnitTest/XMPPRosterTest.cpp +++ /dev/null @@ -1,164 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <boost/shared_ptr.hpp> -#include <boost/bind.hpp> - -#include <vector> - -#include "Swiften/Roster/XMPPRoster.h" - - -using namespace Swift; - -enum XMPPRosterEvents {None, Add, Remove, Update}; - -class XMPPRosterSignalHandler { -public: - XMPPRosterSignalHandler(XMPPRoster* roster) { - lastEvent_ = None; - roster->onJIDAdded.connect(boost::bind(&XMPPRosterSignalHandler::handleJIDAdded, this, _1)); - roster->onJIDRemoved.connect(boost::bind(&XMPPRosterSignalHandler::handleJIDRemoved, this, _1)); - roster->onJIDUpdated.connect(boost::bind(&XMPPRosterSignalHandler::handleJIDUpdated, this, _1, _2, _3)); - } - - XMPPRosterEvents getLastEvent() { - return lastEvent_; - } - - JID getLastJID() { - return lastJID_; - } - - String getLastOldName() { - return lastOldName_; - } - - std::vector<String> getLastOldGroups() { - return lastOldGroups_; - } - - void reset() { - lastEvent_ = None; - } - -private: - void handleJIDAdded(const JID& jid) { - lastJID_ = jid; - lastEvent_ = Add; - } - - void handleJIDRemoved(const JID& jid) { - lastJID_ = jid; - lastEvent_ = Remove; - } - - void handleJIDUpdated(const JID& jid, const String& oldName, const std::vector<String>& oldGroups) { - CPPUNIT_ASSERT_EQUAL(None, lastEvent_); - lastJID_ = jid; - lastOldName_ = oldName; - lastOldGroups_ = oldGroups; - lastEvent_ = Update; - } - - XMPPRosterEvents lastEvent_; - JID lastJID_; - String lastOldName_; - std::vector<String> lastOldGroups_; - -}; - -class XMPPRosterTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(XMPPRosterTest); - CPPUNIT_TEST(testJIDAdded); - CPPUNIT_TEST(testJIDRemoved); - CPPUNIT_TEST(testJIDUpdated); - CPPUNIT_TEST_SUITE_END(); - - private: - XMPPRoster* roster_; - XMPPRosterSignalHandler* handler_; - JID jid1_; - JID jid2_; - JID jid3_; - std::vector<String> groups1_; - std::vector<String> groups2_; - - - public: - - XMPPRosterTest() : jid1_(JID("a@b.c")), jid2_(JID("b@c.d")), jid3_(JID("c@d.e")) {} - - void setUp() { - roster_ = new XMPPRoster(); - handler_ = new XMPPRosterSignalHandler(roster_); - groups1_.push_back("bobs"); - groups1_.push_back("berts"); - groups2_.push_back("ernies"); - } - - void tearDown() { - delete roster_; - } - - void testJIDAdded() { - roster_->addContact(jid1_, "NewName", groups1_, RosterItemPayload::Both); - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(String("NewName"), roster_->getNameForJID(jid1_)); - CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid1_)); - handler_->reset(); - roster_->addContact(jid2_, "NameTwo", groups1_, RosterItemPayload::Both); - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid2_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(String("NameTwo"), roster_->getNameForJID(jid2_)); - CPPUNIT_ASSERT_EQUAL(String("NewName"), roster_->getNameForJID(jid1_)); - CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid2_)); - CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid1_)); - handler_->reset(); - roster_->addContact(jid3_, "NewName", groups2_, RosterItemPayload::Both); - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid3_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(String("NewName"), roster_->getNameForJID(jid3_)); - CPPUNIT_ASSERT(groups2_ == roster_->getGroupsForJID(jid3_)); - } - - void testJIDRemoved() { - roster_->addContact(jid1_, "NewName", groups1_, RosterItemPayload::Both); - handler_->reset(); - roster_->removeContact(jid1_); - CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - handler_->reset(); - roster_->addContact(jid1_, "NewName2", groups1_, RosterItemPayload::Both); - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(String("NewName2"), roster_->getNameForJID(jid1_)); - roster_->addContact(jid2_, "NewName3", groups1_, RosterItemPayload::Both); - handler_->reset(); - roster_->removeContact(jid2_); - CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid2_, handler_->getLastJID()); - handler_->reset(); - roster_->removeContact(jid1_); - CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - } - - void testJIDUpdated() { - roster_->addContact(jid1_, "NewName", groups1_, RosterItemPayload::Both); - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(String("NewName"), roster_->getNameForJID(jid1_)); - CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid1_)); - handler_->reset(); - roster_->addContact(jid1_, "NameTwo", groups2_, RosterItemPayload::Both); - CPPUNIT_ASSERT_EQUAL(Update, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(String("NameTwo"), roster_->getNameForJID(jid1_)); - CPPUNIT_ASSERT(groups2_ == roster_->getGroupsForJID(jid1_)); - } - -}; -CPPUNIT_TEST_SUITE_REGISTRATION(XMPPRosterTest); - diff --git a/Swiften/Roster/UserRosterAction.h b/Swiften/Roster/UserRosterAction.h deleted file mode 100644 index 80ace68..0000000 --- a/Swiften/Roster/UserRosterAction.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef SWIFTEN_UserRosterAction_H -#define SWIFTEN_UserRosterAction_H - -namespace Swift { -class RosterItem; -class TreeWidgetItem; - -class UserRosterAction { - public: - virtual ~UserRosterAction() {}; - void setRosterItem(RosterItem *item) { - rosterItem_ = item; - }; - void setTreeWidgetItem(TreeWidgetItem *item) { - treeWidgetItem_ = item; - } - RosterItem* getRosterItem() { - return rosterItem_; - } - TreeWidgetItem* getTreeWidgetItem() { - return treeWidgetItem_; - } - - private: - RosterItem *rosterItem_; - TreeWidgetItem *treeWidgetItem_; -}; - -} -#endif - - diff --git a/Swiften/Roster/XMPPRoster.cpp b/Swiften/Roster/XMPPRoster.cpp deleted file mode 100644 index 62edc45..0000000 --- a/Swiften/Roster/XMPPRoster.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include "Swiften/Roster/XMPPRoster.h" - -namespace Swift { - -void XMPPRoster::addContact(const JID& jid, const String& name, const std::vector<String>& groups, RosterItemPayload::Subscription subscription) { - JID bareJID(jid.toBare()); - bool exists = containsJID(bareJID); - String oldName = getNameForJID(bareJID); - std::vector<String> oldGroups = entries_[bareJID].groups; - if (exists) { - entries_.erase(bareJID); - } - XMPPRosterItem item; - item.groups = groups; - item.name = name; - item.jid = jid; - item.subscription = subscription; - entries_[bareJID] = item; - if (exists) { - onJIDUpdated(bareJID, oldName, oldGroups); - } else { - onJIDAdded(bareJID); - } -} - -void XMPPRoster::removeContact(const JID& jid) { - entries_.erase(JID(jid.toBare())); - onJIDRemoved(jid); -} - -bool XMPPRoster::containsJID(const JID& jid) { - return entries_.find(JID(jid.toBare())) != entries_.end(); -} - -const String& XMPPRoster::getNameForJID(const JID& jid) { - return entries_[JID(jid.toBare())].name; -} - -const std::vector<String>& XMPPRoster::getGroupsForJID(const JID& jid) { - return entries_[JID(jid.toBare())].groups; -} - -RosterItemPayload::Subscription XMPPRoster::getSubscriptionStateForJID(const JID& jid) { - return entries_[JID(jid.toBare())].subscription; -} - -} - diff --git a/Swiften/Roster/XMPPRoster.h b/Swiften/Roster/XMPPRoster.h deleted file mode 100644 index 47326c3..0000000 --- a/Swiften/Roster/XMPPRoster.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef SWIFTEN_XMPPRoster_H -#define SWIFTEN_XMPPRoster_H - -#include "Swiften/Base/String.h" -#include "Swiften/JID/JID.h" -#include "Swiften/Elements/RosterItemPayload.h" - -#include <map> -#include <vector> -#include <boost/signal.hpp> - -namespace Swift { - -struct XMPPRosterItem { - JID jid; - String name; - std::vector<String> groups; - RosterItemPayload::Subscription subscription; -}; - -class XMPPRoster { - public: - XMPPRoster() {}; - ~XMPPRoster() {}; - - void addContact(const JID& jid, const String& name, const std::vector<String>& groups, const RosterItemPayload::Subscription subscription); - bool containsJID(const JID& jid); - void removeContact(const JID& jid); - RosterItemPayload::Subscription getSubscriptionStateForJID(const JID& jid); - const String& getNameForJID(const JID& jid); - const std::vector<String>& getGroupsForJID(const JID& jid); - - boost::signal<void (const JID&)> onJIDAdded; - boost::signal<void (const JID&)> onJIDRemoved; - boost::signal<void (const JID&, const String&, const std::vector<String>&)> onJIDUpdated; - - private: - //std::map<JID, std::pair<String, std::vector<String> > > entries_; - std::map<JID, XMPPRosterItem> entries_; -}; -} - -#endif - diff --git a/Swiften/SASL/ClientAuthenticator.cpp b/Swiften/SASL/ClientAuthenticator.cpp deleted file mode 100644 index 5fc9e85..0000000 --- a/Swiften/SASL/ClientAuthenticator.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "Swiften/SASL/ClientAuthenticator.h" - -namespace Swift { - -ClientAuthenticator::ClientAuthenticator(const String& name) : name(name) { -} - -ClientAuthenticator::~ClientAuthenticator() { -} - -} diff --git a/Swiften/SASL/ClientAuthenticator.h b/Swiften/SASL/ClientAuthenticator.h deleted file mode 100644 index f42a51e..0000000 --- a/Swiften/SASL/ClientAuthenticator.h +++ /dev/null @@ -1,43 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - class ClientAuthenticator { - public: - ClientAuthenticator(const String& name); - virtual ~ClientAuthenticator(); - - const String& getName() const { - return name; - } - - void setCredentials(const String& authcid, const String& password, const String& authzid = String()) { - this->authcid = authcid; - this->password = password; - this->authzid = authzid; - } - - virtual ByteArray getResponse() const = 0; - virtual bool setChallenge(const ByteArray&) = 0; - - const String& getAuthenticationID() const { - return authcid; - } - - const String& getAuthorizationID() const { - return authzid; - } - - const String& getPassword() const { - return password; - } - - private: - String name; - String authcid; - String password; - String authzid; - }; -} diff --git a/Swiften/SASL/PLAINClientAuthenticator.cpp b/Swiften/SASL/PLAINClientAuthenticator.cpp deleted file mode 100644 index 8f88c3c..0000000 --- a/Swiften/SASL/PLAINClientAuthenticator.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "Swiften/SASL/PLAINClientAuthenticator.h" - -namespace Swift { - -PLAINClientAuthenticator::PLAINClientAuthenticator() : ClientAuthenticator("PLAIN") { -} - -ByteArray PLAINClientAuthenticator::getResponse() const { - return ByteArray(getAuthorizationID()) + '\0' + ByteArray(getAuthenticationID()) + '\0' + ByteArray(getPassword()); -} - -bool PLAINClientAuthenticator::setChallenge(const ByteArray&) { - return true; -} - -} diff --git a/Swiften/SASL/PLAINClientAuthenticator.h b/Swiften/SASL/PLAINClientAuthenticator.h deleted file mode 100644 index 854eb30..0000000 --- a/Swiften/SASL/PLAINClientAuthenticator.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include "Swiften/SASL/ClientAuthenticator.h" - -namespace Swift { - class PLAINClientAuthenticator : public ClientAuthenticator { - public: - PLAINClientAuthenticator(); - - virtual ByteArray getResponse() const; - virtual bool setChallenge(const ByteArray&); - }; -} diff --git a/Swiften/SASL/PLAINMessage.cpp b/Swiften/SASL/PLAINMessage.cpp deleted file mode 100644 index 66f8cd0..0000000 --- a/Swiften/SASL/PLAINMessage.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include "Swiften/SASL/PLAINMessage.h" - -namespace Swift { - -PLAINMessage::PLAINMessage(const String& authcid, const String& password, const String& authzid) : authcid(authcid), authzid(authzid), password(password) { -} - -PLAINMessage::PLAINMessage(const ByteArray& value) { - size_t i = 0; - while (i < value.getSize() && value[i] != '\0') { - authzid += value[i]; - ++i; - } - if (i == value.getSize()) { - return; - } - ++i; - while (i < value.getSize() && value[i] != '\0') { - authcid += value[i]; - ++i; - } - if (i == value.getSize()) { - authcid = ""; - return; - } - ++i; - while (i < value.getSize()) { - password += value[i]; - ++i; - } -} - -ByteArray PLAINMessage::getValue() const { - String s = authzid + '\0' + authcid + '\0' + password; - return ByteArray(s.getUTF8Data(), s.getUTF8Size()); -} - -} diff --git a/Swiften/SASL/PLAINMessage.h b/Swiften/SASL/PLAINMessage.h deleted file mode 100644 index dd5e2ee..0000000 --- a/Swiften/SASL/PLAINMessage.h +++ /dev/null @@ -1,33 +0,0 @@ -// TODO: Get rid of this -// -#pragma once - -#include "Swiften/Base/String.h" -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - class PLAINMessage { - public: - PLAINMessage(const String& authcid, const String& password, const String& authzid = ""); - PLAINMessage(const ByteArray& value); - - ByteArray getValue() const; - - const String& getAuthenticationID() const { - return authcid; - } - - const String& getPassword() const { - return password; - } - - const String& getAuthorizationID() const { - return authzid; - } - - private: - String authcid; - String authzid; - String password; - }; -} diff --git a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp b/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp deleted file mode 100644 index 5dc924e..0000000 --- a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp +++ /dev/null @@ -1,143 +0,0 @@ -#include "Swiften/SASL/SCRAMSHA1ClientAuthenticator.h" - -#include <cassert> -#include <map> -#include <boost/lexical_cast.hpp> - -#include "Swiften/StringCodecs/SHA1.h" -#include "Swiften/StringCodecs/Base64.h" -#include "Swiften/StringCodecs/HMACSHA1.h" -#include "Swiften/StringCodecs/PBKDF2.h" -#include "Swiften/StringPrep/StringPrep.h" - -namespace Swift { - -static String escape(const String& s) { - String result; - for (size_t i = 0; i < s.getUTF8Size(); ++i) { - if (s[i] == ',') { - result += "=2C"; - } - else if (s[i] == '=') { - result += "=3D"; - } - else { - result += s[i]; - } - } - return result; -} - - -SCRAMSHA1ClientAuthenticator::SCRAMSHA1ClientAuthenticator(const String& nonce) : ClientAuthenticator("SCRAM-SHA-1"), step(Initial), clientnonce(nonce) { -} - -ByteArray SCRAMSHA1ClientAuthenticator::getResponse() const { - if (step == Initial) { - return getGS2Header() + getInitialBareClientMessage(); - } - else if (step == Proof) { - ByteArray clientKey = HMACSHA1::getResult(saltedPassword, "Client Key"); - ByteArray storedKey = SHA1::getHash(clientKey); - ByteArray clientSignature = HMACSHA1::getResult(storedKey, authMessage); - ByteArray clientProof = clientKey; - for (unsigned int i = 0; i < clientProof.getSize(); ++i) { - clientProof[i] ^= clientSignature[i]; - } - ByteArray result = ByteArray("c=") + Base64::encode(getGS2Header()) + ",r=" + clientnonce + serverNonce + ",p=" + Base64::encode(clientProof); - return result; - } - else { - return ByteArray(); - } -} - -bool SCRAMSHA1ClientAuthenticator::setChallenge(const ByteArray& challenge) { - if (step == Initial) { - initialServerMessage = challenge; - - std::map<char, String> keys = parseMap(String(initialServerMessage.getData(), initialServerMessage.getSize())); - - // Extract the salt - ByteArray salt = Base64::decode(keys['s']); - - // Extract the server nonce - String clientServerNonce = keys['r']; - if (clientServerNonce.getUTF8Size() <= clientnonce.getUTF8Size()) { - return false; - } - String receivedClientNonce = clientServerNonce.getSubstring(0, clientnonce.getUTF8Size()); - if (receivedClientNonce != clientnonce) { - return false; - } - serverNonce = clientServerNonce.getSubstring(clientnonce.getUTF8Size(), clientServerNonce.npos()); - - // Extract the number of iterations - int iterations = 0; - try { - iterations = boost::lexical_cast<int>(keys['i'].getUTF8String()); - } - catch (const boost::bad_lexical_cast&) { - return false; - } - if (iterations <= 0) { - return false; - } - - // Compute all the values needed for the server signature - saltedPassword = PBKDF2::encode(StringPrep::getPrepared(getPassword(), StringPrep::SASLPrep), salt, iterations); - authMessage = getInitialBareClientMessage() + "," + initialServerMessage + "," + "c=" + Base64::encode(getGS2Header()) + ",r=" + clientnonce + serverNonce; - ByteArray serverKey = HMACSHA1::getResult(saltedPassword, "Server Key"); - serverSignature = HMACSHA1::getResult(serverKey, authMessage); - - step = Proof; - return true; - } - else if (step == Proof) { - ByteArray result = ByteArray("v=") + ByteArray(Base64::encode(serverSignature)); - step = Final; - return challenge == result; - } - else { - return true; - } -} - -std::map<char, String> SCRAMSHA1ClientAuthenticator::parseMap(const String& s) { - std::map<char, String> result; - if (s.getUTF8Size() > 0) { - char key; - String value; - size_t i = 0; - bool expectKey = true; - while (i < s.getUTF8Size()) { - if (expectKey) { - key = s[i]; - expectKey = false; - i++; - } - else if (s[i] == ',') { - result[key] = value; - value = ""; - expectKey = true; - } - else { - value += s[i]; - } - i++; - } - result[key] = value; - } - return result; -} - -ByteArray SCRAMSHA1ClientAuthenticator::getInitialBareClientMessage() const { - String authenticationID = StringPrep::getPrepared(getAuthenticationID(), StringPrep::SASLPrep); - return ByteArray(String("n=" + escape(authenticationID) + ",r=" + clientnonce)); -} - -ByteArray SCRAMSHA1ClientAuthenticator::getGS2Header() const { - return ByteArray("n,") + (getAuthorizationID().isEmpty() ? "" : "a=" + escape(getAuthorizationID())) + ","; -} - -} diff --git a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.h b/Swiften/SASL/SCRAMSHA1ClientAuthenticator.h deleted file mode 100644 index 3d28014..0000000 --- a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.h +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#include <map> - -#include "Swiften/Base/String.h" -#include "Swiften/Base/ByteArray.h" -#include "Swiften/SASL/ClientAuthenticator.h" - -namespace Swift { - class SCRAMSHA1ClientAuthenticator : public ClientAuthenticator { - public: - SCRAMSHA1ClientAuthenticator(const String& nonce); - - virtual ByteArray getResponse() const; - virtual bool setChallenge(const ByteArray&); - - private: - ByteArray getInitialBareClientMessage() const; - ByteArray getGS2Header() const; - - static std::map<char, String> parseMap(const String&); - - private: - enum Step { - Initial, - Proof, - Final - } step; - String clientnonce; - ByteArray initialServerMessage; - ByteArray serverNonce; - ByteArray authMessage; - ByteArray saltedPassword; - ByteArray serverSignature; - }; -} diff --git a/Swiften/SASL/SConscript b/Swiften/SASL/SConscript deleted file mode 100644 index 22b242e..0000000 --- a/Swiften/SASL/SConscript +++ /dev/null @@ -1,12 +0,0 @@ -Import("swiften_env") - -myenv = swiften_env.Clone() -myenv.MergeFlags(swiften_env["LIBIDN_FLAGS"]) - -objects = myenv.StaticObject([ - "ClientAuthenticator.cpp", - "PLAINClientAuthenticator.cpp", - "PLAINMessage.cpp", - "SCRAMSHA1ClientAuthenticator.cpp", - ]) -swiften_env.Append(SWIFTEN_OBJECTS = [objects]) diff --git a/Swiften/SASL/UnitTest/PLAINClientAuthenticatorTest.cpp b/Swiften/SASL/UnitTest/PLAINClientAuthenticatorTest.cpp deleted file mode 100644 index e92cd34..0000000 --- a/Swiften/SASL/UnitTest/PLAINClientAuthenticatorTest.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/SASL/PLAINClientAuthenticator.h" - -using namespace Swift; - -class PLAINClientAuthenticatorTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(PLAINClientAuthenticatorTest); - CPPUNIT_TEST(testGetResponse_WithoutAuthzID); - CPPUNIT_TEST(testGetResponse_WithAuthzID); - CPPUNIT_TEST_SUITE_END(); - - public: - void testGetResponse_WithoutAuthzID() { - PLAINClientAuthenticator testling; - - testling.setCredentials("user", "pass"); - - CPPUNIT_ASSERT_EQUAL(testling.getResponse(), ByteArray("\0user\0pass", 10)); - } - - void testGetResponse_WithAuthzID() { - PLAINClientAuthenticator testling; - - testling.setCredentials("user", "pass", "authz"); - - CPPUNIT_ASSERT_EQUAL(testling.getResponse(), ByteArray("authz\0user\0pass", 15)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(PLAINClientAuthenticatorTest); diff --git a/Swiften/SASL/UnitTest/PLAINMessageTest.cpp b/Swiften/SASL/UnitTest/PLAINMessageTest.cpp deleted file mode 100644 index 6493bd5..0000000 --- a/Swiften/SASL/UnitTest/PLAINMessageTest.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/SASL/PLAINMessage.h" - -using namespace Swift; - -class PLAINMessageTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(PLAINMessageTest); - CPPUNIT_TEST(testGetValue_WithoutAuthzID); - CPPUNIT_TEST(testGetValue_WithAuthzID); - CPPUNIT_TEST(testConstructor_WithoutAuthzID); - CPPUNIT_TEST(testConstructor_WithAuthzID); - CPPUNIT_TEST(testConstructor_NoAuthcid); - CPPUNIT_TEST(testConstructor_NoPassword); - CPPUNIT_TEST_SUITE_END(); - - public: - PLAINMessageTest() {} - - void testGetValue_WithoutAuthzID() { - PLAINMessage message("user", "pass"); - CPPUNIT_ASSERT_EQUAL(message.getValue(), ByteArray("\0user\0pass", 10)); - } - - void testGetValue_WithAuthzID() { - PLAINMessage message("user", "pass", "authz"); - CPPUNIT_ASSERT_EQUAL(message.getValue(), ByteArray("authz\0user\0pass", 15)); - } - - void testConstructor_WithoutAuthzID() { - PLAINMessage message(ByteArray("\0user\0pass", 10)); - - CPPUNIT_ASSERT_EQUAL(String(""), message.getAuthorizationID()); - CPPUNIT_ASSERT_EQUAL(String("user"), message.getAuthenticationID()); - CPPUNIT_ASSERT_EQUAL(String("pass"), message.getPassword()); - } - - void testConstructor_WithAuthzID() { - PLAINMessage message(ByteArray("authz\0user\0pass", 15)); - - CPPUNIT_ASSERT_EQUAL(String("authz"), message.getAuthorizationID()); - CPPUNIT_ASSERT_EQUAL(String("user"), message.getAuthenticationID()); - CPPUNIT_ASSERT_EQUAL(String("pass"), message.getPassword()); - } - - void testConstructor_NoAuthcid() { - PLAINMessage message(ByteArray("authzid", 7)); - - CPPUNIT_ASSERT_EQUAL(String(""), message.getAuthenticationID()); - } - - void testConstructor_NoPassword() { - PLAINMessage message(ByteArray("authzid\0authcid", 15)); - - CPPUNIT_ASSERT_EQUAL(String(""), message.getAuthenticationID()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(PLAINMessageTest); diff --git a/Swiften/SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp b/Swiften/SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp deleted file mode 100644 index db69d13..0000000 --- a/Swiften/SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp +++ /dev/null @@ -1,172 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/SASL/SCRAMSHA1ClientAuthenticator.h" -#include "Swiften/Base/ByteArray.h" - -using namespace Swift; - -class SCRAMSHA1ClientAuthenticatorTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(SCRAMSHA1ClientAuthenticatorTest); - CPPUNIT_TEST(testGetInitialResponse); - CPPUNIT_TEST(testGetInitialResponse_UsernameHasSpecialChars); - CPPUNIT_TEST(testGetInitialResponse_WithAuthorizationID); - CPPUNIT_TEST(testGetInitialResponse_WithAuthorizationIDWithSpecialChars); - CPPUNIT_TEST(testGetFinalResponse); - CPPUNIT_TEST(testSetChallenge); - CPPUNIT_TEST(testSetChallenge_InvalidClientNonce); - CPPUNIT_TEST(testSetChallenge_OnlyClientNonce); - CPPUNIT_TEST(testSetChallenge_InvalidIterations); - CPPUNIT_TEST(testSetChallenge_ZeroIterations); - CPPUNIT_TEST(testSetChallenge_NegativeIterations); - CPPUNIT_TEST(testSetChallenge_MissingIterations); - CPPUNIT_TEST(testSetFinalChallenge); - CPPUNIT_TEST(testSetFinalChallenge_InvalidChallenge); - CPPUNIT_TEST(testGetResponseAfterFinalChallenge); - CPPUNIT_TEST_SUITE_END(); - - public: - void setUp() { - } - - void testGetInitialResponse() { - SCRAMSHA1ClientAuthenticator testling("abcdefghABCDEFGH"); - testling.setCredentials("user", "pass", ""); - - ByteArray response = testling.getResponse(); - - CPPUNIT_ASSERT_EQUAL(String("n,,n=user,r=abcdefghABCDEFGH"), testling.getResponse().toString()); - } - - void testGetInitialResponse_UsernameHasSpecialChars() { - SCRAMSHA1ClientAuthenticator testling("abcdefghABCDEFGH"); - testling.setCredentials(",us=,er=", "pass", ""); - - ByteArray response = testling.getResponse(); - - CPPUNIT_ASSERT_EQUAL(String("n,,n==2Cus=3D=2Cer=3D,r=abcdefghABCDEFGH"), testling.getResponse().toString()); - } - - void testGetInitialResponse_WithAuthorizationID() { - SCRAMSHA1ClientAuthenticator testling("abcdefghABCDEFGH"); - testling.setCredentials("user", "pass", "auth"); - - ByteArray response = testling.getResponse(); - - CPPUNIT_ASSERT_EQUAL(String("n,a=auth,n=user,r=abcdefghABCDEFGH"), testling.getResponse().toString()); - } - - void testGetInitialResponse_WithAuthorizationIDWithSpecialChars() { - SCRAMSHA1ClientAuthenticator testling("abcdefghABCDEFGH"); - testling.setCredentials("user", "pass", "a=u,th"); - - ByteArray response = testling.getResponse(); - - CPPUNIT_ASSERT_EQUAL(String("n,a=a=3Du=2Cth,n=user,r=abcdefghABCDEFGH"), testling.getResponse().toString()); - } - - void testGetFinalResponse() { - SCRAMSHA1ClientAuthenticator testling("abcdefgh"); - testling.setCredentials("user", "pass", ""); - testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=4096")); - - ByteArray response = testling.getResponse(); - - CPPUNIT_ASSERT_EQUAL(String("c=biws,r=abcdefghABCDEFGH,p=CZbjGDpIteIJwQNBgO0P8pKkMGY="), testling.getResponse().toString()); - } - - void testSetFinalChallenge() { - SCRAMSHA1ClientAuthenticator testling("abcdefgh"); - testling.setCredentials("user", "pass", ""); - testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=4096")); - - bool result = testling.setChallenge(ByteArray("v=Dd+Q20knZs9jeeK0pi1Mx1Se+yo=")); - - CPPUNIT_ASSERT(result); - } - - void testSetChallenge() { - SCRAMSHA1ClientAuthenticator testling("abcdefgh"); - testling.setCredentials("user", "pass", ""); - - bool result = testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=4096")); - - CPPUNIT_ASSERT(result); - } - - void testSetChallenge_InvalidClientNonce() { - SCRAMSHA1ClientAuthenticator testling("abcdefgh"); - testling.setCredentials("user", "pass", ""); - - bool result = testling.setChallenge(ByteArray("r=abcdefgiABCDEFGH,s=MTIzNDU2NzgK,i=4096")); - - CPPUNIT_ASSERT(!result); - } - - void testSetChallenge_OnlyClientNonce() { - SCRAMSHA1ClientAuthenticator testling("abcdefgh"); - testling.setCredentials("user", "pass", ""); - - bool result = testling.setChallenge(ByteArray("r=abcdefgh,s=MTIzNDU2NzgK,i=4096")); - - CPPUNIT_ASSERT(!result); - } - - void testSetChallenge_InvalidIterations() { - SCRAMSHA1ClientAuthenticator testling("abcdefgh"); - testling.setCredentials("user", "pass", ""); - - bool result = testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=bla")); - - CPPUNIT_ASSERT(!result); - } - - void testSetChallenge_MissingIterations() { - SCRAMSHA1ClientAuthenticator testling("abcdefgh"); - testling.setCredentials("user", "pass", ""); - - bool result = testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK")); - - CPPUNIT_ASSERT(!result); - } - - void testSetChallenge_ZeroIterations() { - SCRAMSHA1ClientAuthenticator testling("abcdefgh"); - testling.setCredentials("user", "pass", ""); - - bool result = testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=0")); - - CPPUNIT_ASSERT(!result); - } - - void testSetChallenge_NegativeIterations() { - SCRAMSHA1ClientAuthenticator testling("abcdefgh"); - testling.setCredentials("user", "pass", ""); - - bool result = testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=-1")); - - CPPUNIT_ASSERT(!result); - } - - void testSetFinalChallenge_InvalidChallenge() { - SCRAMSHA1ClientAuthenticator testling("abcdefgh"); - testling.setCredentials("user", "pass", ""); - testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=4096")); - bool result = testling.setChallenge(ByteArray("v=e26kI69ICb6zosapLLxrER/631A=")); - - CPPUNIT_ASSERT(!result); - } - - void testGetResponseAfterFinalChallenge() { - SCRAMSHA1ClientAuthenticator testling("abcdefgh"); - testling.setCredentials("user", "pass", ""); - testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=4096")); - testling.setChallenge(ByteArray("v=Dd+Q20knZs9jeeK0pi1Mx1Se+yo=")); - - ByteArray result = testling.getResponse(); - - CPPUNIT_ASSERT_EQUAL(ByteArray(), result); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(SCRAMSHA1ClientAuthenticatorTest); diff --git a/Swiften/SConscript b/Swiften/SConscript deleted file mode 100644 index e7a3329..0000000 --- a/Swiften/SConscript +++ /dev/null @@ -1,211 +0,0 @@ -Import("env") - -env["SWIFTEN_FLAGS"] = { - "LIBPATH": [Dir(".")], - "LIBS": ["Swiften"] - } - -swiften_env = env.Clone() -swiften_env.MergeFlags(swiften_env["BOOST_FLAGS"]) -Export("swiften_env") - -# TODO: Move all this to a submodule SConscript -myenv = swiften_env.Clone() -myenv.MergeFlags(myenv["ZLIB_FLAGS"]) -myenv.MergeFlags(myenv["OPENSSL_FLAGS"]) -sources = [ - "Avatars/AvatarFileStorage.cpp", - "Avatars/AvatarManager.cpp", - "Avatars/AvatarStorage.cpp", - "Chat/ChatStateTracker.cpp", - "Chat/ChatStateNotifier.cpp", - "Chat/ChatStateMessageSender.cpp", - "Client/Client.cpp", - "Client/ClientSession.cpp", - "Compress/ZLibCodecompressor.cpp", - "Disco/CapsInfoGenerator.cpp", - "Elements/DiscoInfo.cpp", - "Elements/Element.cpp", - "Elements/IQ.cpp", - "Elements/Payload.cpp", - "Elements/RosterPayload.cpp", - "Elements/Stanza.cpp", - "MUC/MUC.cpp", - "MUC/MUCOccupant.cpp", - "MUC/MUCRegistry.cpp", - "MUC/MUCBookmarkManager.cpp", - "Notifier/Notifier.cpp", - "Presence/PresenceOracle.cpp", - "Presence/PresenceSender.cpp", - "Queries/IQChannel.cpp", - "Queries/IQHandler.cpp", - "Queries/IQRouter.cpp", - "Queries/Request.cpp", - "Queries/Responders/DiscoInfoResponder.cpp", - "Queries/Responders/SoftwareVersionResponder.cpp", - "Roster/ContactRosterItem.cpp", - "Roster/Roster.cpp", - "Roster/XMPPRoster.cpp", - "Serializer/AuthRequestSerializer.cpp", - "Serializer/AuthSuccessSerializer.cpp", - "Serializer/AuthChallengeSerializer.cpp", - "Serializer/AuthResponseSerializer.cpp", - "Serializer/CompressRequestSerializer.cpp", - "Serializer/ElementSerializer.cpp", - "Serializer/MessageSerializer.cpp", - "Serializer/PayloadSerializer.cpp", - "Serializer/PayloadSerializerCollection.cpp", - "Serializer/PayloadSerializers/CapsInfoSerializer.cpp", - "Serializer/PayloadSerializers/ChatStateSerializer.cpp", - "Serializer/PayloadSerializers/DiscoInfoSerializer.cpp", - "Serializer/PayloadSerializers/ErrorSerializer.cpp", - "Serializer/PayloadSerializers/FullPayloadSerializerCollection.cpp", - "Serializer/PayloadSerializers/MUCPayloadSerializer.cpp", - "Serializer/PayloadSerializers/ResourceBindSerializer.cpp", - "Serializer/PayloadSerializers/RosterSerializer.cpp", - "Serializer/PayloadSerializers/SecurityLabelSerializer.cpp", - "Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.cpp", - "Serializer/PayloadSerializers/SoftwareVersionSerializer.cpp", - "Serializer/PayloadSerializers/VCardSerializer.cpp", - "Serializer/PayloadSerializers/VCardUpdateSerializer.cpp", - "Serializer/PayloadSerializers/StorageSerializer.cpp", - "Serializer/PayloadSerializers/PrivateStorageSerializer.cpp", - "Serializer/PresenceSerializer.cpp", - "Serializer/StanzaSerializer.cpp", - "Serializer/StreamFeaturesSerializer.cpp", - "Serializer/XML/XMLElement.cpp", - "Serializer/XML/XMLNode.cpp", - "Serializer/XMPPSerializer.cpp", - "Server/ServerFromClientSession.cpp", - "Server/ServerSession.cpp", - "Server/ServerStanzaRouter.cpp", - "Server/SimpleUserRegistry.cpp", - "Server/UserRegistry.cpp", - "Session/Session.cpp", - "Session/SessionStream.cpp", - "Session/BasicSessionStream.cpp", - "StringCodecs/Base64.cpp", - "StringCodecs/SHA1.cpp", - "StringCodecs/HMACSHA1.cpp", - "StringCodecs/MD5.cpp", - "StringCodecs/PBKDF2.cpp", - "StringCodecs/Hexify.cpp", - ] -# "Notifier/GrowlNotifier.cpp", - -if myenv.get("HAVE_OPENSSL", 0) : - sources += ["TLS/OpenSSL/OpenSSLContext.cpp"] - -SConscript(dirs = [ - "Base", - "StringPrep", - "SASL", - "Application", - "EventLoop", - "Parser", - "JID", - "Network", - "History", - "StreamStack", - "LinkLocal", - ]) -SConscript(test_only = True, dirs = [ - "QA", - ]) -SConscript(dirs = [ - "Examples" - ]) - -myenv.StaticLibrary("Swiften", sources + swiften_env["SWIFTEN_OBJECTS"]) - -env.Append(UNITTEST_SOURCES = [ - File("Application/UnitTest/ApplicationTest.cpp"), - File("Avatars/UnitTest/MockAvatarManager.cpp"), - File("Base/UnitTest/IDGeneratorTest.cpp"), - File("Base/UnitTest/StringTest.cpp"), - File("Base/UnitTest/ByteArrayTest.cpp"), - File("Chat/UnitTest/ChatStateNotifierTest.cpp"), -# File("Chat/UnitTest/ChatStateTrackerTest.cpp"), - File("Client/UnitTest/ClientSessionTest.cpp"), - File("Compress/UnitTest/ZLibCompressorTest.cpp"), - File("Compress/UnitTest/ZLibDecompressorTest.cpp"), - File("Disco/UnitTest/CapsInfoGeneratorTest.cpp"), - File("Elements/UnitTest/IQTest.cpp"), - File("Elements/UnitTest/StanzaTest.cpp"), - File("Elements/UnitTest/StanzasTest.cpp"), - File("EventLoop/UnitTest/EventLoopTest.cpp"), - File("EventLoop/UnitTest/SimpleEventLoopTest.cpp"), - File("History/UnitTest/SQLiteHistoryManagerTest.cpp"), - File("JID/UnitTest/JIDTest.cpp"), - File("LinkLocal/UnitTest/LinkLocalConnectorTest.cpp"), - File("LinkLocal/UnitTest/LinkLocalServiceBrowserTest.cpp"), - File("LinkLocal/UnitTest/LinkLocalServiceInfoTest.cpp"), - File("LinkLocal/UnitTest/LinkLocalServiceTest.cpp"), - File("Network/UnitTest/HostAddressTest.cpp"), - File("Network/UnitTest/ConnectorTest.cpp"), - File("Parser/PayloadParsers/UnitTest/BodyParserTest.cpp"), - File("Parser/PayloadParsers/UnitTest/DiscoInfoParserTest.cpp"), - File("Parser/PayloadParsers/UnitTest/ErrorParserTest.cpp"), - File("Parser/PayloadParsers/UnitTest/PriorityParserTest.cpp"), - File("Parser/PayloadParsers/UnitTest/RawXMLPayloadParserTest.cpp"), - File("Parser/PayloadParsers/UnitTest/ResourceBindParserTest.cpp"), - File("Parser/PayloadParsers/UnitTest/RosterParserTest.cpp"), - File("Parser/PayloadParsers/UnitTest/SecurityLabelParserTest.cpp"), - File("Parser/PayloadParsers/UnitTest/SecurityLabelsCatalogParserTest.cpp"), - File("Parser/PayloadParsers/UnitTest/SoftwareVersionParserTest.cpp"), - File("Parser/PayloadParsers/UnitTest/StatusParserTest.cpp"), - File("Parser/PayloadParsers/UnitTest/StatusShowParserTest.cpp"), - File("Parser/PayloadParsers/UnitTest/VCardParserTest.cpp"), - File("Parser/PayloadParsers/UnitTest/StorageParserTest.cpp"), - File("Parser/PayloadParsers/UnitTest/PrivateStorageParserTest.cpp"), - File("Parser/PayloadParsers/UnitTest/VCardUpdateParserTest.cpp"), - File("Parser/UnitTest/AttributeMapTest.cpp"), - File("Parser/UnitTest/IQParserTest.cpp"), - File("Parser/UnitTest/MessageParserTest.cpp"), - File("Parser/UnitTest/PayloadParserFactoryCollectionTest.cpp"), - File("Parser/UnitTest/PresenceParserTest.cpp"), - File("Parser/UnitTest/SerializingParserTest.cpp"), - File("Parser/UnitTest/StanzaParserTest.cpp"), - File("Parser/UnitTest/StreamFeaturesParserTest.cpp"), - File("Parser/UnitTest/XMLParserTest.cpp"), - File("Parser/UnitTest/XMPPParserTest.cpp"), - File("Presence/UnitTest/PresenceOracleTest.cpp"), - File("Presence/UnitTest/PresenceSenderTest.cpp"), - File("Queries/Requests/UnitTest/GetPrivateStorageRequestTest.cpp"), - File("Queries/Responders/UnitTest/DiscoInfoResponderTest.cpp"), - File("Queries/UnitTest/IQRouterTest.cpp"), - File("Queries/UnitTest/RequestTest.cpp"), - File("Queries/UnitTest/ResponderTest.cpp"), - File("Roster/UnitTest/OfflineRosterFilterTest.cpp"), - File("Roster/UnitTest/RosterTest.cpp"), - File("Roster/UnitTest/XMPPRosterTest.cpp"), - File("SASL/UnitTest/PLAINMessageTest.cpp"), - File("SASL/UnitTest/PLAINClientAuthenticatorTest.cpp"), - File("SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp"), - File("Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.cpp"), - File("Serializer/PayloadSerializers/UnitTest/CapsInfoSerializerTest.cpp"), - File("Serializer/PayloadSerializers/UnitTest/DiscoInfoSerializerTest.cpp"), - File("Serializer/PayloadSerializers/UnitTest/ErrorSerializerTest.cpp"), - File("Serializer/PayloadSerializers/UnitTest/PrioritySerializerTest.cpp"), - File("Serializer/PayloadSerializers/UnitTest/ResourceBindSerializerTest.cpp"), - File("Serializer/PayloadSerializers/UnitTest/RosterSerializerTest.cpp"), - File("Serializer/PayloadSerializers/UnitTest/SecurityLabelSerializerTest.cpp"), - File("Serializer/PayloadSerializers/UnitTest/SecurityLabelsCatalogSerializerTest.cpp"), - File("Serializer/PayloadSerializers/UnitTest/SoftwareVersionSerializerTest.cpp"), - File("Serializer/PayloadSerializers/UnitTest/StatusSerializerTest.cpp"), - File("Serializer/PayloadSerializers/UnitTest/StatusShowSerializerTest.cpp"), - File("Serializer/PayloadSerializers/UnitTest/VCardUpdateSerializerTest.cpp"), - File("Serializer/PayloadSerializers/UnitTest/StorageSerializerTest.cpp"), - File("Serializer/PayloadSerializers/UnitTest/PrivateStorageSerializerTest.cpp"), - File("Serializer/UnitTest/StreamFeaturesSerializerTest.cpp"), - File("Serializer/XML/UnitTest/XMLElementTest.cpp"), - File("Server/UnitTest/ServerStanzaRouterTest.cpp"), - File("StreamStack/UnitTest/StreamStackTest.cpp"), - File("StreamStack/UnitTest/XMPPLayerTest.cpp"), - File("StringCodecs/UnitTest/Base64Test.cpp"), - File("StringCodecs/UnitTest/SHA1Test.cpp"), - File("StringCodecs/UnitTest/MD5Test.cpp"), - File("StringCodecs/UnitTest/HexifyTest.cpp"), - File("StringCodecs/UnitTest/HMACSHA1Test.cpp"), - File("StringCodecs/UnitTest/PBKDF2Test.cpp"), - ]) diff --git a/Swiften/Serializer/AuthChallengeSerializer.cpp b/Swiften/Serializer/AuthChallengeSerializer.cpp deleted file mode 100644 index 152607d..0000000 --- a/Swiften/Serializer/AuthChallengeSerializer.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "Swiften/Serializer/AuthChallengeSerializer.h" - -#include "Swiften/Elements/AuthChallenge.h" -#include "Swiften/StringCodecs/Base64.h" - -namespace Swift { - -AuthChallengeSerializer::AuthChallengeSerializer() { -} - -String AuthChallengeSerializer::serialize(boost::shared_ptr<Element> element) const { - boost::shared_ptr<AuthChallenge> authRequest(boost::dynamic_pointer_cast<AuthChallenge>(element)); - String value = (authRequest->getValue().isEmpty() ? "=" : Base64::encode(authRequest->getValue())); - return "<challenge xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" + value + "</challenge>"; -} - -} diff --git a/Swiften/Serializer/AuthChallengeSerializer.h b/Swiften/Serializer/AuthChallengeSerializer.h deleted file mode 100644 index 010d9a9..0000000 --- a/Swiften/Serializer/AuthChallengeSerializer.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/AuthChallenge.h" -#include "Swiften/Serializer/GenericElementSerializer.h" - -namespace Swift { - class AuthChallengeSerializer : public GenericElementSerializer<AuthChallenge> { - public: - AuthChallengeSerializer(); - - virtual String serialize(boost::shared_ptr<Element> element) const; - }; -} diff --git a/Swiften/Serializer/AuthFailureSerializer.h b/Swiften/Serializer/AuthFailureSerializer.h deleted file mode 100644 index e7e2ced..0000000 --- a/Swiften/Serializer/AuthFailureSerializer.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef SWIFTEN_AuthFailureSerializer_H -#define SWIFTEN_AuthFailureSerializer_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/AuthFailure.h" -#include "Swiften/Serializer/GenericElementSerializer.h" -#include "Swiften/Serializer/XML/XMLElement.h" - -namespace Swift { - class AuthFailureSerializer : public GenericElementSerializer<AuthFailure> { - public: - AuthFailureSerializer() : GenericElementSerializer<AuthFailure>() { - } - - virtual String serialize(boost::shared_ptr<Element>) const { - return XMLElement("failure", "urn:ietf:params:xml:ns:xmpp-sasl").serialize(); - } - }; -} - -#endif diff --git a/Swiften/Serializer/AuthRequestSerializer.cpp b/Swiften/Serializer/AuthRequestSerializer.cpp deleted file mode 100644 index 7122485..0000000 --- a/Swiften/Serializer/AuthRequestSerializer.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "Swiften/Serializer/AuthRequestSerializer.h" - -#include "Swiften/Elements/AuthRequest.h" -#include "Swiften/StringCodecs/Base64.h" - -namespace Swift { - -AuthRequestSerializer::AuthRequestSerializer() { -} - -String AuthRequestSerializer::serialize(boost::shared_ptr<Element> element) const { - boost::shared_ptr<AuthRequest> authRequest(boost::dynamic_pointer_cast<AuthRequest>(element)); - String value = (authRequest->getMessage().isEmpty() ? "=" : Base64::encode(authRequest->getMessage())); - return "<auth xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\" mechanism=\"" + authRequest->getMechanism() + "\">" + value + "</auth>"; -} - -} diff --git a/Swiften/Serializer/AuthRequestSerializer.h b/Swiften/Serializer/AuthRequestSerializer.h deleted file mode 100644 index b5131a3..0000000 --- a/Swiften/Serializer/AuthRequestSerializer.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef SWIFTEN_AuthRequestSerializer_H -#define SWIFTEN_AuthRequestSerializer_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/AuthRequest.h" -#include "Swiften/Serializer/GenericElementSerializer.h" - -namespace Swift { - class AuthRequestSerializer : public GenericElementSerializer<AuthRequest> { - public: - AuthRequestSerializer(); - - virtual String serialize(boost::shared_ptr<Element> element) const; - }; -} - -#endif diff --git a/Swiften/Serializer/AuthResponseSerializer.cpp b/Swiften/Serializer/AuthResponseSerializer.cpp deleted file mode 100644 index 2348a3d..0000000 --- a/Swiften/Serializer/AuthResponseSerializer.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "Swiften/Serializer/AuthResponseSerializer.h" - -#include "Swiften/Elements/AuthResponse.h" -#include "Swiften/StringCodecs/Base64.h" - -namespace Swift { - -AuthResponseSerializer::AuthResponseSerializer() { -} - -String AuthResponseSerializer::serialize(boost::shared_ptr<Element> element) const { - boost::shared_ptr<AuthResponse> authRequest(boost::dynamic_pointer_cast<AuthResponse>(element)); - String value = (authRequest->getValue().isEmpty() ? "=" : Base64::encode(authRequest->getValue())); - return "<response xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" + value + "</response>"; -} - -} diff --git a/Swiften/Serializer/AuthResponseSerializer.h b/Swiften/Serializer/AuthResponseSerializer.h deleted file mode 100644 index 8d47291..0000000 --- a/Swiften/Serializer/AuthResponseSerializer.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/AuthResponse.h" -#include "Swiften/Serializer/GenericElementSerializer.h" - -namespace Swift { - class AuthResponseSerializer : public GenericElementSerializer<AuthResponse> { - public: - AuthResponseSerializer(); - - virtual String serialize(boost::shared_ptr<Element> element) const; - }; -} diff --git a/Swiften/Serializer/AuthSuccessSerializer.cpp b/Swiften/Serializer/AuthSuccessSerializer.cpp deleted file mode 100644 index 6d7f195..0000000 --- a/Swiften/Serializer/AuthSuccessSerializer.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "Swiften/Serializer/AuthSuccessSerializer.h" - -#include "Swiften/Elements/AuthSuccess.h" -#include "Swiften/StringCodecs/Base64.h" - -namespace Swift { - -AuthSuccessSerializer::AuthSuccessSerializer() { -} - -String AuthSuccessSerializer::serialize(boost::shared_ptr<Element> element) const { - boost::shared_ptr<AuthSuccess> authRequest(boost::dynamic_pointer_cast<AuthSuccess>(element)); - String value = (authRequest->getValue().isEmpty() ? "=" : Base64::encode(authRequest->getValue())); - return "<success xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" + value + "</challenge>"; -} - -} diff --git a/Swiften/Serializer/AuthSuccessSerializer.h b/Swiften/Serializer/AuthSuccessSerializer.h deleted file mode 100644 index 6ced772..0000000 --- a/Swiften/Serializer/AuthSuccessSerializer.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/AuthSuccess.h" -#include "Swiften/Serializer/GenericElementSerializer.h" - -namespace Swift { - class AuthSuccessSerializer : public GenericElementSerializer<AuthSuccess> { - public: - AuthSuccessSerializer(); - - virtual String serialize(boost::shared_ptr<Element> element) const; - }; -} diff --git a/Swiften/Serializer/CompressFailureSerializer.h b/Swiften/Serializer/CompressFailureSerializer.h deleted file mode 100644 index c3e7953..0000000 --- a/Swiften/Serializer/CompressFailureSerializer.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef SWIFTEN_CompressFailureSerializer_H -#define SWIFTEN_CompressFailureSerializer_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/CompressFailure.h" -#include "Swiften/Serializer/GenericElementSerializer.h" -#include "Swiften/Serializer/XML/XMLElement.h" - -namespace Swift { - class CompressFailureSerializer : public GenericElementSerializer<CompressFailure> { - public: - CompressFailureSerializer() : GenericElementSerializer<CompressFailure>() { - } - - virtual String serialize(boost::shared_ptr<Element>) const { - return XMLElement("failure", "http://jabber.org/protocol/compress").serialize(); - } - }; -} - -#endif diff --git a/Swiften/Serializer/CompressRequestSerializer.cpp b/Swiften/Serializer/CompressRequestSerializer.cpp deleted file mode 100644 index 4d3310b..0000000 --- a/Swiften/Serializer/CompressRequestSerializer.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include "Swiften/Serializer/CompressRequestSerializer.h" - -#include "Swiften/Elements/CompressRequest.h" - -namespace Swift { - -CompressRequestSerializer::CompressRequestSerializer() { -} - -String CompressRequestSerializer::serialize(boost::shared_ptr<Element> element) const { - boost::shared_ptr<CompressRequest> compressRequest(boost::dynamic_pointer_cast<CompressRequest>(element)); - return "<compress xmlns='http://jabber.org/protocol/compress'><method>" + compressRequest->getMethod() + "</method></compress>"; -} - -bool CompressRequestSerializer::canSerialize(boost::shared_ptr<Element> element) const { - return dynamic_cast<CompressRequest*>(element.get()) != 0; -} - -} diff --git a/Swiften/Serializer/CompressRequestSerializer.h b/Swiften/Serializer/CompressRequestSerializer.h deleted file mode 100644 index b6a493c..0000000 --- a/Swiften/Serializer/CompressRequestSerializer.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef SWIFTEN_COMPRESSREQUESTSERIALIZER_H -#define SWIFTEN_COMPRESSREQUESTSERIALIZER_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Serializer/ElementSerializer.h" - -namespace Swift { - class CompressRequestSerializer : public ElementSerializer { - public: - CompressRequestSerializer(); - - virtual String serialize(boost::shared_ptr<Element> element) const; - virtual bool canSerialize(boost::shared_ptr<Element> element) const; - }; -} - -#endif diff --git a/Swiften/Serializer/ElementSerializer.cpp b/Swiften/Serializer/ElementSerializer.cpp deleted file mode 100644 index 22c64a6..0000000 --- a/Swiften/Serializer/ElementSerializer.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Serializer/ElementSerializer.h" - -namespace Swift { - -ElementSerializer::~ElementSerializer() { -} - -} diff --git a/Swiften/Serializer/ElementSerializer.h b/Swiften/Serializer/ElementSerializer.h deleted file mode 100644 index d2f5611..0000000 --- a/Swiften/Serializer/ElementSerializer.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef SWIFTEN_ELEMENTSERIALIZER_H -#define SWIFTEN_ELEMENTSERIALIZER_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Element.h" - -namespace Swift { - class ElementSerializer { - public: - virtual ~ElementSerializer(); - - virtual String serialize(boost::shared_ptr<Element> element) const = 0; - virtual bool canSerialize(boost::shared_ptr<Element> element) const = 0; - }; -} - -#endif diff --git a/Swiften/Serializer/GenericElementSerializer.h b/Swiften/Serializer/GenericElementSerializer.h deleted file mode 100644 index 7ccecb2..0000000 --- a/Swiften/Serializer/GenericElementSerializer.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef SWIFTEN_GenericElementSerializer_H -#define SWIFTEN_GenericElementSerializer_H - -#include "Swiften/Serializer/ElementSerializer.h" - -namespace Swift { - template<typename T> - class GenericElementSerializer : public ElementSerializer { - public: - virtual String serialize(boost::shared_ptr<Element> element) const = 0; - - virtual bool canSerialize(boost::shared_ptr<Element> element) const { - return dynamic_cast<T*>(element.get()) != 0; - } - }; -} - -#endif diff --git a/Swiften/Serializer/GenericPayloadSerializer.h b/Swiften/Serializer/GenericPayloadSerializer.h deleted file mode 100644 index c4a45c3..0000000 --- a/Swiften/Serializer/GenericPayloadSerializer.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef SWIFTEN_GenericPayloadSerializer_H -#define SWIFTEN_GenericPayloadSerializer_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Serializer/PayloadSerializer.h" -#include "Swiften/Elements/Body.h" - -namespace Swift { - template<typename PAYLOAD_TYPE> - class GenericPayloadSerializer : public PayloadSerializer { - public: - virtual String serialize(boost::shared_ptr<Payload> element) const { - return serializePayload(boost::dynamic_pointer_cast<PAYLOAD_TYPE>(element)); - } - - virtual bool canSerialize(boost::shared_ptr<Payload> element) const { - return dynamic_cast<PAYLOAD_TYPE*>(element.get()); - } - - virtual String serializePayload(boost::shared_ptr<PAYLOAD_TYPE>) const = 0; - }; -} - -#endif diff --git a/Swiften/Serializer/GenericStanzaSerializer.h b/Swiften/Serializer/GenericStanzaSerializer.h deleted file mode 100644 index c59f735..0000000 --- a/Swiften/Serializer/GenericStanzaSerializer.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef SWIFTEN_GENERICSTANZASERIALIZER_H -#define SWIFTEN_GENERICSTANZASERIALIZER_H - -#include "Swiften/Serializer/StanzaSerializer.h" - -namespace Swift { - template<typename STANZA_TYPE> - class GenericStanzaSerializer : public StanzaSerializer { - public: - GenericStanzaSerializer(const String& tag, PayloadSerializerCollection* payloadSerializers) : StanzaSerializer(tag, payloadSerializers) {} - - virtual bool canSerialize(boost::shared_ptr<Element> element) const { - return dynamic_cast<STANZA_TYPE*>(element.get()) != 0; - } - - virtual void setStanzaSpecificAttributes( - boost::shared_ptr<Element> stanza, - XMLElement& element) const { - setStanzaSpecificAttributesGeneric( - boost::dynamic_pointer_cast<STANZA_TYPE>(stanza), element); - } - - virtual void setStanzaSpecificAttributesGeneric( - boost::shared_ptr<STANZA_TYPE>, - XMLElement&) const = 0; - }; -} - -#endif diff --git a/Swiften/Serializer/IQSerializer.h b/Swiften/Serializer/IQSerializer.h deleted file mode 100644 index 3623f24..0000000 --- a/Swiften/Serializer/IQSerializer.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef SWIFTEN_IQSerializer_H -#define SWIFTEN_IQSerializer_H - -#include <cassert> - -#include "Swiften/Serializer/GenericStanzaSerializer.h" -#include "Swiften/Elements/IQ.h" -#include "Swiften/Serializer/XML/XMLElement.h" - -namespace Swift { - class IQSerializer : public GenericStanzaSerializer<IQ> { - public: - IQSerializer(PayloadSerializerCollection* payloadSerializers) : - GenericStanzaSerializer<IQ>("iq", payloadSerializers) {} - - private: - virtual void setStanzaSpecificAttributesGeneric( - boost::shared_ptr<IQ> iq, - XMLElement& element) const { - switch (iq->getType()) { - case IQ::Get: element.setAttribute("type","get"); break; - case IQ::Set: element.setAttribute("type","set"); break; - case IQ::Result: element.setAttribute("type","result"); break; - case IQ::Error: element.setAttribute("type","error"); break; - } - } - }; -} - -#endif diff --git a/Swiften/Serializer/MessageSerializer.cpp b/Swiften/Serializer/MessageSerializer.cpp deleted file mode 100644 index a3cf2ad..0000000 --- a/Swiften/Serializer/MessageSerializer.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "Swiften/Serializer/MessageSerializer.h" -#include "Swiften/Serializer/XML/XMLElement.h" - -namespace Swift { - -MessageSerializer::MessageSerializer(PayloadSerializerCollection* payloadSerializers) : - GenericStanzaSerializer<Message>("message", payloadSerializers) { -} - -void MessageSerializer::setStanzaSpecificAttributesGeneric( - boost::shared_ptr<Message> message, - XMLElement& element) const { - if (message->getType() == Message::Chat) { - element.setAttribute("type", "chat"); - } - else if (message->getType() == Message::Groupchat) { - element.setAttribute("type", "groupchat"); - } - else if (message->getType() == Message::Headline) { - element.setAttribute("type", "headline"); - } - else if (message->getType() == Message::Error) { - element.setAttribute("type", "error"); - } -} - -} diff --git a/Swiften/Serializer/MessageSerializer.h b/Swiften/Serializer/MessageSerializer.h deleted file mode 100644 index 8cb32c7..0000000 --- a/Swiften/Serializer/MessageSerializer.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef SWIFTEN_MessageSerializer_H -#define SWIFTEN_MessageSerializer_H - -#include "Swiften/Serializer/GenericStanzaSerializer.h" -#include "Swiften/Elements/Message.h" - -namespace Swift { - class XMLElement; - - class MessageSerializer : public GenericStanzaSerializer<Message> { - public: - MessageSerializer(PayloadSerializerCollection* payloadSerializers); - - private: - void setStanzaSpecificAttributesGeneric( - boost::shared_ptr<Message> message, - XMLElement& element) const; - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializer.cpp b/Swiften/Serializer/PayloadSerializer.cpp deleted file mode 100644 index 47295ac..0000000 --- a/Swiften/Serializer/PayloadSerializer.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializer.h" - -namespace Swift { - -PayloadSerializer::~PayloadSerializer() { -} - -} diff --git a/Swiften/Serializer/PayloadSerializer.h b/Swiften/Serializer/PayloadSerializer.h deleted file mode 100644 index 935ff4b..0000000 --- a/Swiften/Serializer/PayloadSerializer.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef SWIFTEN_PAYLOADSERIALIZER_H -#define SWIFTEN_PAYLOADSERIALIZER_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Base/String.h" -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class PayloadSerializer { - public: - virtual ~PayloadSerializer(); - - virtual bool canSerialize(boost::shared_ptr<Payload>) const = 0; - virtual String serialize(boost::shared_ptr<Payload>) const = 0; - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializerCollection.cpp b/Swiften/Serializer/PayloadSerializerCollection.cpp deleted file mode 100644 index db86eea..0000000 --- a/Swiften/Serializer/PayloadSerializerCollection.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include <boost/bind.hpp> -#include <algorithm> - -#include "Swiften/Serializer/PayloadSerializerCollection.h" -#include "Swiften/Serializer/PayloadSerializer.h" - -namespace Swift { - -PayloadSerializerCollection::PayloadSerializerCollection() { -} - -void PayloadSerializerCollection::addSerializer(PayloadSerializer* serializer) { - serializers_.push_back(serializer); -} - -void PayloadSerializerCollection::removeSerializer(PayloadSerializer* serializer) { - serializers_.erase(remove(serializers_.begin(), serializers_.end(), serializer), serializers_.end()); -} - -PayloadSerializer* PayloadSerializerCollection::getPayloadSerializer(boost::shared_ptr<Payload> payload) const { - std::vector<PayloadSerializer*>::const_iterator i = std::find_if( - serializers_.begin(), serializers_.end(), - boost::bind(&PayloadSerializer::canSerialize, _1, payload)); - return (i != serializers_.end() ? *i : NULL); -} - -} diff --git a/Swiften/Serializer/PayloadSerializerCollection.h b/Swiften/Serializer/PayloadSerializerCollection.h deleted file mode 100644 index 63ccabe..0000000 --- a/Swiften/Serializer/PayloadSerializerCollection.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include <vector> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/Payload.h" - -namespace Swift { - class PayloadSerializer; - class String; - - class PayloadSerializerCollection { - public: - PayloadSerializerCollection(); - - void addSerializer(PayloadSerializer* factory); - void removeSerializer(PayloadSerializer* factory); - PayloadSerializer* getPayloadSerializer(boost::shared_ptr<Payload>) const; - - private: - std::vector<PayloadSerializer*> serializers_; - }; -} diff --git a/Swiften/Serializer/PayloadSerializers/BodySerializer.h b/Swiften/Serializer/PayloadSerializers/BodySerializer.h deleted file mode 100644 index 7fba561..0000000 --- a/Swiften/Serializer/PayloadSerializers/BodySerializer.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef SWIFTEN_BodySerializer_H -#define SWIFTEN_BodySerializer_H - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Serializer/XML/XMLTextNode.h" -#include "Swiften/Elements/Body.h" - -namespace Swift { - class BodySerializer : public GenericPayloadSerializer<Body> { - public: - BodySerializer() : GenericPayloadSerializer<Body>() {} - - virtual String serializePayload(boost::shared_ptr<Body> body) const { - XMLTextNode textNode(body->getText()); - return "<body>" + textNode.serialize() + "</body>"; - } - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.cpp b/Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.cpp deleted file mode 100644 index fbb72af..0000000 --- a/Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.h" - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Serializer/XML/XMLElement.h" - -namespace Swift { - -CapsInfoSerializer::CapsInfoSerializer() : GenericPayloadSerializer<CapsInfo>() { -} - -String CapsInfoSerializer::serializePayload(boost::shared_ptr<CapsInfo> capsInfo) const { - XMLElement capsElement("c", "http://jabber.org/protocol/caps"); - capsElement.setAttribute("node", capsInfo->getNode()); - capsElement.setAttribute("hash", capsInfo->getHash()); - capsElement.setAttribute("ver", capsInfo->getVersion()); - return capsElement.serialize(); -} - -} diff --git a/Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.h b/Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.h deleted file mode 100644 index cb4fa33..0000000 --- a/Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SWIFTEN_CapsInfoSerializer_H -#define SWIFTEN_CapsInfoSerializer_H - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/CapsInfo.h" - -namespace Swift { - class CapsInfoSerializer : public GenericPayloadSerializer<CapsInfo> { - public: - CapsInfoSerializer(); - - virtual String serializePayload(boost::shared_ptr<CapsInfo>) const; - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.cpp b/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.cpp deleted file mode 100644 index 0507092..0000000 --- a/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/ChatStateSerializer.h" - -namespace Swift { - -ChatStateSerializer::ChatStateSerializer() : GenericPayloadSerializer<ChatState>() { -} - -String ChatStateSerializer::serializePayload(boost::shared_ptr<ChatState> chatState) const { - String result("<"); - switch (chatState->getChatState()) { - case ChatState::Active: result += "active"; break; - case ChatState::Composing: result += "composing"; break; - case ChatState::Paused: result += "paused"; break; - case ChatState::Inactive: result += "inactive"; break; - case ChatState::Gone: result += "gone"; break; - default: result += "gone"; break; - } - result += " xmlns=\"http://jabber.org/protocol/chatstates\"/>"; - return result; -} - -} diff --git a/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.h b/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.h deleted file mode 100644 index e99b8b6..0000000 --- a/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/ChatState.h" - -namespace Swift { - class ChatStateSerializer : public GenericPayloadSerializer<ChatState> { - public: - ChatStateSerializer(); - - virtual String serializePayload(boost::shared_ptr<ChatState> error) const; - }; -} diff --git a/Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.cpp b/Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.cpp deleted file mode 100644 index 4c39574..0000000 --- a/Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.h" - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Base/foreach.h" -#include "Swiften/Serializer/XML/XMLElement.h" - -namespace Swift { - -DiscoInfoSerializer::DiscoInfoSerializer() : GenericPayloadSerializer<DiscoInfo>() { -} - -String DiscoInfoSerializer::serializePayload(boost::shared_ptr<DiscoInfo> discoInfo) const { - XMLElement queryElement("query", "http://jabber.org/protocol/disco#info"); - if (!discoInfo->getNode().isEmpty()) { - queryElement.setAttribute("node", discoInfo->getNode()); - } - foreach(const DiscoInfo::Identity& identity, discoInfo->getIdentities()) { - boost::shared_ptr<XMLElement> identityElement(new XMLElement("identity")); - if (!identity.getLanguage().isEmpty()) { - identityElement->setAttribute("xml:lang", identity.getLanguage()); - } - identityElement->setAttribute("category", identity.getCategory()); - identityElement->setAttribute("name", identity.getName()); - identityElement->setAttribute("type", identity.getType()); - queryElement.addNode(identityElement); - } - foreach(const String& feature, discoInfo->getFeatures()) { - boost::shared_ptr<XMLElement> featureElement(new XMLElement("feature")); - featureElement->setAttribute("var", feature); - queryElement.addNode(featureElement); - } - return queryElement.serialize(); -} - -} diff --git a/Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.h b/Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.h deleted file mode 100644 index 929a455..0000000 --- a/Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SWIFTEN_DiscoInfoSerializer_H -#define SWIFTEN_DiscoInfoSerializer_H - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/DiscoInfo.h" - -namespace Swift { - class DiscoInfoSerializer : public GenericPayloadSerializer<DiscoInfo> { - public: - DiscoInfoSerializer(); - - virtual String serializePayload(boost::shared_ptr<DiscoInfo>) const; - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializers/ErrorSerializer.cpp b/Swiften/Serializer/PayloadSerializers/ErrorSerializer.cpp deleted file mode 100644 index f5ce478..0000000 --- a/Swiften/Serializer/PayloadSerializers/ErrorSerializer.cpp +++ /dev/null @@ -1,56 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/ErrorSerializer.h" -#include "Swiften/Serializer/XML/XMLTextNode.h" - -namespace Swift { - -ErrorSerializer::ErrorSerializer() : GenericPayloadSerializer<ErrorPayload>() { -} - -String ErrorSerializer::serializePayload(boost::shared_ptr<ErrorPayload> error) const { - String result("<error type=\""); - switch (error->getType()) { - case ErrorPayload::Continue: result += "continue"; break; - case ErrorPayload::Modify: result += "modify"; break; - case ErrorPayload::Auth: result += "auth"; break; - case ErrorPayload::Wait: result += "wait"; break; - default: result += "cancel"; break; - } - result += "\">"; - - String conditionElement; - switch (error->getCondition()) { - case ErrorPayload::BadRequest: conditionElement = "bad-request"; break; - case ErrorPayload::Conflict: conditionElement = "conflict"; break; - case ErrorPayload::FeatureNotImplemented: conditionElement = "feature-not-implemented"; break; - case ErrorPayload::Forbidden: conditionElement = "forbidden"; break; - case ErrorPayload::Gone: conditionElement = "gone"; break; - case ErrorPayload::InternalServerError: conditionElement = "internal-server-error"; break; - case ErrorPayload::ItemNotFound: conditionElement = "item-not-found"; break; - case ErrorPayload::JIDMalformed: conditionElement = "jid-malformed"; break; - case ErrorPayload::NotAcceptable: conditionElement = "not-acceptable"; break; - case ErrorPayload::NotAllowed: conditionElement = "not-allowed"; break; - case ErrorPayload::NotAuthorized: conditionElement = "not-authorized"; break; - case ErrorPayload::PaymentRequired: conditionElement = "payment-required"; break; - case ErrorPayload::RecipientUnavailable: conditionElement = "recipient-unavailable"; break; - case ErrorPayload::Redirect: conditionElement = "redirect"; break; - case ErrorPayload::RegistrationRequired: conditionElement = "registration-required"; break; - case ErrorPayload::RemoteServerNotFound: conditionElement = "remote-server-not-found"; break; - case ErrorPayload::RemoteServerTimeout: conditionElement = "remote-server-timeout"; break; - case ErrorPayload::ResourceConstraint: conditionElement = "resource-constraint"; break; - case ErrorPayload::ServiceUnavailable: conditionElement = "service-unavailable"; break; - case ErrorPayload::SubscriptionRequired: conditionElement = "subscription-required"; break; - case ErrorPayload::UnexpectedRequest: conditionElement = "unexpected-request"; break; - default: conditionElement = "undefined-condition"; break; - } - result += "<" + conditionElement + " xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>"; - - if (!error->getText().isEmpty()) { - XMLTextNode textNode(error->getText()); - result += "<text xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">" + textNode.serialize() + "</text>"; - } - - result += "</error>"; - return result; -} - -} diff --git a/Swiften/Serializer/PayloadSerializers/ErrorSerializer.h b/Swiften/Serializer/PayloadSerializers/ErrorSerializer.h deleted file mode 100644 index 931596f..0000000 --- a/Swiften/Serializer/PayloadSerializers/ErrorSerializer.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SWIFTEN_ErrorSerializer_H -#define SWIFTEN_ErrorSerializer_H - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/ErrorPayload.h" - -namespace Swift { - class ErrorSerializer : public GenericPayloadSerializer<ErrorPayload> { - public: - ErrorSerializer(); - - virtual String serializePayload(boost::shared_ptr<ErrorPayload> error) const; - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.cpp b/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.cpp deleted file mode 100644 index accf6c6..0000000 --- a/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h" -#include "Swiften/Base/foreach.h" -#include "Swiften/Serializer/PayloadSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/BodySerializer.h" -#include "Swiften/Serializer/PayloadSerializers/ChatStateSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/PrioritySerializer.h" -#include "Swiften/Serializer/PayloadSerializers/ErrorSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/RosterSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/StatusSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/StartSessionSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/VCardSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/RawXMLPayloadSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/StorageSerializer.h" -#include "Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h" - -namespace Swift { - -FullPayloadSerializerCollection::FullPayloadSerializerCollection() { - serializers_.push_back(new BodySerializer()); - serializers_.push_back(new ChatStateSerializer()); - serializers_.push_back(new PrioritySerializer()); - serializers_.push_back(new ErrorSerializer()); - serializers_.push_back(new RosterSerializer()); - serializers_.push_back(new MUCPayloadSerializer()); - serializers_.push_back(new SoftwareVersionSerializer()); - serializers_.push_back(new StatusSerializer()); - serializers_.push_back(new StatusShowSerializer()); - serializers_.push_back(new DiscoInfoSerializer()); - serializers_.push_back(new CapsInfoSerializer()); - serializers_.push_back(new ResourceBindSerializer()); - serializers_.push_back(new StartSessionSerializer()); - serializers_.push_back(new SecurityLabelSerializer()); - serializers_.push_back(new SecurityLabelsCatalogSerializer()); - serializers_.push_back(new VCardSerializer()); - serializers_.push_back(new VCardUpdateSerializer()); - serializers_.push_back(new RawXMLPayloadSerializer()); - serializers_.push_back(new StorageSerializer()); - serializers_.push_back(new PrivateStorageSerializer(this)); - foreach(PayloadSerializer* serializer, serializers_) { - addSerializer(serializer); - } -} - -FullPayloadSerializerCollection::~FullPayloadSerializerCollection() { - foreach(PayloadSerializer* serializer, serializers_) { - removeSerializer(serializer); - delete serializer; - } - serializers_.clear(); -} - -} diff --git a/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h b/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h deleted file mode 100644 index e1655b5..0000000 --- a/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef SWIFTEN_FULLPAYLOADSERIALIZERCOLLECTION_H -#define SWIFTEN_FULLPAYLOADSERIALIZERCOLLECTION_H - -#include <vector> - -#include "Swiften/Serializer/PayloadSerializerCollection.h" - -namespace Swift { - class FullPayloadSerializerCollection : public PayloadSerializerCollection { - public: - FullPayloadSerializerCollection(); - ~FullPayloadSerializerCollection(); - - private: - std::vector<PayloadSerializer*> serializers_; - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.cpp b/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.cpp deleted file mode 100644 index 9c701cc..0000000 --- a/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h" - -namespace Swift { - -MUCPayloadSerializer::MUCPayloadSerializer() : GenericPayloadSerializer<MUCPayload>() { -} - -String MUCPayloadSerializer::serializePayload(boost::shared_ptr<MUCPayload>) const { - String result("<x xmlns='http://jabber.org/protocol/muc'/>"); - return result; -} - -} diff --git a/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h b/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h deleted file mode 100644 index 504c969..0000000 --- a/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SWIFTEN_MUCPayloadSerializer_H -#define SWIFTEN_MUCPayloadSerializer_H - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/MUCPayload.h" - -namespace Swift { - class MUCPayloadSerializer : public GenericPayloadSerializer<MUCPayload> { - public: - MUCPayloadSerializer(); - - virtual String serializePayload(boost::shared_ptr<MUCPayload> version) const; - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializers/PrioritySerializer.h b/Swiften/Serializer/PayloadSerializers/PrioritySerializer.h deleted file mode 100644 index f132b6e..0000000 --- a/Swiften/Serializer/PayloadSerializers/PrioritySerializer.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef SWIFTEN_PrioritySerializer_H -#define SWIFTEN_PrioritySerializer_H - -#include <boost/lexical_cast.hpp> - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/Priority.h" - -namespace Swift { - class PrioritySerializer : public GenericPayloadSerializer<Priority> { - public: - PrioritySerializer() : GenericPayloadSerializer<Priority>() {} - - virtual String serializePayload(boost::shared_ptr<Priority> priority) const { - return "<priority>" + boost::lexical_cast<std::string>(priority->getPriority()) + "</priority>"; - } - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.cpp b/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.cpp deleted file mode 100644 index 999252c..0000000 --- a/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h" - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Base/foreach.h" -#include "Swiften/Serializer/XML/XMLElement.h" -#include "Swiften/Serializer/XML/XMLTextNode.h" -#include "Swiften/Serializer/XML/XMLRawTextNode.h" -#include "Swiften/Serializer/PayloadSerializerCollection.h" - -namespace Swift { - -PrivateStorageSerializer::PrivateStorageSerializer(PayloadSerializerCollection* serializers) : serializers(serializers) { -} - -String PrivateStorageSerializer::serializePayload(boost::shared_ptr<PrivateStorage> storage) const { - XMLElement storageElement("query", "jabber:iq:private"); - boost::shared_ptr<Payload> payload = storage->getPayload(); - if (payload) { - PayloadSerializer* serializer = serializers->getPayloadSerializer(payload); - if (serializer) { - storageElement.addNode(boost::shared_ptr<XMLRawTextNode>(new XMLRawTextNode(serializer->serialize(payload)))); - } - } - return storageElement.serialize(); -} - -} diff --git a/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h b/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h deleted file mode 100644 index c655634..0000000 --- a/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/PrivateStorage.h" - -namespace Swift { - class PayloadSerializerCollection; - - class PrivateStorageSerializer : public GenericPayloadSerializer<PrivateStorage> { - public: - PrivateStorageSerializer(PayloadSerializerCollection* serializers); - - virtual String serializePayload(boost::shared_ptr<PrivateStorage>) const; - - private: - PayloadSerializerCollection* serializers; - }; -} diff --git a/Swiften/Serializer/PayloadSerializers/RawXMLPayloadSerializer.h b/Swiften/Serializer/PayloadSerializers/RawXMLPayloadSerializer.h deleted file mode 100644 index f980174..0000000 --- a/Swiften/Serializer/PayloadSerializers/RawXMLPayloadSerializer.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/RawXMLPayload.h" - -namespace Swift { - class RawXMLPayloadSerializer : public GenericPayloadSerializer<RawXMLPayload> { - public: - RawXMLPayloadSerializer() : GenericPayloadSerializer<RawXMLPayload>() {} - - virtual String serializePayload(boost::shared_ptr<RawXMLPayload> p) const { - return p->getRawXML(); - } - }; -} diff --git a/Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.cpp b/Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.cpp deleted file mode 100644 index 93ab136..0000000 --- a/Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.h" - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Serializer/XML/XMLElement.h" -#include "Swiften/Serializer/XML/XMLTextNode.h" - -namespace Swift { - -ResourceBindSerializer::ResourceBindSerializer() : GenericPayloadSerializer<ResourceBind>() { -} - -String ResourceBindSerializer::serializePayload(boost::shared_ptr<ResourceBind> resourceBind) const { - XMLElement bindElement("bind", "urn:ietf:params:xml:ns:xmpp-bind"); - if (resourceBind->getJID().isValid()) { - boost::shared_ptr<XMLElement> jidNode(new XMLElement("jid")); - jidNode->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(resourceBind->getJID().toString()))); - bindElement.addNode(jidNode); - } - else if (!resourceBind->getResource().isEmpty()) { - boost::shared_ptr<XMLElement> resourceNode(new XMLElement("resource")); - resourceNode->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(resourceBind->getResource()))); - bindElement.addNode(resourceNode); - } - return bindElement.serialize(); -} - -} diff --git a/Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.h b/Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.h deleted file mode 100644 index 61cf539..0000000 --- a/Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SWIFTEN_ResourceBindSerializer_H -#define SWIFTEN_ResourceBindSerializer_H - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/ResourceBind.h" - -namespace Swift { - class ResourceBindSerializer : public GenericPayloadSerializer<ResourceBind> { - public: - ResourceBindSerializer(); - - virtual String serializePayload(boost::shared_ptr<ResourceBind>) const; - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializers/RosterSerializer.cpp b/Swiften/Serializer/PayloadSerializers/RosterSerializer.cpp deleted file mode 100644 index 6329f86..0000000 --- a/Swiften/Serializer/PayloadSerializers/RosterSerializer.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/RosterSerializer.h" - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Base/foreach.h" -#include "Swiften/Serializer/XML/XMLTextNode.h" -#include "Swiften/Serializer/XML/XMLElement.h" - -namespace Swift { - -RosterSerializer::RosterSerializer() : GenericPayloadSerializer<RosterPayload>() { -} - -String RosterSerializer::serializePayload(boost::shared_ptr<RosterPayload> roster) const { - XMLElement queryElement("query", "jabber:iq:roster"); - foreach(const RosterItemPayload& item, roster->getItems()) { - boost::shared_ptr<XMLElement> itemElement(new XMLElement("item")); - itemElement->setAttribute("jid", item.getJID()); - itemElement->setAttribute("name", item.getName()); - - switch (item.getSubscription()) { - case RosterItemPayload::To: itemElement->setAttribute("subscription", "to"); break; - case RosterItemPayload::From: itemElement->setAttribute("subscription", "from"); break; - case RosterItemPayload::Both: itemElement->setAttribute("subscription", "both"); break; - case RosterItemPayload::Remove: itemElement->setAttribute("subscription", "remove"); break; - case RosterItemPayload::None: itemElement->setAttribute("subscription", "none"); break; - } - - if (item.getSubscriptionRequested()) { - itemElement->setAttribute("ask", "subscribe"); - } - - foreach(const String& group, item.getGroups()) { - boost::shared_ptr<XMLElement> groupElement(new XMLElement("group")); - groupElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(group))); - itemElement->addNode(groupElement); - } - - queryElement.addNode(itemElement); - } - - return queryElement.serialize(); -} - -} diff --git a/Swiften/Serializer/PayloadSerializers/RosterSerializer.h b/Swiften/Serializer/PayloadSerializers/RosterSerializer.h deleted file mode 100644 index fb6a713..0000000 --- a/Swiften/Serializer/PayloadSerializers/RosterSerializer.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SWIFTEN_RosterSerializer_H -#define SWIFTEN_RosterSerializer_H - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/RosterPayload.h" - -namespace Swift { - class RosterSerializer : public GenericPayloadSerializer<RosterPayload> { - public: - RosterSerializer(); - - virtual String serializePayload(boost::shared_ptr<RosterPayload>) const; - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.cpp b/Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.cpp deleted file mode 100644 index dcce4dc..0000000 --- a/Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h" -#include "Swiften/Base/foreach.h" -#include "Swiften/Serializer/XML/XMLRawTextNode.h" -#include "Swiften/Serializer/XML/XMLTextNode.h" -#include "Swiften/Serializer/XML/XMLElement.h" - -namespace Swift { - -SecurityLabelSerializer::SecurityLabelSerializer() : GenericPayloadSerializer<SecurityLabel>() { -} - -String SecurityLabelSerializer::serializePayload(boost::shared_ptr<SecurityLabel> label) const { - XMLElement element("securitylabel", "urn:xmpp:sec-label:0"); - if (!label->getDisplayMarking().isEmpty()) { - boost::shared_ptr<XMLElement> displayMarking(new XMLElement("displaymarking")); - if (!label->getForegroundColor().isEmpty()) { - displayMarking->setAttribute("fgcolor", label->getForegroundColor()); - } - if (!label->getBackgroundColor().isEmpty()) { - displayMarking->setAttribute("bgcolor", label->getBackgroundColor()); - } - displayMarking->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(label->getDisplayMarking()))); - element.addNode(displayMarking); - } - - boost::shared_ptr<XMLElement> labelElement(new XMLElement("label")); - labelElement->addNode(boost::shared_ptr<XMLRawTextNode>(new XMLRawTextNode(label->getLabel()))); - element.addNode(labelElement); - - foreach(const String& equivalentLabel, label->getEquivalentLabels()) { - boost::shared_ptr<XMLElement> equivalentLabelElement(new XMLElement("equivalentlabel")); - equivalentLabelElement->addNode(boost::shared_ptr<XMLRawTextNode>(new XMLRawTextNode(equivalentLabel))); - element.addNode(equivalentLabelElement); - } - return element.serialize(); -} - -} diff --git a/Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h b/Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h deleted file mode 100644 index b0b0804..0000000 --- a/Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SWIFTEN_SecurityLabelSerializer_H -#define SWIFTEN_SecurityLabelSerializer_H - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/SecurityLabel.h" - -namespace Swift { - class SecurityLabelSerializer : public GenericPayloadSerializer<SecurityLabel> { - public: - SecurityLabelSerializer(); - - virtual String serializePayload(boost::shared_ptr<SecurityLabel> version) const; - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.cpp b/Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.cpp deleted file mode 100644 index bc6a41f..0000000 --- a/Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.h" -#include "Swiften/Base/foreach.h" -#include "Swiften/Serializer/XML/XMLElement.h" -#include "Swiften/Serializer/XML/XMLRawTextNode.h" -#include "Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h" - -namespace Swift { - -SecurityLabelsCatalogSerializer::SecurityLabelsCatalogSerializer() : GenericPayloadSerializer<SecurityLabelsCatalog>() { -} - -String SecurityLabelsCatalogSerializer::serializePayload(boost::shared_ptr<SecurityLabelsCatalog> catalog) const { - XMLElement element("catalog", "urn:xmpp:sec-label:catalog:0"); - if (!catalog->getName().isEmpty()) { - element.setAttribute("name", catalog->getName()); - } - if (catalog->getTo().isValid()) { - element.setAttribute("to", catalog->getTo()); - } - if (!catalog->getDescription().isEmpty()) { - element.setAttribute("desc", catalog->getDescription()); - } - foreach (const SecurityLabel& label, catalog->getLabels()) { - String serializedLabel = SecurityLabelSerializer().serialize(boost::shared_ptr<SecurityLabel>(new SecurityLabel(label))); - element.addNode(boost::shared_ptr<XMLRawTextNode>(new XMLRawTextNode(serializedLabel))); - } - return element.serialize(); -} - -} diff --git a/Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.h b/Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.h deleted file mode 100644 index d086c79..0000000 --- a/Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SWIFTEN_SecurityLabelsCatalogSerializer_H -#define SWIFTEN_SecurityLabelsCatalogSerializer_H - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/SecurityLabelsCatalog.h" - -namespace Swift { - class SecurityLabelsCatalogSerializer : public GenericPayloadSerializer<SecurityLabelsCatalog> { - public: - SecurityLabelsCatalogSerializer(); - - virtual String serializePayload(boost::shared_ptr<SecurityLabelsCatalog> version) const; - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.cpp b/Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.cpp deleted file mode 100644 index 71ad9a2..0000000 --- a/Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.h" - -namespace Swift { - -SoftwareVersionSerializer::SoftwareVersionSerializer() : GenericPayloadSerializer<SoftwareVersion>() { -} - -String SoftwareVersionSerializer::serializePayload(boost::shared_ptr<SoftwareVersion> version) const { - String result("<query xmlns=\"jabber:iq:version\">"); - if (!version->getName().isEmpty()) { - result += "<name>" + version->getName() + "</name>"; - } - if (!version->getVersion().isEmpty()) { - result += "<version>" + version->getVersion() + "</version>"; - } - if (!version->getOS().isEmpty()) { - result += "<os>" + version->getOS() + "</os>"; - } - result += "</query>"; - return result; -} - -} diff --git a/Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.h b/Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.h deleted file mode 100644 index 50242f2..0000000 --- a/Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SWIFTEN_SoftwareVersionSerializer_H -#define SWIFTEN_SoftwareVersionSerializer_H - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/SoftwareVersion.h" - -namespace Swift { - class SoftwareVersionSerializer : public GenericPayloadSerializer<SoftwareVersion> { - public: - SoftwareVersionSerializer(); - - virtual String serializePayload(boost::shared_ptr<SoftwareVersion> version) const; - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializers/StartSessionSerializer.h b/Swiften/Serializer/PayloadSerializers/StartSessionSerializer.h deleted file mode 100644 index df35054..0000000 --- a/Swiften/Serializer/PayloadSerializers/StartSessionSerializer.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef SWIFTEN_StartSessionSerializer_H -#define SWIFTEN_StartSessionSerializer_H - -#include <boost/lexical_cast.hpp> - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/StartSession.h" - -namespace Swift { - class StartSessionSerializer : public GenericPayloadSerializer<StartSession> { - public: - StartSessionSerializer() : GenericPayloadSerializer<StartSession>() {} - - virtual String serializePayload(boost::shared_ptr<StartSession>) const { - return XMLElement("session", "urn:ietf:params:xml:ns:xmpp-session").serialize(); - } - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializers/StatusSerializer.h b/Swiften/Serializer/PayloadSerializers/StatusSerializer.h deleted file mode 100644 index dc5f6d1..0000000 --- a/Swiften/Serializer/PayloadSerializers/StatusSerializer.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef SWIFTEN_StatusSerializer_H -#define SWIFTEN_StatusSerializer_H - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Serializer/XML/XMLElement.h" -#include "Swiften/Serializer/XML/XMLTextNode.h" -#include "Swiften/Elements/Status.h" - -namespace Swift { - class StatusSerializer : public GenericPayloadSerializer<Status> { - public: - StatusSerializer() : GenericPayloadSerializer<Status>() {} - - virtual String serializePayload(boost::shared_ptr<Status> status) const { - XMLElement element("status"); - element.addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(status->getText()))); - return element.serialize(); - } - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h b/Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h deleted file mode 100644 index f66c09c..0000000 --- a/Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef SWIFTEN_StatusShowSerializer_H -#define SWIFTEN_StatusShowSerializer_H - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/StatusShow.h" - -namespace Swift { - class StatusShowSerializer : public GenericPayloadSerializer<StatusShow> { - public: - StatusShowSerializer() : GenericPayloadSerializer<StatusShow>() {} - - virtual String serializePayload(boost::shared_ptr<StatusShow> statusShow) const { - if (statusShow->getType () == StatusShow::Online || statusShow->getType() == StatusShow::None) { - return ""; - } - else { - String result("<show>"); - switch (statusShow->getType()) { - case StatusShow::Away: result += "away"; break; - case StatusShow::XA: result += "xa"; break; - case StatusShow::FFC: result += "chat"; break; - case StatusShow::DND: result += "dnd"; break; - case StatusShow::Online: assert(false); break; - case StatusShow::None: assert(false); break; - } - result += "</show>"; - return result; - } - } - }; -} - -#endif diff --git a/Swiften/Serializer/PayloadSerializers/StorageSerializer.cpp b/Swiften/Serializer/PayloadSerializers/StorageSerializer.cpp deleted file mode 100644 index 4268381..0000000 --- a/Swiften/Serializer/PayloadSerializers/StorageSerializer.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/StorageSerializer.h" - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Base/foreach.h" -#include "Swiften/Serializer/XML/XMLElement.h" -#include "Swiften/Serializer/XML/XMLTextNode.h" - -namespace Swift { - -StorageSerializer::StorageSerializer() : GenericPayloadSerializer<Storage>() { -} - -String StorageSerializer::serializePayload(boost::shared_ptr<Storage> storage) const { - XMLElement storageElement("storage", "storage:bookmarks"); - foreach(const Storage::Conference& conference, storage->getConferences()) { - boost::shared_ptr<XMLElement> conferenceElement(new XMLElement("conference")); - conferenceElement->setAttribute("name", conference.name); - conferenceElement->setAttribute("jid", conference.jid); - conferenceElement->setAttribute("autojoin", conference.autoJoin ? "1" : "0"); - if (!conference.nick.isEmpty()) { - boost::shared_ptr<XMLElement> nickElement(new XMLElement("nick")); - nickElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(conference.nick))); - conferenceElement->addNode(nickElement); - } - if (!conference.password.isEmpty()) { - boost::shared_ptr<XMLElement> passwordElement(new XMLElement("password")); - passwordElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(conference.password))); - conferenceElement->addNode(passwordElement); - } - storageElement.addNode(conferenceElement); - } - return storageElement.serialize(); -} - -} diff --git a/Swiften/Serializer/PayloadSerializers/StorageSerializer.h b/Swiften/Serializer/PayloadSerializers/StorageSerializer.h deleted file mode 100644 index e657376..0000000 --- a/Swiften/Serializer/PayloadSerializers/StorageSerializer.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/Storage.h" - -namespace Swift { - class StorageSerializer : public GenericPayloadSerializer<Storage> { - public: - StorageSerializer(); - - virtual String serializePayload(boost::shared_ptr<Storage>) const; - }; -} diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/CapsInfoSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/CapsInfoSerializerTest.cpp deleted file mode 100644 index 650a7ee..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/CapsInfoSerializerTest.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.h" - -using namespace Swift; - -class CapsInfoSerializerTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(CapsInfoSerializerTest); - CPPUNIT_TEST(testSerialize); - CPPUNIT_TEST_SUITE_END(); - - public: - CapsInfoSerializerTest() {} - - void testSerialize() { - CapsInfoSerializer testling; - boost::shared_ptr<CapsInfo> priority(new CapsInfo("http://swift.im", "myversion", "sha-1")); - - CPPUNIT_ASSERT_EQUAL(String("<c hash=\"sha-1\" node=\"http://swift.im\" ver=\"myversion\" xmlns=\"http://jabber.org/protocol/caps\"/>"), testling.serialize(priority)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(CapsInfoSerializerTest); diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/DiscoInfoSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/DiscoInfoSerializerTest.cpp deleted file mode 100644 index d3e247f..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/DiscoInfoSerializerTest.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.h" - -using namespace Swift; - -class DiscoInfoSerializerTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(DiscoInfoSerializerTest); - CPPUNIT_TEST(testSerialize); - CPPUNIT_TEST_SUITE_END(); - - public: - DiscoInfoSerializerTest() {} - - void testSerialize() { - DiscoInfoSerializer testling; - boost::shared_ptr<DiscoInfo> discoInfo(new DiscoInfo()); - discoInfo->addIdentity(DiscoInfo::Identity("Swift", "client", "pc")); - discoInfo->addIdentity(DiscoInfo::Identity("Vlug", "client", "pc", "nl")); - discoInfo->addFeature("http://jabber.org/protocol/caps"); - discoInfo->addFeature("http://jabber.org/protocol/disco#info"); - discoInfo->setNode("http://swift.im#bla"); - - String expectedResult = - "<query node=\"http://swift.im#bla\" xmlns=\"http://jabber.org/protocol/disco#info\">" - "<identity category=\"client\" name=\"Swift\" type=\"pc\"/>" - "<identity category=\"client\" name=\"Vlug\" type=\"pc\" xml:lang=\"nl\"/>" - "<feature var=\"http://jabber.org/protocol/caps\"/>" - "<feature var=\"http://jabber.org/protocol/disco#info\"/>" - "</query>"; - - CPPUNIT_ASSERT_EQUAL(expectedResult, testling.serialize(discoInfo)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(DiscoInfoSerializerTest); diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/ErrorSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/ErrorSerializerTest.cpp deleted file mode 100644 index ecd904a..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/ErrorSerializerTest.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/PayloadSerializers/ErrorSerializer.h" - -using namespace Swift; - -class ErrorSerializerTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(ErrorSerializerTest); - CPPUNIT_TEST(testSerialize); - CPPUNIT_TEST_SUITE_END(); - - public: - ErrorSerializerTest() {} - - void testSerialize() { - ErrorSerializer testling; - boost::shared_ptr<ErrorPayload> error(new ErrorPayload(ErrorPayload::BadRequest, ErrorPayload::Cancel, "My Error")); - - CPPUNIT_ASSERT_EQUAL(String("<error type=\"cancel\"><bad-request xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/><text xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">My Error</text></error>"), testling.serialize(error)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(ErrorSerializerTest); diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.cpp deleted file mode 100644 index 23ff4a0..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.h" - -#include <cppunit/extensions/HelperMacros.h> - -#include "Swiften/Serializer/PayloadSerializer.h" - -namespace Swift { - -String PayloadsSerializer::serialize(boost::shared_ptr<Payload> payload) { - PayloadSerializer* serializer = serializers.getPayloadSerializer(payload); - if (serializer) { - return serializer->serialize(payload); - } - else { - CPPUNIT_ASSERT(false); - return ""; - } -} - - -} diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.h b/Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.h deleted file mode 100644 index 9fca334..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/Payload.h" -#include "Swiften/Base/String.h" -#include "Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h" - -namespace Swift { - class PayloadsSerializer { - public: - String serialize(boost::shared_ptr<Payload> payload); - - private: - FullPayloadSerializerCollection serializers; - }; -} diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/PrioritySerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/PrioritySerializerTest.cpp deleted file mode 100644 index 5f6432b..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/PrioritySerializerTest.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/PayloadSerializers/PrioritySerializer.h" - -using namespace Swift; - -class PrioritySerializerTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(PrioritySerializerTest); - CPPUNIT_TEST(testSerialize); - CPPUNIT_TEST_SUITE_END(); - - public: - PrioritySerializerTest() {} - - void testSerialize() { - PrioritySerializer testling; - boost::shared_ptr<Priority> priority(new Priority(-113)); - - CPPUNIT_ASSERT_EQUAL(String("<priority>-113</priority>"), testling.serialize(priority)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(PrioritySerializerTest); diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/PrivateStorageSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/PrivateStorageSerializerTest.cpp deleted file mode 100644 index 7f0d5c9..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/PrivateStorageSerializerTest.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.h" -#include "Swiften/Elements/PrivateStorage.h" -#include "Swiften/Elements/Storage.h" - -using namespace Swift; - -class PrivateStorageSerializerTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(PrivateStorageSerializerTest); - CPPUNIT_TEST(testSerialize); - CPPUNIT_TEST_SUITE_END(); - - public: - PrivateStorageSerializerTest() {} - - void testSerialize() { - PayloadsSerializer serializer; - - boost::shared_ptr<PrivateStorage> privateStorage(new PrivateStorage()); - boost::shared_ptr<Storage> storage(new Storage()); - Storage::Conference conference; - conference.name = "Swift"; - conference.jid = JID("swift@rooms.swift.im"); - conference.nick = "Alice"; - storage->addConference(conference); - privateStorage->setPayload(storage); - - CPPUNIT_ASSERT_EQUAL(String( - "<query xmlns=\"jabber:iq:private\">" - "<storage xmlns=\"storage:bookmarks\">" - "<conference " - "autojoin=\"0\" " - "jid=\"swift@rooms.swift.im\" " - "name=\"Swift\">" - "<nick>Alice</nick>" - "</conference>" - "</storage>" - "</query>"), serializer.serialize(privateStorage)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(PrivateStorageSerializerTest); diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/ResourceBindSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/ResourceBindSerializerTest.cpp deleted file mode 100644 index ff09966..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/ResourceBindSerializerTest.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.h" - -using namespace Swift; - -class ResourceBindSerializerTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(ResourceBindSerializerTest); - CPPUNIT_TEST(testSerialize_JID); - CPPUNIT_TEST(testSerialize_Resource); - CPPUNIT_TEST(testSerialize_Empty); - CPPUNIT_TEST_SUITE_END(); - - public: - ResourceBindSerializerTest() {} - - void testSerialize_JID() { - ResourceBindSerializer testling; - boost::shared_ptr<ResourceBind> resourceBind(new ResourceBind()); - resourceBind->setJID(JID("somenode@example.com/someresource")); - - CPPUNIT_ASSERT_EQUAL(String( - "<bind xmlns=\"urn:ietf:params:xml:ns:xmpp-bind\">" - "<jid>somenode@example.com/someresource</jid>" - "</bind>"), testling.serialize(resourceBind)); - } - - void testSerialize_Resource() { - ResourceBindSerializer testling; - boost::shared_ptr<ResourceBind> resourceBind(new ResourceBind()); - resourceBind->setResource("someresource"); - - CPPUNIT_ASSERT_EQUAL(String( - "<bind xmlns=\"urn:ietf:params:xml:ns:xmpp-bind\">" - "<resource>someresource</resource>" - "</bind>"), testling.serialize(resourceBind)); - } - - void testSerialize_Empty() { - ResourceBindSerializer testling; - boost::shared_ptr<ResourceBind> resourceBind(new ResourceBind()); - - CPPUNIT_ASSERT_EQUAL(String("<bind xmlns=\"urn:ietf:params:xml:ns:xmpp-bind\"/>"), testling.serialize(resourceBind)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(ResourceBindSerializerTest); diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/RosterSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/RosterSerializerTest.cpp deleted file mode 100644 index 81fdc09..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/RosterSerializerTest.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/PayloadSerializers/RosterSerializer.h" - -using namespace Swift; - -class RosterSerializerTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(RosterSerializerTest); - CPPUNIT_TEST(testSerialize); - CPPUNIT_TEST_SUITE_END(); - - public: - RosterSerializerTest() {} - - void testSerialize() { - RosterSerializer testling; - boost::shared_ptr<RosterPayload> roster(new RosterPayload()); - - RosterItemPayload item1; - item1.setJID(JID("foo@bar.com")); - item1.setName("Foo @ Bar"); - item1.setSubscription(RosterItemPayload::From); - item1.addGroup("Group 1"); - item1.addGroup("Group 2"); - item1.setSubscriptionRequested(); - roster->addItem(item1); - - RosterItemPayload item2; - item2.setJID(JID("baz@blo.com")); - item2.setName("Baz"); - roster->addItem(item2); - - String expectedResult = - "<query xmlns=\"jabber:iq:roster\">" - "<item ask=\"subscribe\" jid=\"foo@bar.com\" name=\"Foo @ Bar\" subscription=\"from\">" - "<group>Group 1</group>" - "<group>Group 2</group>" - "</item>" - "<item jid=\"baz@blo.com\" name=\"Baz\" subscription=\"none\"/>" - "</query>"; - - CPPUNIT_ASSERT_EQUAL(expectedResult, testling.serialize(roster)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(RosterSerializerTest); diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/SecurityLabelSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/SecurityLabelSerializerTest.cpp deleted file mode 100644 index e75695f..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/SecurityLabelSerializerTest.cpp +++ /dev/null @@ -1,54 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h" - -using namespace Swift; - -class SecurityLabelSerializerTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(SecurityLabelSerializerTest); - CPPUNIT_TEST(testSerialize); - CPPUNIT_TEST(testSerialize_EmptyLabel); - CPPUNIT_TEST_SUITE_END(); - - public: - void testSerialize() { - SecurityLabelSerializer testling; - boost::shared_ptr<SecurityLabel> securityLabel(new SecurityLabel()); - securityLabel->setDisplayMarking("SECRET"); - securityLabel->setForegroundColor("black"); - securityLabel->setBackgroundColor("red"); - securityLabel->setLabel("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>"); - securityLabel->addEquivalentLabel("<icismlabel xmlns=\"http://example.gov/IC-ISM/0\" classification=\"S\" ownerProducer=\"USA\" disseminationControls=\"FOUO\"/>"); - securityLabel->addEquivalentLabel("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MRUCAgD9DA9BcXVhIChvYnNvbGV0ZSk=</esssecuritylabel>"); - - CPPUNIT_ASSERT_EQUAL(String( - "<securitylabel xmlns=\"urn:xmpp:sec-label:0\">" - "<displaymarking bgcolor=\"red\" fgcolor=\"black\">SECRET</displaymarking>" - "<label>" - "<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>" - "</label>" - "<equivalentlabel>" - "<icismlabel xmlns=\"http://example.gov/IC-ISM/0\" classification=\"S\" ownerProducer=\"USA\" disseminationControls=\"FOUO\"/>" - "</equivalentlabel>" - "<equivalentlabel>" - "<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MRUCAgD9DA9BcXVhIChvYnNvbGV0ZSk=</esssecuritylabel>" - "</equivalentlabel>" - "</securitylabel>"), testling.serialize(securityLabel)); - } - - void testSerialize_EmptyLabel() { - SecurityLabelSerializer testling; - boost::shared_ptr<SecurityLabel> securityLabel(new SecurityLabel()); - securityLabel->setDisplayMarking("SECRET"); - securityLabel->setLabel(""); - - CPPUNIT_ASSERT_EQUAL(String( - "<securitylabel xmlns=\"urn:xmpp:sec-label:0\">" - "<displaymarking>SECRET</displaymarking>" - "<label></label>" - "</securitylabel>"), testling.serialize(securityLabel)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(SecurityLabelSerializerTest); diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/SecurityLabelsCatalogSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/SecurityLabelsCatalogSerializerTest.cpp deleted file mode 100644 index 3055aca..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/SecurityLabelsCatalogSerializerTest.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.h" - -using namespace Swift; - -class SecurityLabelsCatalogSerializerTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(SecurityLabelsCatalogSerializerTest); - CPPUNIT_TEST(testSerialize); - CPPUNIT_TEST_SUITE_END(); - - public: - SecurityLabelsCatalogSerializerTest() {} - - void testSerialize() { - SecurityLabelsCatalogSerializer testling; - boost::shared_ptr<SecurityLabelsCatalog> catalog(new SecurityLabelsCatalog()); - catalog->setTo(JID("example.com")); - catalog->setName("Default"); - catalog->setDescription("an example set of labels"); - - SecurityLabel securityLabel1; - securityLabel1.setDisplayMarking("SECRET"); - securityLabel1.setForegroundColor("black"); - securityLabel1.setBackgroundColor("red"); - securityLabel1.setLabel("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>"); - catalog->addLabel(securityLabel1); - - SecurityLabel securityLabel2; - securityLabel2.setDisplayMarking("CONFIDENTIAL"); - securityLabel2.setForegroundColor("black"); - securityLabel2.setBackgroundColor("navy"); - securityLabel2.setLabel("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQMGASk=</esssecuritylabel>"); - catalog->addLabel(securityLabel2); - - CPPUNIT_ASSERT_EQUAL(String( - "<catalog desc=\"an example set of labels\" name=\"Default\" to=\"example.com\" xmlns=\"urn:xmpp:sec-label:catalog:0\">" - "<securitylabel xmlns=\"urn:xmpp:sec-label:0\">" - "<displaymarking bgcolor=\"red\" fgcolor=\"black\">SECRET</displaymarking>" - "<label><esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel></label>" - "</securitylabel>" - "<securitylabel xmlns=\"urn:xmpp:sec-label:0\">" - "<displaymarking bgcolor=\"navy\" fgcolor=\"black\">CONFIDENTIAL</displaymarking>" - "<label><esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQMGASk=</esssecuritylabel></label>" - "</securitylabel>" - "</catalog>"), testling.serialize(catalog)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(SecurityLabelsCatalogSerializerTest); diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/SoftwareVersionSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/SoftwareVersionSerializerTest.cpp deleted file mode 100644 index fd5dba5..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/SoftwareVersionSerializerTest.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.h" - -using namespace Swift; - -class SoftwareVersionSerializerTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(SoftwareVersionSerializerTest); - CPPUNIT_TEST(testSerialize); - CPPUNIT_TEST_SUITE_END(); - - public: - SoftwareVersionSerializerTest() {} - - void testSerialize() { - SoftwareVersionSerializer testling; - boost::shared_ptr<SoftwareVersion> softwareVersion(new SoftwareVersion("Swift", "0.1", "Mac OS X")); - - CPPUNIT_ASSERT_EQUAL(String("<query xmlns=\"jabber:iq:version\"><name>Swift</name><version>0.1</version><os>Mac OS X</os></query>"), testling.serialize(softwareVersion)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(SoftwareVersionSerializerTest); diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/StatusSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/StatusSerializerTest.cpp deleted file mode 100644 index 6dedacd..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/StatusSerializerTest.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/PayloadSerializers/StatusSerializer.h" - -using namespace Swift; - -class StatusSerializerTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(StatusSerializerTest); - CPPUNIT_TEST(testSerialize); - CPPUNIT_TEST_SUITE_END(); - - public: - StatusSerializerTest() {} - - void testSerialize() { - StatusSerializer testling; - boost::shared_ptr<Status> status(new Status("I am away")); - - CPPUNIT_ASSERT_EQUAL(String("<status>I am away</status>"), testling.serialize(status)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(StatusSerializerTest); diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/StatusShowSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/StatusShowSerializerTest.cpp deleted file mode 100644 index 42e1c7c..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/StatusShowSerializerTest.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h" - -using namespace Swift; - -class StatusShowSerializerTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(StatusShowSerializerTest); - CPPUNIT_TEST(testSerialize_Online); - CPPUNIT_TEST(testSerialize_Away); - CPPUNIT_TEST(testSerialize_FFC); - CPPUNIT_TEST(testSerialize_XA); - CPPUNIT_TEST(testSerialize_DND); - CPPUNIT_TEST_SUITE_END(); - - public: - StatusShowSerializerTest() {} - - void testSerialize_Online() { - StatusShowSerializer testling; - boost::shared_ptr<StatusShow> statusShow(new StatusShow(StatusShow::Online)); - CPPUNIT_ASSERT_EQUAL(String(""), testling.serialize(statusShow)); - } - - void testSerialize_Away() { - StatusShowSerializer testling; - boost::shared_ptr<StatusShow> statusShow(new StatusShow(StatusShow::Away)); - CPPUNIT_ASSERT_EQUAL(String("<show>away</show>"), testling.serialize(statusShow)); - } - - void testSerialize_FFC() { - StatusShowSerializer testling; - boost::shared_ptr<StatusShow> statusShow(new StatusShow(StatusShow::FFC)); - CPPUNIT_ASSERT_EQUAL(String("<show>chat</show>"), testling.serialize(statusShow)); - } - - void testSerialize_XA() { - StatusShowSerializer testling; - boost::shared_ptr<StatusShow> statusShow(new StatusShow(StatusShow::XA)); - CPPUNIT_ASSERT_EQUAL(String("<show>xa</show>"), testling.serialize(statusShow)); - } - - void testSerialize_DND() { - StatusShowSerializer testling; - boost::shared_ptr<StatusShow> statusShow(new StatusShow(StatusShow::DND)); - CPPUNIT_ASSERT_EQUAL(String("<show>dnd</show>"), testling.serialize(statusShow)); - } - - void testSerialize_None() { - StatusShowSerializer testling; - boost::shared_ptr<StatusShow> statusShow(new StatusShow(StatusShow::None)); - CPPUNIT_ASSERT_EQUAL(String(""), testling.serialize(statusShow)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(StatusShowSerializerTest); diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/StorageSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/StorageSerializerTest.cpp deleted file mode 100644 index daf43c5..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/StorageSerializerTest.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.h" -#include "Swiften/Elements/Storage.h" - -using namespace Swift; - -class StorageSerializerTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(StorageSerializerTest); - CPPUNIT_TEST(testSerialize); - CPPUNIT_TEST(testSerialize_NoNickOrPassword); - CPPUNIT_TEST_SUITE_END(); - - public: - StorageSerializerTest() {} - - void testSerialize() { - PayloadsSerializer serializer; - boost::shared_ptr<Storage> storage(new Storage()); - Storage::Conference conference; - conference.name = "Council of Oberon"; - conference.autoJoin = true; - conference.jid = JID("council@conference.underhill.org"); - conference.nick = "Puck"; - conference.password = "MyPass"; - storage->addConference(conference); - - CPPUNIT_ASSERT_EQUAL(String( - "<storage xmlns=\"storage:bookmarks\">" - "<conference " - "autojoin=\"1\" " - "jid=\"council@conference.underhill.org\" " - "name=\"Council of Oberon\">" - "<nick>Puck</nick>" - "<password>MyPass</password>" - "</conference>" - "</storage>"), serializer.serialize(storage)); - } - - void testSerialize_NoNickOrPassword() { - PayloadsSerializer serializer; - boost::shared_ptr<Storage> storage(new Storage()); - Storage::Conference conference; - conference.name = "Council of Oberon"; - conference.autoJoin = true; - conference.jid = JID("council@conference.underhill.org"); - storage->addConference(conference); - - CPPUNIT_ASSERT_EQUAL(String( - "<storage xmlns=\"storage:bookmarks\">" - "<conference " - "autojoin=\"1\" " - "jid=\"council@conference.underhill.org\" " - "name=\"Council of Oberon\"/>" - "</storage>"), serializer.serialize(storage)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(StorageSerializerTest); diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/VCardUpdateSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/VCardUpdateSerializerTest.cpp deleted file mode 100644 index 23988d7..0000000 --- a/Swiften/Serializer/PayloadSerializers/UnitTest/VCardUpdateSerializerTest.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.h" - -using namespace Swift; - -class VCardUpdateSerializerTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(VCardUpdateSerializerTest); - CPPUNIT_TEST(testSerialize); - CPPUNIT_TEST_SUITE_END(); - - public: - VCardUpdateSerializerTest() {} - - void testSerialize() { - VCardUpdateSerializer testling; - boost::shared_ptr<VCardUpdate> update(new VCardUpdate()); - update->setPhotoHash("sha1-hash-of-image"); - - String expectedResult = - "<x xmlns=\"vcard-temp:x:update\">" - "<photo>sha1-hash-of-image</photo>" - "</x>"; - - CPPUNIT_ASSERT_EQUAL(expectedResult, testling.serialize(update)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(VCardUpdateSerializerTest); diff --git a/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp b/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp deleted file mode 100644 index fbb0274..0000000 --- a/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/VCardSerializer.h" - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Serializer/XML/XMLElement.h" -#include "Swiften/Serializer/XML/XMLTextNode.h" - -namespace Swift { - -VCardSerializer::VCardSerializer() : GenericPayloadSerializer<VCard>() { -} - -String VCardSerializer::serializePayload(boost::shared_ptr<VCard> vcard) const { - XMLElement queryElement("vCard", "vcard-temp"); - if (!vcard->getFullName().isEmpty()) { - boost::shared_ptr<XMLElement> fullNameElement(new XMLElement("FN")); - fullNameElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getFullName()))); - queryElement.addNode(fullNameElement); - } - if (!vcard->getGivenName().isEmpty() || !vcard->getFamilyName().isEmpty()) { - boost::shared_ptr<XMLElement> nameElement(new XMLElement("N")); - if (!vcard->getFamilyName().isEmpty()) { - boost::shared_ptr<XMLElement> familyNameElement(new XMLElement("FAMILY")); - familyNameElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getFamilyName()))); - nameElement->addNode(familyNameElement); - } - if (!vcard->getGivenName().isEmpty()) { - boost::shared_ptr<XMLElement> givenNameElement(new XMLElement("GIVEN")); - givenNameElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getGivenName()))); - nameElement->addNode(givenNameElement); - } - queryElement.addNode(nameElement); - } - if (!vcard->getEMail().isEmpty()) { - boost::shared_ptr<XMLElement> emailElement(new XMLElement("EMAIL")); - boost::shared_ptr<XMLElement> userIDElement(new XMLElement("USERID")); - userIDElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getEMail()))); - emailElement->addNode(userIDElement); - queryElement.addNode(emailElement); - } - if (!vcard->getNickname().isEmpty()) { - boost::shared_ptr<XMLElement> nickElement(new XMLElement("NICKNAME")); - nickElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getNickname()))); - queryElement.addNode(nickElement); - } - // TODO - return queryElement.serialize(); -} - -} diff --git a/Swiften/Serializer/PayloadSerializers/VCardSerializer.h b/Swiften/Serializer/PayloadSerializers/VCardSerializer.h deleted file mode 100644 index baf5947..0000000 --- a/Swiften/Serializer/PayloadSerializers/VCardSerializer.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/VCard.h" - -namespace Swift { - class VCardSerializer : public GenericPayloadSerializer<VCard> { - public: - VCardSerializer(); - - virtual String serializePayload(boost::shared_ptr<VCard>) const; - }; -} diff --git a/Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.cpp b/Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.cpp deleted file mode 100644 index 540b48d..0000000 --- a/Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.h" - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Serializer/XML/XMLElement.h" -#include "Swiften/Serializer/XML/XMLTextNode.h" - -namespace Swift { - -VCardUpdateSerializer::VCardUpdateSerializer() : GenericPayloadSerializer<VCardUpdate>() { -} - -String VCardUpdateSerializer::serializePayload(boost::shared_ptr<VCardUpdate> vcardUpdate) const { - XMLElement updateElement("x", "vcard-temp:x:update"); - boost::shared_ptr<XMLElement> photoElement(new XMLElement("photo")); - photoElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcardUpdate->getPhotoHash()))); - updateElement.addNode(photoElement); - return updateElement.serialize(); -} - -} diff --git a/Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.h b/Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.h deleted file mode 100644 index e1373a9..0000000 --- a/Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include "Swiften/Serializer/GenericPayloadSerializer.h" -#include "Swiften/Elements/VCardUpdate.h" - -namespace Swift { - class VCardUpdateSerializer : public GenericPayloadSerializer<VCardUpdate> { - public: - VCardUpdateSerializer(); - - virtual String serializePayload(boost::shared_ptr<VCardUpdate>) const; - }; -} diff --git a/Swiften/Serializer/PresenceSerializer.cpp b/Swiften/Serializer/PresenceSerializer.cpp deleted file mode 100644 index f7585d5..0000000 --- a/Swiften/Serializer/PresenceSerializer.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "Swiften/Serializer/PresenceSerializer.h" -#include "Swiften/Serializer/XML/XMLElement.h" - -#include "boost/shared_ptr.hpp" - -namespace Swift { - -PresenceSerializer::PresenceSerializer(PayloadSerializerCollection* payloadSerializers) : - GenericStanzaSerializer<Presence>("presence", payloadSerializers) { -} - -void PresenceSerializer::setStanzaSpecificAttributesGeneric( - boost::shared_ptr<Presence> presence, - XMLElement& element) const { - switch (presence->getType()) { - case Presence::Unavailable: element.setAttribute("type","unavailable"); break; - case Presence::Probe: element.setAttribute("type","probe"); break; - case Presence::Subscribe: element.setAttribute("type","subscribe"); break; - case Presence::Subscribed: element.setAttribute("type","subscribed"); break; - case Presence::Unsubscribe: element.setAttribute("type","unsubscribe"); break; - case Presence::Unsubscribed: element.setAttribute("type","unsubscribed"); break; - case Presence::Error: element.setAttribute("type","error"); break; - case Presence::Available: break; - } -} - -} diff --git a/Swiften/Serializer/PresenceSerializer.h b/Swiften/Serializer/PresenceSerializer.h deleted file mode 100644 index 158d4f2..0000000 --- a/Swiften/Serializer/PresenceSerializer.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef SWIFTEN_PresenceSerializer_H -#define SWIFTEN_PresenceSerializer_H - -#include <cassert> - -#include "Swiften/Serializer/GenericStanzaSerializer.h" -#include "Swiften/Elements/Presence.h" - -namespace Swift { - class PresenceSerializer : public GenericStanzaSerializer<Presence> { - public: - PresenceSerializer(PayloadSerializerCollection* payloadSerializers); - - private: - virtual void setStanzaSpecificAttributesGeneric( - boost::shared_ptr<Presence> presence, - XMLElement& element) const; - }; -} - -#endif diff --git a/Swiften/Serializer/StanzaSerializer.cpp b/Swiften/Serializer/StanzaSerializer.cpp deleted file mode 100644 index d940634..0000000 --- a/Swiften/Serializer/StanzaSerializer.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include "Swiften/Serializer/StanzaSerializer.h" - -#include <sstream> -#include <typeinfo> -#include <iostream> - -#include "Swiften/Serializer/XML/XMLElement.h" -#include "Swiften/Serializer/XML/XMLRawTextNode.h" -#include "Swiften/Serializer/PayloadSerializer.h" -#include "Swiften/Serializer/PayloadSerializerCollection.h" -#include "Swiften/Elements/Stanza.h" - -namespace Swift { - -StanzaSerializer::StanzaSerializer(const String& tag, PayloadSerializerCollection* payloadSerializers) : tag_(tag), payloadSerializers_(payloadSerializers) { -} - -String StanzaSerializer::serialize(boost::shared_ptr<Element> element) const { - boost::shared_ptr<Stanza> stanza(boost::dynamic_pointer_cast<Stanza>(element)); - - XMLElement stanzaElement(tag_); - if (stanza->getFrom().isValid()) { - stanzaElement.setAttribute("from", stanza->getFrom()); - } - if (stanza->getTo().isValid()) { - stanzaElement.setAttribute("to", stanza->getTo()); - } - if (!stanza->getID().isEmpty()) { - stanzaElement.setAttribute("id", stanza->getID()); - } - setStanzaSpecificAttributes(stanza, stanzaElement); - - String serializedPayloads; - foreach (const boost::shared_ptr<Payload>& payload, stanza->getPayloads()) { - PayloadSerializer* serializer = payloadSerializers_->getPayloadSerializer(payload); - if (serializer) { - serializedPayloads += serializer->serialize(payload); - } - else { - std::cerr << "Could not find serializer for " << typeid(*(payload.get())).name() << std::endl; - } - } - if (!serializedPayloads.isEmpty()) { - stanzaElement.addNode(boost::shared_ptr<XMLNode>(new XMLRawTextNode(serializedPayloads))); - } - - return stanzaElement.serialize(); -} - -} diff --git a/Swiften/Serializer/StanzaSerializer.h b/Swiften/Serializer/StanzaSerializer.h deleted file mode 100644 index 0f7abaf..0000000 --- a/Swiften/Serializer/StanzaSerializer.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef SWIFTEN_STANZASERIALIZER_H -#define SWIFTEN_STANZASERIALIZER_H - -#include "Swiften/Elements/Stanza.h" -#include "Swiften/Serializer/ElementSerializer.h" -#include "Swiften/Base/String.h" - -namespace Swift { - class PayloadSerializerCollection; - class XMLElement; - - class StanzaSerializer : public ElementSerializer { - public: - StanzaSerializer(const String& tag, PayloadSerializerCollection* payloadSerializers); - - virtual String serialize(boost::shared_ptr<Element>) const; - virtual void setStanzaSpecificAttributes(boost::shared_ptr<Element>, XMLElement&) const = 0; - - private: - String tag_; - PayloadSerializerCollection* payloadSerializers_; - }; -} - -#endif diff --git a/Swiften/Serializer/StartTLSFailureSerializer.h b/Swiften/Serializer/StartTLSFailureSerializer.h deleted file mode 100644 index 472fea0..0000000 --- a/Swiften/Serializer/StartTLSFailureSerializer.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef SWIFTEN_StartTLSFailureSerializer_H -#define SWIFTEN_StartTLSFailureSerializer_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/StartTLSFailure.h" -#include "Swiften/Serializer/GenericElementSerializer.h" -#include "Swiften/Serializer/XML/XMLElement.h" - -namespace Swift { - class StartTLSFailureSerializer : public GenericElementSerializer<StartTLSFailure> { - public: - StartTLSFailureSerializer() : GenericElementSerializer<StartTLSFailure>() { - } - - virtual String serialize(boost::shared_ptr<Element>) const { - return XMLElement("failure", "urn:ietf:params:xml:ns:xmpp-tls").serialize(); - } - }; -} - -#endif diff --git a/Swiften/Serializer/StartTLSRequestSerializer.h b/Swiften/Serializer/StartTLSRequestSerializer.h deleted file mode 100644 index fa85fe2..0000000 --- a/Swiften/Serializer/StartTLSRequestSerializer.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef SWIFTEN_StartTLSRequestSerializer_H -#define SWIFTEN_StartTLSRequestSerializer_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/StartTLSRequest.h" -#include "Swiften/Serializer/GenericElementSerializer.h" -#include "Swiften/Serializer/XML/XMLElement.h" - -namespace Swift { - class StartTLSRequestSerializer : public GenericElementSerializer<StartTLSRequest> { - public: - StartTLSRequestSerializer() : GenericElementSerializer<StartTLSRequest>() { - } - - virtual String serialize(boost::shared_ptr<Element>) const { - return XMLElement("starttls", "urn:ietf:params:xml:ns:xmpp-tls").serialize(); - } - }; -} - -#endif diff --git a/Swiften/Serializer/StreamFeaturesSerializer.cpp b/Swiften/Serializer/StreamFeaturesSerializer.cpp deleted file mode 100644 index 49e62c4..0000000 --- a/Swiften/Serializer/StreamFeaturesSerializer.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include "Swiften/Serializer/StreamFeaturesSerializer.h" - -#include "Swiften/Serializer/XML/XMLElement.h" -#include "Swiften/Serializer/XML/XMLTextNode.h" -#include "Swiften/Base/foreach.h" - -namespace Swift { - -StreamFeaturesSerializer::StreamFeaturesSerializer() { -} - -String StreamFeaturesSerializer::serialize(boost::shared_ptr<Element> element) const { - boost::shared_ptr<StreamFeatures> streamFeatures(boost::dynamic_pointer_cast<StreamFeatures>(element)); - - XMLElement streamFeaturesElement("stream:features"); - if (streamFeatures->hasStartTLS()) { - streamFeaturesElement.addNode(boost::shared_ptr<XMLElement>(new XMLElement("starttls", "urn:ietf:params:xml:ns:xmpp-tls"))); - } - if (!streamFeatures->getCompressionMethods().empty()) { - boost::shared_ptr<XMLElement> compressionElement(new XMLElement("compression", "http://jabber.org/features/compress")); - foreach(const String& method, streamFeatures->getCompressionMethods()) { - boost::shared_ptr<XMLElement> methodElement(new XMLElement("method")); - methodElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(method))); - compressionElement->addNode(methodElement); - } - streamFeaturesElement.addNode(compressionElement); - } - if (!streamFeatures->getAuthenticationMechanisms().empty()) { - boost::shared_ptr<XMLElement> mechanismsElement(new XMLElement("mechanisms", "urn:ietf:params:xml:ns:xmpp-sasl")); - foreach(const String& mechanism, streamFeatures->getAuthenticationMechanisms()) { - boost::shared_ptr<XMLElement> mechanismElement(new XMLElement("mechanism")); - mechanismElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(mechanism))); - mechanismsElement->addNode(mechanismElement); - } - streamFeaturesElement.addNode(mechanismsElement); - } - if (streamFeatures->hasResourceBind()) { - streamFeaturesElement.addNode(boost::shared_ptr<XMLElement>(new XMLElement("bind", "urn:ietf:params:xml:ns:xmpp-bind"))); - } - if (streamFeatures->hasSession()) { - streamFeaturesElement.addNode(boost::shared_ptr<XMLElement>(new XMLElement("session", "urn:ietf:params:xml:ns:xmpp-session"))); - } - return streamFeaturesElement.serialize(); -} - -} diff --git a/Swiften/Serializer/StreamFeaturesSerializer.h b/Swiften/Serializer/StreamFeaturesSerializer.h deleted file mode 100644 index f2da1bf..0000000 --- a/Swiften/Serializer/StreamFeaturesSerializer.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef SWIFTEN_StreamFeaturesSerializer_H -#define SWIFTEN_StreamFeaturesSerializer_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/StreamFeatures.h" -#include "Swiften/Serializer/GenericElementSerializer.h" - -namespace Swift { - class StreamFeaturesSerializer : public GenericElementSerializer<StreamFeatures> { - public: - StreamFeaturesSerializer(); - - virtual String serialize(boost::shared_ptr<Element> element) const; - }; -} - -#endif diff --git a/Swiften/Serializer/TLSProceedSerializer.h b/Swiften/Serializer/TLSProceedSerializer.h deleted file mode 100644 index d3829ac..0000000 --- a/Swiften/Serializer/TLSProceedSerializer.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef SWIFTEN_TLSProceedSerializer_H -#define SWIFTEN_TLSProceedSerializer_H - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/TLSProceed.h" -#include "Swiften/Serializer/GenericElementSerializer.h" -#include "Swiften/Serializer/XML/XMLElement.h" - -namespace Swift { - class TLSProceedSerializer : public GenericElementSerializer<TLSProceed> { - public: - TLSProceedSerializer() : GenericElementSerializer<TLSProceed>() { - } - - virtual String serialize(boost::shared_ptr<Element>) const { - return XMLElement("proceed", "urn:ietf:params:xml:ns:xmpp-tls").serialize(); - } - }; -} - -#endif diff --git a/Swiften/Serializer/UnitTest/StreamFeaturesSerializerTest.cpp b/Swiften/Serializer/UnitTest/StreamFeaturesSerializerTest.cpp deleted file mode 100644 index 187fe64..0000000 --- a/Swiften/Serializer/UnitTest/StreamFeaturesSerializerTest.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/StreamFeaturesSerializer.h" -#include "Swiften/Elements/StreamFeatures.h" - -using namespace Swift; - -class StreamFeaturesSerializerTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(StreamFeaturesSerializerTest); - CPPUNIT_TEST(testSerialize); - CPPUNIT_TEST_SUITE_END(); - - public: - StreamFeaturesSerializerTest() {} - - void testSerialize() { - StreamFeaturesSerializer testling; - boost::shared_ptr<StreamFeatures> streamFeatures(new StreamFeatures()); - streamFeatures->setHasStartTLS(); - streamFeatures->addCompressionMethod("zlib"); - streamFeatures->addCompressionMethod("lzw"); - streamFeatures->addAuthenticationMechanism("DIGEST-MD5"); - streamFeatures->addAuthenticationMechanism("PLAIN"); - streamFeatures->setHasResourceBind(); - streamFeatures->setHasSession(); - - CPPUNIT_ASSERT_EQUAL(String( - "<stream:features>" - "<starttls xmlns=\"urn:ietf:params:xml:ns:xmpp-tls\"/>" - "<compression xmlns=\"http://jabber.org/features/compress\">" - "<method>zlib</method>" - "<method>lzw</method>" - "</compression>" - "<mechanisms xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" - "<mechanism>DIGEST-MD5</mechanism>" - "<mechanism>PLAIN</mechanism>" - "</mechanisms>" - "<bind xmlns=\"urn:ietf:params:xml:ns:xmpp-bind\"/>" - "<session xmlns=\"urn:ietf:params:xml:ns:xmpp-session\"/>" - "</stream:features>"), testling.serialize(streamFeatures)); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(StreamFeaturesSerializerTest); diff --git a/Swiften/Serializer/XML/UnitTest/XMLElementTest.cpp b/Swiften/Serializer/XML/UnitTest/XMLElementTest.cpp deleted file mode 100644 index 49eb109..0000000 --- a/Swiften/Serializer/XML/UnitTest/XMLElementTest.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Serializer/XML/XMLElement.h" -#include "Swiften/Serializer/XML/XMLTextNode.h" - -using namespace Swift; - -class XMLElementTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(XMLElementTest); - CPPUNIT_TEST(testSerialize); - CPPUNIT_TEST(testSerialize_NoChildren); - CPPUNIT_TEST(testSerialize_SpecialAttributeCharacters); - CPPUNIT_TEST(testSerialize_EmptyAttributeValue); - CPPUNIT_TEST_SUITE_END(); - - public: - XMLElementTest() {} - - void testSerialize() { - XMLElement testling("foo", "http://example.com"); - testling.setAttribute("myatt", "myval"); - boost::shared_ptr<XMLElement> barElement(new XMLElement("bar")); - barElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode("Blo"))); - testling.addNode(barElement); - boost::shared_ptr<XMLElement> bazElement(new XMLElement("baz")); - bazElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode("Bli"))); - testling.addNode(bazElement); - - String result = testling.serialize(); - String expectedResult = - "<foo myatt=\"myval\" xmlns=\"http://example.com\">" - "<bar>Blo</bar>" - "<baz>Bli</baz>" - "</foo>"; - - CPPUNIT_ASSERT_EQUAL(expectedResult, result); - } - - void testSerialize_NoChildren() { - XMLElement testling("foo", "http://example.com"); - - CPPUNIT_ASSERT_EQUAL(String("<foo xmlns=\"http://example.com\"/>"), testling.serialize()); - } - - void testSerialize_SpecialAttributeCharacters() { - XMLElement testling("foo"); - testling.setAttribute("myatt", "<\"'&>"); - - CPPUNIT_ASSERT_EQUAL(String("<foo myatt=\"<"'&>\"/>"), testling.serialize()); - } - - void testSerialize_EmptyAttributeValue() { - XMLElement testling("foo"); - testling.setAttribute("myatt", ""); - - CPPUNIT_ASSERT_EQUAL(String("<foo myatt=\"\"/>"), testling.serialize()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(XMLElementTest); diff --git a/Swiften/Serializer/XML/XMLElement.cpp b/Swiften/Serializer/XML/XMLElement.cpp deleted file mode 100644 index 71f4d0c..0000000 --- a/Swiften/Serializer/XML/XMLElement.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include "Swiften/Serializer/XML/XMLElement.h" - -#include "Swiften/Base/foreach.h" - -namespace Swift { - -XMLElement::XMLElement(const String& tag, const String& xmlns) : - tag_(tag) { - if (!xmlns.isEmpty()) { - setAttribute("xmlns", xmlns); - } -} - -String XMLElement::serialize() { - String result; - result += "<" + tag_; - typedef std::pair<String,String> Pair; - foreach(const Pair& p, attributes_) { - result += " " + p.first + "=\"" + p.second + "\""; - } - - if (childNodes_.size() > 0) { - result += ">"; - foreach (boost::shared_ptr<XMLNode> node, childNodes_) { - result += node->serialize(); - } - result += "</" + tag_ + ">"; - } - else { - result += "/>"; - } - return result; -} - -void XMLElement::setAttribute(const String& attribute, const String& value) { - String escapedValue(value); - escapedValue.replaceAll('&', "&"); - escapedValue.replaceAll('<', "<"); - escapedValue.replaceAll('>', ">"); - escapedValue.replaceAll('\'', "'"); - escapedValue.replaceAll('"', """); - attributes_[attribute] = escapedValue; -} - -void XMLElement::addNode(boost::shared_ptr<XMLNode> node) { - childNodes_.push_back(node); -} - -} diff --git a/Swiften/Serializer/XML/XMLElement.h b/Swiften/Serializer/XML/XMLElement.h deleted file mode 100644 index f2eb8bf..0000000 --- a/Swiften/Serializer/XML/XMLElement.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef SWIFTEN_XMLElement_H -#define SWIFTEN_XMLElement_H - -#include <boost/shared_ptr.hpp> -#include <vector> -#include <map> - -#include "Swiften/Base/String.h" -#include "Swiften/Serializer/XML/XMLNode.h" - -namespace Swift { - class XMLElement : public XMLNode { - public: - XMLElement(const String& tag, const String& xmlns = ""); - - void setAttribute(const String& attribute, const String& value); - void addNode(boost::shared_ptr<XMLNode> node); - - virtual String serialize(); - - private: - String tag_; - std::map<String, String> attributes_; - std::vector< boost::shared_ptr<XMLNode> > childNodes_; - }; -} -#endif diff --git a/Swiften/Serializer/XML/XMLNode.cpp b/Swiften/Serializer/XML/XMLNode.cpp deleted file mode 100644 index 1bef64a..0000000 --- a/Swiften/Serializer/XML/XMLNode.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Serializer/XML/XMLNode.h" - -namespace Swift { - -XMLNode::~XMLNode() { -} - -} diff --git a/Swiften/Serializer/XML/XMLNode.h b/Swiften/Serializer/XML/XMLNode.h deleted file mode 100644 index b31c0d6..0000000 --- a/Swiften/Serializer/XML/XMLNode.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef SWIFTEN_XMLNode_H -#define SWIFTEN_XMLNode_H - -#include "Swiften/Base/String.h" - -namespace Swift { - class XMLNode { - public: - virtual ~XMLNode(); - - virtual String serialize() = 0; - }; -} - -#endif diff --git a/Swiften/Serializer/XML/XMLRawTextNode.h b/Swiften/Serializer/XML/XMLRawTextNode.h deleted file mode 100644 index e5800c3..0000000 --- a/Swiften/Serializer/XML/XMLRawTextNode.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef SWIFTEN_XMLRawTextNode_H -#define SWIFTEN_XMLRawTextNode_H - -#include "Swiften/Serializer/XML/XMLNode.h" - -namespace Swift { - class XMLRawTextNode : public XMLNode { - public: - XMLRawTextNode(const String& text) : text_(text) { - } - - String serialize() { - return text_; - } - - private: - String text_; - }; -} - -#endif diff --git a/Swiften/Serializer/XML/XMLTextNode.h b/Swiften/Serializer/XML/XMLTextNode.h deleted file mode 100644 index 87dda53..0000000 --- a/Swiften/Serializer/XML/XMLTextNode.h +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include "Swiften/Serializer/XML/XMLNode.h" - -namespace Swift { - class XMLTextNode : public XMLNode { - public: - XMLTextNode(const String& text) : text_(text) { - text_.replaceAll('&', "&"); // Should come first - text_.replaceAll('<', "<"); - text_.replaceAll('>', ">"); - } - - String serialize() { - return text_; - } - - private: - String text_; - }; -} diff --git a/Swiften/Serializer/XMPPSerializer.cpp b/Swiften/Serializer/XMPPSerializer.cpp deleted file mode 100644 index 082cdf3..0000000 --- a/Swiften/Serializer/XMPPSerializer.cpp +++ /dev/null @@ -1,77 +0,0 @@ -#include "Swiften/Serializer/XMPPSerializer.h" - -#include <boost/bind.hpp> -#include <iostream> - -#include "Swiften/Elements/ProtocolHeader.h" -#include "Swiften/Base/foreach.h" -#include "Swiften/Serializer/CompressRequestSerializer.h" -#include "Swiften/Serializer/CompressFailureSerializer.h" -#include "Swiften/Serializer/StreamFeaturesSerializer.h" -#include "Swiften/Serializer/AuthRequestSerializer.h" -#include "Swiften/Serializer/AuthFailureSerializer.h" -#include "Swiften/Serializer/AuthSuccessSerializer.h" -#include "Swiften/Serializer/AuthChallengeSerializer.h" -#include "Swiften/Serializer/AuthResponseSerializer.h" -#include "Swiften/Serializer/StartTLSRequestSerializer.h" -#include "Swiften/Serializer/StartTLSFailureSerializer.h" -#include "Swiften/Serializer/TLSProceedSerializer.h" -#include "Swiften/Serializer/MessageSerializer.h" -#include "Swiften/Serializer/PresenceSerializer.h" -#include "Swiften/Serializer/IQSerializer.h" - -namespace Swift { - -XMPPSerializer::XMPPSerializer(PayloadSerializerCollection* payloadSerializers) { - serializers_.push_back(boost::shared_ptr<ElementSerializer>(new PresenceSerializer(payloadSerializers))); - serializers_.push_back(boost::shared_ptr<ElementSerializer>(new IQSerializer(payloadSerializers))); - serializers_.push_back(boost::shared_ptr<ElementSerializer>(new MessageSerializer(payloadSerializers))); - serializers_.push_back(boost::shared_ptr<ElementSerializer>(new CompressRequestSerializer())); - serializers_.push_back(boost::shared_ptr<ElementSerializer>(new CompressFailureSerializer())); - serializers_.push_back(boost::shared_ptr<ElementSerializer>(new AuthRequestSerializer())); - serializers_.push_back(boost::shared_ptr<ElementSerializer>(new AuthFailureSerializer())); - serializers_.push_back(boost::shared_ptr<ElementSerializer>(new AuthSuccessSerializer())); - serializers_.push_back(boost::shared_ptr<ElementSerializer>(new AuthChallengeSerializer())); - serializers_.push_back(boost::shared_ptr<ElementSerializer>(new AuthResponseSerializer())); - serializers_.push_back(boost::shared_ptr<ElementSerializer>(new StartTLSRequestSerializer())); - serializers_.push_back(boost::shared_ptr<ElementSerializer>(new StartTLSFailureSerializer())); - serializers_.push_back(boost::shared_ptr<ElementSerializer>(new TLSProceedSerializer())); - serializers_.push_back(boost::shared_ptr<ElementSerializer>(new StreamFeaturesSerializer())); -} - -String XMPPSerializer::serializeHeader(const ProtocolHeader& header) const { - String result = "<?xml version=\"1.0\"?><stream:stream xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\""; - if (!header.getFrom().isEmpty()) { - result += " from=\"" + header.getFrom() + "\""; - } - if (!header.getTo().isEmpty()) { - result += " to=\"" + header.getTo() + "\""; - } - if (!header.getID().isEmpty()) { - result += " id=\"" + header.getID() + "\""; - } - if (!header.getVersion().isEmpty()) { - result += " version=\"" + header.getVersion() + "\""; - } - result += ">"; - return result; -} - -String XMPPSerializer::serializeElement(boost::shared_ptr<Element> element) const { - std::vector< boost::shared_ptr<ElementSerializer> >::const_iterator i = std::find_if( - serializers_.begin(), serializers_.end(), - boost::bind(&ElementSerializer::canSerialize, _1, element)); - if (i != serializers_.end()) { - return (*i)->serialize(element); - } - else { - std::cerr << "Could not find serializer for " << typeid(*(element.get())).name() << std::endl; - return ""; - } -} - -String XMPPSerializer::serializeFooter() const { - return "</stream:stream>"; -} - -} diff --git a/Swiften/Serializer/XMPPSerializer.h b/Swiften/Serializer/XMPPSerializer.h deleted file mode 100644 index 38ba3ff..0000000 --- a/Swiften/Serializer/XMPPSerializer.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <vector> - -#include "Swiften/Elements/Element.h" -#include "Swiften/Base/String.h" -#include "Swiften/Serializer/ElementSerializer.h" - -namespace Swift { - class PayloadSerializerCollection; - class CompressRequestSerializer; - class ProtocolHeader; - - class XMPPSerializer { - public: - XMPPSerializer(PayloadSerializerCollection*); - - String serializeHeader(const ProtocolHeader&) const; - String serializeElement(boost::shared_ptr<Element> stanza) const; - String serializeFooter() const; - - private: - std::vector< boost::shared_ptr<ElementSerializer> > serializers_; - }; -} diff --git a/Swiften/Server/ServerFromClientSession.cpp b/Swiften/Server/ServerFromClientSession.cpp deleted file mode 100644 index c974e18..0000000 --- a/Swiften/Server/ServerFromClientSession.cpp +++ /dev/null @@ -1,97 +0,0 @@ -#include "Swiften/Server/ServerFromClientSession.h" - -#include <boost/bind.hpp> - -#include "Swiften/Elements/ProtocolHeader.h" -#include "Swiften/Server/UserRegistry.h" -#include "Swiften/Network/Connection.h" -#include "Swiften/StreamStack/XMPPLayer.h" -#include "Swiften/Elements/StreamFeatures.h" -#include "Swiften/Elements/ResourceBind.h" -#include "Swiften/Elements/StartSession.h" -#include "Swiften/Elements/IQ.h" -#include "Swiften/Elements/AuthSuccess.h" -#include "Swiften/Elements/AuthFailure.h" -#include "Swiften/Elements/AuthRequest.h" -#include "Swiften/SASL/PLAINMessage.h" - -namespace Swift { - -ServerFromClientSession::ServerFromClientSession( - const String& id, - boost::shared_ptr<Connection> connection, - PayloadParserFactoryCollection* payloadParserFactories, - PayloadSerializerCollection* payloadSerializers, - UserRegistry* userRegistry) : - Session(connection, payloadParserFactories, payloadSerializers), - id_(id), - userRegistry_(userRegistry), - authenticated_(false), - initialized(false) { -} - - -void ServerFromClientSession::handleElement(boost::shared_ptr<Element> element) { - if (isInitialized()) { - onElementReceived(element); - } - else { - if (AuthRequest* authRequest = dynamic_cast<AuthRequest*>(element.get())) { - if (authRequest->getMechanism() != "PLAIN") { - getXMPPLayer()->writeElement(boost::shared_ptr<AuthFailure>(new AuthFailure)); - finishSession(NoSupportedAuthMechanismsError); - } - else { - PLAINMessage plainMessage(authRequest->getMessage()); - if (userRegistry_->isValidUserPassword(JID(plainMessage.getAuthenticationID(), getLocalJID().getDomain()), plainMessage.getPassword())) { - getXMPPLayer()->writeElement(boost::shared_ptr<AuthSuccess>(new AuthSuccess())); - user_ = plainMessage.getAuthenticationID(); - authenticated_ = true; - getXMPPLayer()->resetParser(); - } - else { - getXMPPLayer()->writeElement(boost::shared_ptr<AuthFailure>(new AuthFailure)); - finishSession(AuthenticationFailedError); - } - } - } - else if (IQ* iq = dynamic_cast<IQ*>(element.get())) { - if (boost::shared_ptr<ResourceBind> resourceBind = iq->getPayload<ResourceBind>()) { - setRemoteJID(JID(user_, getLocalJID().getDomain(), resourceBind->getResource())); - boost::shared_ptr<ResourceBind> resultResourceBind(new ResourceBind()); - resultResourceBind->setJID(getRemoteJID()); - getXMPPLayer()->writeElement(IQ::createResult(JID(), iq->getID(), resultResourceBind)); - } - else if (iq->getPayload<StartSession>()) { - getXMPPLayer()->writeElement(IQ::createResult(getRemoteJID(), iq->getID())); - setInitialized(); - } - } - } -} - -void ServerFromClientSession::handleStreamStart(const ProtocolHeader& incomingHeader) { - setLocalJID(JID("", incomingHeader.getTo())); - ProtocolHeader header; - header.setFrom(incomingHeader.getTo()); - header.setID(id_); - getXMPPLayer()->writeHeader(header); - - boost::shared_ptr<StreamFeatures> features(new StreamFeatures()); - if (!authenticated_) { - features->addAuthenticationMechanism("PLAIN"); - } - else { - features->setHasResourceBind(); - features->setHasSession(); - } - getXMPPLayer()->writeElement(features); -} - -void ServerFromClientSession::setInitialized() { - initialized = true; - onSessionStarted(); -} - - -} diff --git a/Swiften/Server/ServerFromClientSession.h b/Swiften/Server/ServerFromClientSession.h deleted file mode 100644 index 33826a4..0000000 --- a/Swiften/Server/ServerFromClientSession.h +++ /dev/null @@ -1,52 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/signal.hpp> -#include <boost/enable_shared_from_this.hpp> - -#include "Swiften/Base/String.h" -#include "Swiften/Session/Session.h" -#include "Swiften/JID/JID.h" -#include "Swiften/Network/Connection.h" - -namespace Swift { - class ProtocolHeader; - class Element; - class Stanza; - class PayloadParserFactoryCollection; - class PayloadSerializerCollection; - class StreamStack; - class UserRegistry; - class XMPPLayer; - class ConnectionLayer; - class Connection; - class ByteArray; - - class ServerFromClientSession : public Session { - public: - ServerFromClientSession( - const String& id, - boost::shared_ptr<Connection> connection, - PayloadParserFactoryCollection* payloadParserFactories, - PayloadSerializerCollection* payloadSerializers, - UserRegistry* userRegistry); - - boost::signal<void ()> onSessionStarted; - - private: - void handleElement(boost::shared_ptr<Element>); - void handleStreamStart(const ProtocolHeader& header); - - void setInitialized(); - bool isInitialized() const { - return initialized; - } - - private: - String id_; - UserRegistry* userRegistry_; - bool authenticated_; - bool initialized; - String user_; - }; -} diff --git a/Swiften/Server/ServerSession.cpp b/Swiften/Server/ServerSession.cpp deleted file mode 100644 index e62957c..0000000 --- a/Swiften/Server/ServerSession.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Server/ServerSession.h" - -namespace Swift { - -ServerSession::~ServerSession() { -} - -} diff --git a/Swiften/Server/ServerSession.h b/Swiften/Server/ServerSession.h deleted file mode 100644 index 1ebf68e..0000000 --- a/Swiften/Server/ServerSession.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/Stanza.h" - -namespace Swift { - class ServerSession { - public: - virtual ~ServerSession(); - - virtual const JID& getJID() const = 0; - virtual int getPriority() const = 0; - - virtual void sendStanza(boost::shared_ptr<Stanza>) = 0; - }; -} diff --git a/Swiften/Server/ServerStanzaRouter.cpp b/Swiften/Server/ServerStanzaRouter.cpp deleted file mode 100644 index 5661de5..0000000 --- a/Swiften/Server/ServerStanzaRouter.cpp +++ /dev/null @@ -1,67 +0,0 @@ -#include "Swiften/Server/ServerStanzaRouter.h" -#include "Swiften/Server/ServerSession.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) { - clientSessions_.erase(std::remove(clientSessions_.begin(), clientSessions_.end(), clientSession), clientSessions_.end()); -} - -} diff --git a/Swiften/Server/ServerStanzaRouter.h b/Swiften/Server/ServerStanzaRouter.h deleted file mode 100644 index 057a2ea..0000000 --- a/Swiften/Server/ServerStanzaRouter.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <map> - -#include "Swiften/JID/JID.h" -#include "Swiften/Elements/Stanza.h" - -namespace Swift { - class ServerSession; - - class ServerStanzaRouter { - public: - ServerStanzaRouter(); - - bool routeStanza(boost::shared_ptr<Stanza>); - - void addClientSession(ServerSession*); - void removeClientSession(ServerSession*); - - private: - std::vector<ServerSession*> clientSessions_; - }; -} diff --git a/Swiften/Server/SimpleUserRegistry.cpp b/Swiften/Server/SimpleUserRegistry.cpp deleted file mode 100644 index 1a6743a..0000000 --- a/Swiften/Server/SimpleUserRegistry.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "Swiften/Server/SimpleUserRegistry.h" - -namespace Swift { - -SimpleUserRegistry::SimpleUserRegistry() { -} - -bool SimpleUserRegistry::isValidUserPassword(const JID& user, const String& password) const { - std::map<JID,String>::const_iterator i = users.find(user); - return i != users.end() ? i->second == password : false; -} - -void SimpleUserRegistry::addUser(const JID& user, const String& password) { - users.insert(std::make_pair(user, password)); -} - -} diff --git a/Swiften/Server/SimpleUserRegistry.h b/Swiften/Server/SimpleUserRegistry.h deleted file mode 100644 index 253025d..0000000 --- a/Swiften/Server/SimpleUserRegistry.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include <map> - -#include "Swiften/JID/JID.h" -#include "Swiften/Base/String.h" -#include "Swiften/Server/UserRegistry.h" - -namespace Swift { - class String; - - class SimpleUserRegistry : public UserRegistry { - public: - SimpleUserRegistry(); - - virtual bool isValidUserPassword(const JID& user, const String& password) const; - void addUser(const JID& user, const String& password); - - private: - std::map<JID, String> users; - }; -} diff --git a/Swiften/Server/UnitTest/ServerStanzaRouterTest.cpp b/Swiften/Server/UnitTest/ServerStanzaRouterTest.cpp deleted file mode 100644 index 03a607a..0000000 --- a/Swiften/Server/UnitTest/ServerStanzaRouterTest.cpp +++ /dev/null @@ -1,144 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Elements/Message.h" -#include "Swiften/Server/ServerStanzaRouter.h" -#include "Swiften/Server/ServerSession.h" - -using namespace Swift; - -class ServerStanzaRouterTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(ServerStanzaRouterTest); - CPPUNIT_TEST(testRouteStanza_FullJID); - CPPUNIT_TEST(testRouteStanza_FullJIDWithNegativePriority); - CPPUNIT_TEST(testRouteStanza_FullJIDWithOnlyBareJIDMatchingSession); - CPPUNIT_TEST(testRouteStanza_BareJIDWithoutMatchingSession); - CPPUNIT_TEST(testRouteStanza_BareJIDWithMultipleSessions); - CPPUNIT_TEST(testRouteStanza_BareJIDWithOnlyNegativePriorities); - CPPUNIT_TEST(testRouteStanza_BareJIDWithChangingPresence); - CPPUNIT_TEST_SUITE_END(); - - public: - ServerStanzaRouterTest() {} - - void setUp() { - } - - void tearDown() { - } - - void testRouteStanza_FullJID() { - ServerStanzaRouter testling; - MockServerSession session1(JID("foo@bar.com/Bla"), 0); - testling.addClientSession(&session1); - MockServerSession session2(JID("foo@bar.com/Baz"), 0); - testling.addClientSession(&session2); - - bool result = testling.routeStanza(createMessageTo("foo@bar.com/Baz")); - - CPPUNIT_ASSERT(result); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(session1.sentStanzas.size())); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(session2.sentStanzas.size())); - } - - void testRouteStanza_FullJIDWithNegativePriority() { - ServerStanzaRouter testling; - MockServerSession session1(JID("foo@bar.com/Bla"), -1); - testling.addClientSession(&session1); - MockServerSession session2(JID("foo@bar.com/Baz"), 0); - testling.addClientSession(&session2); - - bool result = testling.routeStanza(createMessageTo("foo@bar.com/Bla")); - - CPPUNIT_ASSERT(result); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(session1.sentStanzas.size())); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(session2.sentStanzas.size())); - } - - void testRouteStanza_FullJIDWithOnlyBareJIDMatchingSession() { - ServerStanzaRouter testling; - MockServerSession session(JID("foo@bar.com/Bla"), 0); - testling.addClientSession(&session); - - bool result = testling.routeStanza(createMessageTo("foo@bar.com/Baz")); - - CPPUNIT_ASSERT(result); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(session.sentStanzas.size())); - } - - void testRouteStanza_BareJIDWithoutMatchingSession() { - ServerStanzaRouter testling; - - bool result = testling.routeStanza(createMessageTo("foo@bar.com")); - - CPPUNIT_ASSERT(!result); - } - - void testRouteStanza_BareJIDWithMultipleSessions() { - ServerStanzaRouter testling; - MockServerSession session1(JID("foo@bar.com/Bla"), 1); - testling.addClientSession(&session1); - MockServerSession session2(JID("foo@bar.com/Baz"), 8); - testling.addClientSession(&session2); - MockServerSession session3(JID("foo@bar.com/Bar"), 5); - testling.addClientSession(&session3); - - bool result = testling.routeStanza(createMessageTo("foo@bar.com")); - - CPPUNIT_ASSERT(result); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(session1.sentStanzas.size())); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(session2.sentStanzas.size())); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(session3.sentStanzas.size())); - } - - void testRouteStanza_BareJIDWithOnlyNegativePriorities() { - ServerStanzaRouter testling; - MockServerSession session(JID("foo@bar.com/Bla"), -1); - testling.addClientSession(&session); - - bool result = testling.routeStanza(createMessageTo("foo@bar.com")); - - CPPUNIT_ASSERT(!result); - } - - void testRouteStanza_BareJIDWithChangingPresence() { - ServerStanzaRouter testling; - MockServerSession session1(JID("foo@bar.com/Baz"), 8); - testling.addClientSession(&session1); - MockServerSession session2(JID("foo@bar.com/Bar"), 5); - testling.addClientSession(&session2); - - session1.priority = 3; - session2.priority = 4; - bool result = testling.routeStanza(createMessageTo("foo@bar.com")); - - CPPUNIT_ASSERT(result); - CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(session1.sentStanzas.size())); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(session2.sentStanzas.size())); - } - - private: - boost::shared_ptr<Message> createMessageTo(const String& recipient) { - boost::shared_ptr<Message> message(new Message()); - message->setTo(JID(recipient)); - return message; - } - - class MockServerSession : public ServerSession { - public: - MockServerSession(const JID& jid, int priority) : jid(jid), priority(priority) {} - - virtual const JID& getJID() const { return jid; } - virtual int getPriority() const { return priority; } - - virtual void sendStanza(boost::shared_ptr<Stanza> stanza) { - sentStanzas.push_back(stanza); - } - - JID jid; - int priority; - std::vector< boost::shared_ptr<Stanza> > sentStanzas; - }; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(ServerStanzaRouterTest); diff --git a/Swiften/Server/UserRegistry.cpp b/Swiften/Server/UserRegistry.cpp deleted file mode 100644 index d1a509f..0000000 --- a/Swiften/Server/UserRegistry.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Server/UserRegistry.h" - -namespace Swift { - -UserRegistry::~UserRegistry() { -} - -} diff --git a/Swiften/Server/UserRegistry.h b/Swiften/Server/UserRegistry.h deleted file mode 100644 index 5ced019..0000000 --- a/Swiften/Server/UserRegistry.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -namespace Swift { - class String; - class JID; - - class UserRegistry { - public: - virtual ~UserRegistry(); - - virtual bool isValidUserPassword(const JID& user, const String& password) const = 0; - }; -} diff --git a/Swiften/Session/BasicSessionStream.cpp b/Swiften/Session/BasicSessionStream.cpp deleted file mode 100644 index ed7f1eb..0000000 --- a/Swiften/Session/BasicSessionStream.cpp +++ /dev/null @@ -1,140 +0,0 @@ -#include "Swiften/Session/BasicSessionStream.h" - -#include <boost/bind.hpp> - -#include "Swiften/StreamStack/XMPPLayer.h" -#include "Swiften/StreamStack/StreamStack.h" -#include "Swiften/StreamStack/ConnectionLayer.h" -#include "Swiften/StreamStack/WhitespacePingLayer.h" -#include "Swiften/StreamStack/CompressionLayer.h" -#include "Swiften/StreamStack/TLSLayer.h" -#include "Swiften/StreamStack/TLSLayerFactory.h" - -namespace Swift { - -BasicSessionStream::BasicSessionStream(boost::shared_ptr<Connection> connection, PayloadParserFactoryCollection* payloadParserFactories, PayloadSerializerCollection* payloadSerializers, TLSLayerFactory* tlsLayerFactory, TimerFactory* timerFactory) : available(false), connection(connection), payloadParserFactories(payloadParserFactories), payloadSerializers(payloadSerializers), tlsLayerFactory(tlsLayerFactory), timerFactory(timerFactory) { -} - -void BasicSessionStream::initialize() { - xmppLayer = boost::shared_ptr<XMPPLayer>( - new XMPPLayer(payloadParserFactories, payloadSerializers)); - xmppLayer->onStreamStart.connect(boost::bind(&BasicSessionStream::handleStreamStartReceived, shared_from_this(), _1)); - xmppLayer->onElement.connect(boost::bind(&BasicSessionStream::handleElementReceived, shared_from_this(), _1)); - xmppLayer->onError.connect(boost::bind( - &BasicSessionStream::handleXMPPError, shared_from_this())); - xmppLayer->onDataRead.connect(boost::bind(&BasicSessionStream::handleDataRead, shared_from_this(), _1)); - xmppLayer->onWriteData.connect(boost::bind(&BasicSessionStream::handleDataWritten, shared_from_this(), _1)); - - connection->onDisconnected.connect(boost::bind(&BasicSessionStream::handleConnectionError, shared_from_this(), _1)); - connectionLayer = boost::shared_ptr<ConnectionLayer>( - new ConnectionLayer(connection)); - - streamStack = new StreamStack(xmppLayer, connectionLayer); - - available = true; -} - -BasicSessionStream::~BasicSessionStream() { - delete streamStack; -} - -void BasicSessionStream::writeHeader(const ProtocolHeader& header) { - assert(available); - xmppLayer->writeHeader(header); -} - -void BasicSessionStream::writeElement(boost::shared_ptr<Element> element) { - assert(available); - xmppLayer->writeElement(element); -} - -void BasicSessionStream::writeFooter() { - assert(available); - xmppLayer->writeFooter(); -} - -bool BasicSessionStream::isAvailable() { - return available; -} - -bool BasicSessionStream::supportsTLSEncryption() { - return tlsLayerFactory && tlsLayerFactory->canCreate(); -} - -void BasicSessionStream::addTLSEncryption() { - assert(available); - tlsLayer = tlsLayerFactory->createTLSLayer(); - if (hasTLSCertificate() && !tlsLayer->setClientCertificate(getTLSCertificate())) { - onError(boost::shared_ptr<Error>(new Error(Error::InvalidTLSCertificateError))); - } - else { - streamStack->addLayer(tlsLayer); - tlsLayer->onError.connect(boost::bind(&BasicSessionStream::handleTLSError, shared_from_this())); - tlsLayer->onConnected.connect(boost::bind(&BasicSessionStream::handleTLSConnected, shared_from_this())); - tlsLayer->connect(); - } -} - -void BasicSessionStream::addZLibCompression() { - boost::shared_ptr<CompressionLayer> compressionLayer(new CompressionLayer()); - streamStack->addLayer(compressionLayer); -} - -void BasicSessionStream::setWhitespacePingEnabled(bool enabled) { - if (enabled) { - if (!whitespacePingLayer) { - whitespacePingLayer = boost::shared_ptr<WhitespacePingLayer>(new WhitespacePingLayer(timerFactory)); - streamStack->addLayer(whitespacePingLayer); - } - whitespacePingLayer->setActive(); - } - else if (whitespacePingLayer) { - whitespacePingLayer->setInactive(); - } -} - -void BasicSessionStream::resetXMPPParser() { - xmppLayer->resetParser(); -} - -void BasicSessionStream::handleStreamStartReceived(const ProtocolHeader& header) { - onStreamStartReceived(header); -} - -void BasicSessionStream::handleElementReceived(boost::shared_ptr<Element> element) { - onElementReceived(element); -} - -void BasicSessionStream::handleXMPPError() { - available = false; - onError(boost::shared_ptr<Error>(new Error(Error::ParseError))); -} - -void BasicSessionStream::handleTLSConnected() { - onTLSEncrypted(); -} - -void BasicSessionStream::handleTLSError() { - available = false; - onError(boost::shared_ptr<Error>(new Error(Error::TLSError))); -} - -void BasicSessionStream::handleConnectionError(const boost::optional<Connection::Error>& error) { - available = false; - if (error == Connection::ReadError) { - onError(boost::shared_ptr<Error>(new Error(Error::ConnectionReadError))); - } - else { - onError(boost::shared_ptr<Error>(new Error(Error::ConnectionWriteError))); - } -} - -void BasicSessionStream::handleDataRead(const ByteArray& data) { - onDataRead(String(data.getData(), data.getSize())); -} - -void BasicSessionStream::handleDataWritten(const ByteArray& data) { - onDataWritten(String(data.getData(), data.getSize())); -} - -}; diff --git a/Swiften/Session/BasicSessionStream.h b/Swiften/Session/BasicSessionStream.h deleted file mode 100644 index 8618458..0000000 --- a/Swiften/Session/BasicSessionStream.h +++ /dev/null @@ -1,75 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/enable_shared_from_this.hpp> - -#include "Swiften/Network/Connection.h" -#include "Swiften/Session/SessionStream.h" - -namespace Swift { - class TLSLayerFactory; - class TLSLayer; - class TimerFactory; - class WhitespacePingLayer; - class PayloadParserFactoryCollection; - class PayloadSerializerCollection; - class StreamStack; - class XMPPLayer; - class ConnectionLayer; - class CompressionLayer; - - class BasicSessionStream : - public SessionStream, - public boost::enable_shared_from_this<BasicSessionStream> { - public: - BasicSessionStream( - boost::shared_ptr<Connection> connection, - PayloadParserFactoryCollection* payloadParserFactories, - PayloadSerializerCollection* payloadSerializers, - TLSLayerFactory* tlsLayerFactory, - TimerFactory* whitespacePingLayerFactory - ); - ~BasicSessionStream(); - - void initialize(); - - virtual bool isAvailable(); - - virtual void writeHeader(const ProtocolHeader& header); - virtual void writeElement(boost::shared_ptr<Element>); - virtual void writeFooter(); - - virtual void addZLibCompression(); - - virtual bool supportsTLSEncryption(); - virtual void addTLSEncryption(); - - virtual void setWhitespacePingEnabled(bool); - - virtual void resetXMPPParser(); - - private: - void handleConnectionError(const boost::optional<Connection::Error>& error); - void handleXMPPError(); - void handleTLSConnected(); - void handleTLSError(); - void handleStreamStartReceived(const ProtocolHeader&); - void handleElementReceived(boost::shared_ptr<Element>); - void handleDataRead(const ByteArray& data); - void handleDataWritten(const ByteArray& data); - - private: - bool available; - boost::shared_ptr<Connection> connection; - PayloadParserFactoryCollection* payloadParserFactories; - PayloadSerializerCollection* payloadSerializers; - TLSLayerFactory* tlsLayerFactory; - TimerFactory* timerFactory; - boost::shared_ptr<XMPPLayer> xmppLayer; - boost::shared_ptr<ConnectionLayer> connectionLayer; - StreamStack* streamStack; - boost::shared_ptr<CompressionLayer> compressionLayer; - boost::shared_ptr<TLSLayer> tlsLayer; - boost::shared_ptr<WhitespacePingLayer> whitespacePingLayer; - }; -} diff --git a/Swiften/Session/Session.cpp b/Swiften/Session/Session.cpp deleted file mode 100644 index 64456db..0000000 --- a/Swiften/Session/Session.cpp +++ /dev/null @@ -1,82 +0,0 @@ -#include "Swiften/Session/Session.h" - -#include <boost/bind.hpp> - -#include "Swiften/StreamStack/XMPPLayer.h" -#include "Swiften/StreamStack/StreamStack.h" - -namespace Swift { - -Session::Session( - boost::shared_ptr<Connection> connection, - PayloadParserFactoryCollection* payloadParserFactories, - PayloadSerializerCollection* payloadSerializers) : - connection(connection), - payloadParserFactories(payloadParserFactories), - payloadSerializers(payloadSerializers), - streamStack(0), - finishing(false) { -} - -Session::~Session() { - delete streamStack; -} - -void Session::startSession() { - initializeStreamStack(); - handleSessionStarted(); -} - -void Session::finishSession() { - finishing = true; - connection->disconnect(); - handleSessionFinished(boost::optional<SessionError>()); - finishing = false; - onSessionFinished(boost::optional<SessionError>()); -} - -void Session::finishSession(const SessionError& error) { - finishing = true; - connection->disconnect(); - handleSessionFinished(boost::optional<SessionError>(error)); - finishing = false; - onSessionFinished(boost::optional<SessionError>(error)); -} - -void Session::initializeStreamStack() { - xmppLayer = boost::shared_ptr<XMPPLayer>( - new XMPPLayer(payloadParserFactories, payloadSerializers)); - xmppLayer->onStreamStart.connect( - boost::bind(&Session::handleStreamStart, shared_from_this(), _1)); - xmppLayer->onElement.connect(boost::bind(&Session::handleElement, shared_from_this(), _1)); - xmppLayer->onError.connect( - boost::bind(&Session::finishSession, shared_from_this(), XMLError)); - xmppLayer->onDataRead.connect(boost::bind(boost::ref(onDataRead), _1)); - xmppLayer->onWriteData.connect(boost::bind(boost::ref(onDataWritten), _1)); - connection->onDisconnected.connect( - boost::bind(&Session::handleDisconnected, shared_from_this(), _1)); - connectionLayer = boost::shared_ptr<ConnectionLayer>(new ConnectionLayer(connection)); - streamStack = new StreamStack(xmppLayer, connectionLayer); -} - -void Session::sendElement(boost::shared_ptr<Element> stanza) { - xmppLayer->writeElement(stanza); -} - -void Session::handleDisconnected(const boost::optional<Connection::Error>& connectionError) { - if (connectionError) { - switch (*connectionError) { - case Connection::ReadError: - finishSession(ConnectionReadError); - break; - case Connection::WriteError: - finishSession(ConnectionWriteError); - break; - } - } - else { - finishSession(); - } -} - -} diff --git a/Swiften/Session/Session.h b/Swiften/Session/Session.h deleted file mode 100644 index d63254a..0000000 --- a/Swiften/Session/Session.h +++ /dev/null @@ -1,105 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/signal.hpp> -#include <boost/optional.hpp> -#include <boost/enable_shared_from_this.hpp> - -#include "Swiften/JID/JID.h" -#include "Swiften/Elements/Element.h" -#include "Swiften/Network/Connection.h" -#include "Swiften/StreamStack/ConnectionLayer.h" - -namespace Swift { - class ProtocolHeader; - class StreamStack; - class JID; - class Element; - class ByteArray; - class PayloadParserFactoryCollection; - class PayloadSerializerCollection; - class XMPPLayer; - - class Session : public boost::enable_shared_from_this<Session> { - public: - enum SessionError { - ConnectionReadError, - ConnectionWriteError, - XMLError, - AuthenticationFailedError, - NoSupportedAuthMechanismsError, - UnexpectedElementError, - ResourceBindError, - SessionStartError, - TLSError, - ClientCertificateLoadError, - ClientCertificateError - }; - - Session( - boost::shared_ptr<Connection> connection, - PayloadParserFactoryCollection* payloadParserFactories, - PayloadSerializerCollection* payloadSerializers); - virtual ~Session(); - - void startSession(); - void finishSession(); - - void sendElement(boost::shared_ptr<Element>); - - const JID& getLocalJID() const { - return localJID; - } - - const JID& getRemoteJID() const { - return remoteJID; - } - - boost::signal<void (boost::shared_ptr<Element>)> onElementReceived; - boost::signal<void (const boost::optional<SessionError>&)> onSessionFinished; - boost::signal<void (const ByteArray&)> onDataWritten; - boost::signal<void (const ByteArray&)> onDataRead; - - protected: - void setRemoteJID(const JID& j) { - remoteJID = j; - } - - void setLocalJID(const JID& j) { - localJID = j; - } - - void finishSession(const SessionError&); - - virtual void handleSessionStarted() {} - virtual void handleSessionFinished(const boost::optional<SessionError>&) {} - virtual void handleElement(boost::shared_ptr<Element>) = 0; - virtual void handleStreamStart(const ProtocolHeader&) = 0; - - void initializeStreamStack(); - - boost::shared_ptr<XMPPLayer> getXMPPLayer() const { - return xmppLayer; - } - - StreamStack* getStreamStack() const { - return streamStack; - } - - void setFinished(); - - private: - void handleDisconnected(const boost::optional<Connection::Error>& error); - - private: - JID localJID; - JID remoteJID; - boost::shared_ptr<Connection> connection; - PayloadParserFactoryCollection* payloadParserFactories; - PayloadSerializerCollection* payloadSerializers; - boost::shared_ptr<XMPPLayer> xmppLayer; - boost::shared_ptr<ConnectionLayer> connectionLayer; - StreamStack* streamStack; - bool finishing; - }; -} diff --git a/Swiften/Session/SessionStream.cpp b/Swiften/Session/SessionStream.cpp deleted file mode 100644 index 1d73d0f..0000000 --- a/Swiften/Session/SessionStream.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/Session/SessionStream.h" - -namespace Swift { - -SessionStream::~SessionStream() { -} - -}; diff --git a/Swiften/Session/SessionStream.h b/Swiften/Session/SessionStream.h deleted file mode 100644 index 8c64ccf..0000000 --- a/Swiften/Session/SessionStream.h +++ /dev/null @@ -1,69 +0,0 @@ -#pragma once - -#include <boost/signal.hpp> -#include <boost/shared_ptr.hpp> - -#include "Swiften/Elements/ProtocolHeader.h" -#include "Swiften/Elements/Element.h" -#include "Swiften/Base/Error.h" -#include "Swiften/TLS/PKCS12Certificate.h" - -namespace Swift { - class SessionStream { - public: - class Error : public Swift::Error { - public: - enum Type { - ParseError, - TLSError, - InvalidTLSCertificateError, - ConnectionReadError, - ConnectionWriteError - }; - - Error(Type type) : type(type) {} - - Type type; - }; - - virtual ~SessionStream(); - - virtual bool isAvailable() = 0; - - virtual void writeHeader(const ProtocolHeader& header) = 0; - virtual void writeFooter() = 0; - virtual void writeElement(boost::shared_ptr<Element>) = 0; - - virtual void addZLibCompression() = 0; - - virtual bool supportsTLSEncryption() = 0; - virtual void addTLSEncryption() = 0; - virtual void setWhitespacePingEnabled(bool enabled) = 0; - - virtual void resetXMPPParser() = 0; - - void setTLSCertificate(const PKCS12Certificate& cert) { - certificate = cert; - } - - virtual bool hasTLSCertificate() { - return !certificate.isNull(); - } - - - boost::signal<void (const ProtocolHeader&)> onStreamStartReceived; - boost::signal<void (boost::shared_ptr<Element>)> onElementReceived; - boost::signal<void (boost::shared_ptr<Error>)> onError; - boost::signal<void ()> onTLSEncrypted; - boost::signal<void (const String&)> onDataRead; - boost::signal<void (const String&)> onDataWritten; - - protected: - const PKCS12Certificate& getTLSCertificate() const { - return certificate; - } - - private: - PKCS12Certificate certificate; - }; -} diff --git a/Swiften/Session/SessionTracer.h b/Swiften/Session/SessionTracer.h deleted file mode 100644 index 29a07e0..0000000 --- a/Swiften/Session/SessionTracer.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include <iostream> - -#include "Swiften/Session/Session.h" -#include "Swiften/Base/String.h" -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - class SessionTracer { - public: - SessionTracer(boost::shared_ptr<Session> session) : session(session) { - session->onDataRead.connect(boost::bind(&SessionTracer::printData, this, '<', _1)); - session->onDataWritten.connect(boost::bind(&SessionTracer::printData, this, '>', _1)); - } - - private: - void printData(char direction, const ByteArray& data) { - std::cerr << direction << direction << " " << session->getLocalJID() << " "; - for (unsigned int i = 0; i < 72 - session->getLocalJID().toString().getLength() - session->getRemoteJID().toString().getLength(); ++i) { - std::cerr << direction; - } - std::cerr << " " << session->getRemoteJID()<< " " << direction << direction << std::endl; - std::cerr << String(data.getData(), data.getSize()) << std::endl; - } - - boost::shared_ptr<Session> session; - }; -} diff --git a/Swiften/Settings/SettingsProvider.h b/Swiften/Settings/SettingsProvider.h deleted file mode 100644 index d07e790..0000000 --- a/Swiften/Settings/SettingsProvider.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef SWIFTEN_SettingsProvider_H -#define SWIFTEN_SettingsProvider_H - -#include "Swiften/Base/String.h" - -#include <vector> - -namespace Swift { - -class SettingsProvider { - public: - virtual ~SettingsProvider() {} - virtual String getStringSetting(const String &settingPath) = 0; - virtual void storeString(const String &settingPath, const String &settingValue) = 0; - virtual bool getBoolSetting(const String &settingPath, bool defaultValue) = 0; - virtual void storeBool(const String &settingPath, bool settingValue) = 0; - virtual std::vector<String> getAvailableProfiles() = 0; - virtual void createProfile(const String& profile) = 0; -}; - -} -#endif - - diff --git a/Swiften/StreamStack/CompressionLayer.h b/Swiften/StreamStack/CompressionLayer.h deleted file mode 100644 index 6a8f2b3..0000000 --- a/Swiften/StreamStack/CompressionLayer.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef SWIFTEN_COMPRESSIONLAYER_H -#define SWIFTEN_COMPRESSIONLAYER_H - -#include <boost/noncopyable.hpp> -#include <boost/signal.hpp> - -#include "Swiften/Base/ByteArray.h" -#include "Swiften/StreamStack/StreamLayer.h" -#include "Swiften/Compress/ZLibException.h" -#include "Swiften/Compress/ZLibCompressor.h" -#include "Swiften/Compress/ZLibDecompressor.h" - -namespace Swift { - class ZLibCompressor; - class ZLibDecompressor; - - class CompressionLayer : public StreamLayer, boost::noncopyable { - public: - CompressionLayer() {} - - virtual void writeData(const ByteArray& data) { - try { - onWriteData(compressor_.process(data)); - } - catch (const ZLibException& e) { - onError(); - } - } - - virtual void handleDataRead(const ByteArray& data) { - try { - onDataRead(decompressor_.process(data)); - } - catch (const ZLibException& e) { - onError(); - } - } - - public: - boost::signal<void ()> onError; - - private: - ZLibCompressor compressor_; - ZLibDecompressor decompressor_; - }; -} - -#endif diff --git a/Swiften/StreamStack/ConnectionLayer.h b/Swiften/StreamStack/ConnectionLayer.h deleted file mode 100644 index 7688f78..0000000 --- a/Swiften/StreamStack/ConnectionLayer.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include <boost/signal.hpp> -#include <boost/shared_ptr.hpp> - -#include "Swiften/StreamStack/LowLayer.h" -#include "Swiften/Network/Connection.h" - -namespace Swift { - class ConnectionLayer : public LowLayer { - public: - ConnectionLayer(boost::shared_ptr<Connection> connection) : connection(connection) { - connection->onDataRead.connect(onDataRead); - } - - void writeData(const ByteArray& data) { - connection->write(data); - } - - private: - boost::shared_ptr<Connection> connection; - }; -} diff --git a/Swiften/StreamStack/HighLayer.cpp b/Swiften/StreamStack/HighLayer.cpp deleted file mode 100644 index 2f5e1df..0000000 --- a/Swiften/StreamStack/HighLayer.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/StreamStack/HighLayer.h" - -namespace Swift { - -HighLayer::~HighLayer() { -} - -} diff --git a/Swiften/StreamStack/HighLayer.h b/Swiften/StreamStack/HighLayer.h deleted file mode 100644 index bd6c6e6..0000000 --- a/Swiften/StreamStack/HighLayer.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef SWIFTEN_HIGHLAYER_H -#define SWIFTEN_HIGHLAYER_H - -#include <boost/signal.hpp> - -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - class HighLayer { - public: - virtual ~HighLayer(); - - virtual void handleDataRead(const ByteArray& data) = 0; - - boost::signal<void (const ByteArray&)> onWriteData; - }; -} - -#endif diff --git a/Swiften/StreamStack/LowLayer.cpp b/Swiften/StreamStack/LowLayer.cpp deleted file mode 100644 index 24aa7a2..0000000 --- a/Swiften/StreamStack/LowLayer.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/StreamStack/LowLayer.h" - -namespace Swift { - -LowLayer::~LowLayer() { -} - -} diff --git a/Swiften/StreamStack/LowLayer.h b/Swiften/StreamStack/LowLayer.h deleted file mode 100644 index 763cfc4..0000000 --- a/Swiften/StreamStack/LowLayer.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef SWIFTEN_LOWLAYER_H -#define SWIFTEN_LOWLAYER_H - -#include <boost/signal.hpp> - -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - class LowLayer { - public: - virtual ~LowLayer(); - - virtual void writeData(const ByteArray& data) = 0; - - boost::signal<void (const ByteArray&)> onDataRead; - }; -} - -#endif diff --git a/Swiften/StreamStack/OpenSSLLayer.cpp b/Swiften/StreamStack/OpenSSLLayer.cpp deleted file mode 100644 index da93e4e..0000000 --- a/Swiften/StreamStack/OpenSSLLayer.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "Swiften/StreamStack/OpenSSLLayer.h" - -namespace Swift { - -OpenSSLLayer::OpenSSLLayer() { - context_.onDataForNetwork.connect(onWriteData); - context_.onDataForApplication.connect(onDataRead); - context_.onConnected.connect(onConnected); - context_.onError.connect(onError); -} - -void OpenSSLLayer::connect() { - context_.connect(); -} - -void OpenSSLLayer::writeData(const ByteArray& data) { - context_.handleDataFromApplication(data); -} - -void OpenSSLLayer::handleDataRead(const ByteArray& data) { - context_.handleDataFromNetwork(data); -} - -bool OpenSSLLayer::setClientCertificate(const PKCS12Certificate& certificate) { - return context_.setClientCertificate(certificate); -} - -} diff --git a/Swiften/StreamStack/OpenSSLLayer.h b/Swiften/StreamStack/OpenSSLLayer.h deleted file mode 100644 index 615c75e..0000000 --- a/Swiften/StreamStack/OpenSSLLayer.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef SWIFTEN_OpenSSLLayer_H -#define SWIFTEN_OpenSSLLayer_H - -#include <boost/noncopyable.hpp> -#include <boost/signal.hpp> - -#include "Swiften/Base/ByteArray.h" -#include "Swiften/StreamStack/TLSLayer.h" -#include "Swiften/TLS/OpenSSL/OpenSSLContext.h" - -namespace Swift { - class OpenSSLLayer : public TLSLayer, boost::noncopyable { - public: - OpenSSLLayer(); - - virtual void connect(); - virtual bool setClientCertificate(const PKCS12Certificate&); - - virtual void writeData(const ByteArray& data); - virtual void handleDataRead(const ByteArray& data); - - private: - OpenSSLContext context_; - }; -} - -#endif diff --git a/Swiften/StreamStack/PlatformTLSLayerFactory.cpp b/Swiften/StreamStack/PlatformTLSLayerFactory.cpp deleted file mode 100644 index cdcb8a7..0000000 --- a/Swiften/StreamStack/PlatformTLSLayerFactory.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "Swiften/StreamStack/PlatformTLSLayerFactory.h" - -#include <cassert> - -#ifdef HAVE_OPENSSL -#include "Swiften/StreamStack/OpenSSLLayer.h" -#endif - -namespace Swift { - -PlatformTLSLayerFactory::PlatformTLSLayerFactory() { -} - -bool PlatformTLSLayerFactory::canCreate() const { -#ifdef HAVE_OPENSSL - return true; -#else - return false; -#endif -} - -boost::shared_ptr<TLSLayer> PlatformTLSLayerFactory::createTLSLayer() { -#ifdef HAVE_OPENSSL - return boost::shared_ptr<TLSLayer>(new OpenSSLLayer()); -#else - assert(false); - return boost::shared_ptr<TLSLayer>(); -#endif -} - -} diff --git a/Swiften/StreamStack/PlatformTLSLayerFactory.h b/Swiften/StreamStack/PlatformTLSLayerFactory.h deleted file mode 100644 index 6c343b0..0000000 --- a/Swiften/StreamStack/PlatformTLSLayerFactory.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include "Swiften/StreamStack/TLSLayerFactory.h" - -namespace Swift { - class PlatformTLSLayerFactory : public TLSLayerFactory { - public: - PlatformTLSLayerFactory(); - - bool canCreate() const; - virtual boost::shared_ptr<TLSLayer> createTLSLayer(); - }; -} diff --git a/Swiften/StreamStack/SConscript b/Swiften/StreamStack/SConscript deleted file mode 100644 index 449a39b..0000000 --- a/Swiften/StreamStack/SConscript +++ /dev/null @@ -1,21 +0,0 @@ -Import("swiften_env") - -myenv = swiften_env.Clone() -myenv.MergeFlags(swiften_env["OPENSSL_FLAGS"]) - -sources = [ - "HighLayer.cpp", - "LowLayer.cpp", - "PlatformTLSLayerFactory.cpp", - "StreamStack.cpp", - "TLSLayerFactory.cpp", - "WhitespacePingLayer.cpp", - "XMPPLayer.cpp", - ] - -if myenv.get("HAVE_OPENSSL", 0) : - myenv.Append(CPPDEFINES = "HAVE_OPENSSL") - sources += ["OpenSSLLayer.cpp"] - -objects = myenv.StaticObject(sources) -swiften_env.Append(SWIFTEN_OBJECTS = [objects]) diff --git a/Swiften/StreamStack/StreamLayer.h b/Swiften/StreamStack/StreamLayer.h deleted file mode 100644 index 6ea2051..0000000 --- a/Swiften/StreamStack/StreamLayer.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef SWIFTEN_STREAMLAYER_H -#define SWIFTEN_STREAMLAYER_H - -#include <boost/signal.hpp> - -#include "Swiften/StreamStack/LowLayer.h" -#include "Swiften/StreamStack/HighLayer.h" - -namespace Swift { - class StreamLayer : public LowLayer, public HighLayer { - public: - StreamLayer() {} - }; -} - -#endif diff --git a/Swiften/StreamStack/StreamStack.cpp b/Swiften/StreamStack/StreamStack.cpp deleted file mode 100644 index 9eb9b4e..0000000 --- a/Swiften/StreamStack/StreamStack.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "Swiften/StreamStack/StreamStack.h" - -#include <boost/bind.hpp> - -#include "Swiften/Base/foreach.h" -#include "Swiften/StreamStack/XMPPLayer.h" -#include "Swiften/StreamStack/LowLayer.h" -#include "Swiften/StreamStack/StreamLayer.h" - -namespace Swift { - -StreamStack::StreamStack(boost::shared_ptr<XMPPLayer> xmppLayer, boost::shared_ptr<LowLayer> physicalLayer) : xmppLayer_(xmppLayer), physicalLayer_(physicalLayer) { - xmppReadSlotConnection_ = physicalLayer_->onDataRead.connect(boost::bind(&XMPPLayer::parseData, xmppLayer_, _1)); - xmppWriteSignalConnection_ = xmppLayer_->onWriteData.connect(boost::bind(&LowLayer::writeData, physicalLayer_, _1)); -} - -StreamStack::~StreamStack() { - // Disconnect the write signal connections to break cyclic signal - // dependencies. The read signal connections have - // to remain, since these can be reached from the main event loop. - xmppWriteSignalConnection_.disconnect(); - foreach(const boost::bsignals::connection& connection, writeSignalConnections_) { - connection.disconnect(); - } -} - -void StreamStack::addLayer(boost::shared_ptr<StreamLayer> newLayer) { - xmppReadSlotConnection_.disconnect(); - xmppWriteSignalConnection_.disconnect(); - - boost::shared_ptr<LowLayer> lowLayer = (layers_.empty() ? physicalLayer_ : *layers_.rbegin()); - - lowLayer->onDataRead.connect(boost::bind(&HighLayer::handleDataRead, newLayer, _1), boost::bsignals::at_front); - writeSignalConnections_.push_back(newLayer->onWriteData.connect(boost::bind(&LowLayer::writeData, lowLayer, _1), boost::bsignals::at_front)); - xmppWriteSignalConnection_ = xmppLayer_->onWriteData.connect(boost::bind(&LowLayer::writeData, newLayer, _1), boost::bsignals::at_front); - xmppReadSlotConnection_ = newLayer->onDataRead.connect(boost::bind(&XMPPLayer::parseData, xmppLayer_, _1), boost::bsignals::at_front); - layers_.push_back(newLayer); -} - -} diff --git a/Swiften/StreamStack/StreamStack.h b/Swiften/StreamStack/StreamStack.h deleted file mode 100644 index 87c522d..0000000 --- a/Swiften/StreamStack/StreamStack.h +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/signal.hpp> -#include <vector> - -#include "Swiften/Elements/Stanza.h" -#include "Swiften/Base/foreach.h" - -namespace Swift { - class XMPPLayer; - class LowLayer; - class StreamLayer; - - class StreamStack { - public: - StreamStack(boost::shared_ptr<XMPPLayer> xmppLayer, boost::shared_ptr<LowLayer> physicalLayer); - ~StreamStack(); - - void addLayer(boost::shared_ptr<StreamLayer>); - - boost::shared_ptr<XMPPLayer> getXMPPLayer() const { - return xmppLayer_; - } - - template<typename T> boost::shared_ptr<T> getLayer() { - foreach(const boost::shared_ptr<StreamLayer>& streamLayer, layers_) { - boost::shared_ptr<T> layer = boost::dynamic_pointer_cast<T>(streamLayer); - if (layer) { - return layer; - } - } - return boost::shared_ptr<T>(); - } - - private: - boost::shared_ptr<XMPPLayer> xmppLayer_; - boost::shared_ptr<LowLayer> physicalLayer_; - std::vector< boost::shared_ptr<StreamLayer> > layers_; - boost::bsignals::connection xmppReadSlotConnection_; - boost::bsignals::connection xmppWriteSignalConnection_; - std::vector< boost::bsignals::connection > writeSignalConnections_; - }; -} diff --git a/Swiften/StreamStack/TLSLayer.h b/Swiften/StreamStack/TLSLayer.h deleted file mode 100644 index 490e16c..0000000 --- a/Swiften/StreamStack/TLSLayer.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef SWIFTEN_TLSLayer_H -#define SWIFTEN_TLSLayer_H - -#include "Swiften/StreamStack/StreamLayer.h" -#include "Swiften/TLS/PKCS12Certificate.h" - -namespace Swift { - class TLSLayer : public StreamLayer { - public: - virtual void connect() = 0; - virtual bool setClientCertificate(const PKCS12Certificate&) = 0; - - public: - boost::signal<void ()> onError; - boost::signal<void ()> onConnected; - }; -} - -#endif diff --git a/Swiften/StreamStack/TLSLayerFactory.cpp b/Swiften/StreamStack/TLSLayerFactory.cpp deleted file mode 100644 index 15de455..0000000 --- a/Swiften/StreamStack/TLSLayerFactory.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "Swiften/StreamStack/TLSLayerFactory.h" - -namespace Swift { - -TLSLayerFactory::~TLSLayerFactory() { -} - -} diff --git a/Swiften/StreamStack/TLSLayerFactory.h b/Swiften/StreamStack/TLSLayerFactory.h deleted file mode 100644 index 1b0bfc1..0000000 --- a/Swiften/StreamStack/TLSLayerFactory.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> - -namespace Swift { - class TLSLayer; - - class TLSLayerFactory { - public: - virtual ~TLSLayerFactory(); - virtual bool canCreate() const = 0; - - virtual boost::shared_ptr<TLSLayer> createTLSLayer() = 0; - }; -} diff --git a/Swiften/StreamStack/UnitTest/StreamStackTest.cpp b/Swiften/StreamStack/UnitTest/StreamStackTest.cpp deleted file mode 100644 index 6b97c0d..0000000 --- a/Swiften/StreamStack/UnitTest/StreamStackTest.cpp +++ /dev/null @@ -1,165 +0,0 @@ -#include <vector> -#include <boost/bind.hpp> -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Base/ByteArray.h" -#include "Swiften/StreamStack/StreamStack.h" -#include "Swiften/StreamStack/LowLayer.h" -#include "Swiften/StreamStack/XMPPLayer.h" -#include "Swiften/StreamStack/StreamLayer.h" -#include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h" -#include "Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h" - -using namespace Swift; - -class StreamStackTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(StreamStackTest); - CPPUNIT_TEST(testWriteData_NoIntermediateStreamStack); - CPPUNIT_TEST(testWriteData_OneIntermediateStream); - CPPUNIT_TEST(testWriteData_TwoIntermediateStreamStack); - CPPUNIT_TEST(testReadData_NoIntermediateStreamStack); - CPPUNIT_TEST(testReadData_OneIntermediateStream); - CPPUNIT_TEST(testReadData_TwoIntermediateStreamStack); - CPPUNIT_TEST(testAddLayer_ExistingOnWriteDataSlot); - CPPUNIT_TEST_SUITE_END(); - - public: - StreamStackTest() {} - - void setUp() { - physicalStream_ = boost::shared_ptr<TestLowLayer>(new TestLowLayer()); - xmppStream_ = boost::shared_ptr<XMPPLayer>(new XMPPLayer(&parserFactories_, &serializers_)); - elementsReceived_ = 0; - dataWriteReceived_ = 0; - } - - void tearDown() { - } - - void testWriteData_NoIntermediateStreamStack() { - StreamStack testling(xmppStream_, physicalStream_); - - xmppStream_->writeData("foo"); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), physicalStream_->data_.size()); - CPPUNIT_ASSERT_EQUAL(ByteArray("foo"), physicalStream_->data_[0]); - } - - void testWriteData_OneIntermediateStream() { - StreamStack testling(xmppStream_, physicalStream_); - boost::shared_ptr<MyStreamLayer> xStream(new MyStreamLayer("X")); - testling.addLayer(xStream); - - xmppStream_->writeData("foo"); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), physicalStream_->data_.size()); - CPPUNIT_ASSERT_EQUAL(ByteArray("Xfoo"), physicalStream_->data_[0]); - } - - void testWriteData_TwoIntermediateStreamStack() { - StreamStack testling(xmppStream_, physicalStream_); - boost::shared_ptr<MyStreamLayer> xStream(new MyStreamLayer("X")); - boost::shared_ptr<MyStreamLayer> yStream(new MyStreamLayer("Y")); - testling.addLayer(xStream); - testling.addLayer(yStream); - - xmppStream_->writeData("foo"); - - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), physicalStream_->data_.size()); - CPPUNIT_ASSERT_EQUAL(ByteArray("XYfoo"), physicalStream_->data_[0]); - } - - void testReadData_NoIntermediateStreamStack() { - StreamStack testling(xmppStream_, physicalStream_); - xmppStream_->onElement.connect(boost::bind(&StreamStackTest::handleElement, this, _1)); - - physicalStream_->onDataRead(ByteArray("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'><presence/>")); - - CPPUNIT_ASSERT_EQUAL(1, elementsReceived_); - } - - void testReadData_OneIntermediateStream() { - StreamStack testling(xmppStream_, physicalStream_); - xmppStream_->onElement.connect(boost::bind(&StreamStackTest::handleElement, this, _1)); - boost::shared_ptr<MyStreamLayer> xStream(new MyStreamLayer("<")); - testling.addLayer(xStream); - - physicalStream_->onDataRead(ByteArray("stream:stream xmlns:stream='http://etherx.jabber.org/streams'><presence/>")); - - CPPUNIT_ASSERT_EQUAL(1, elementsReceived_); - } - - void testReadData_TwoIntermediateStreamStack() { - StreamStack testling(xmppStream_, physicalStream_); - xmppStream_->onElement.connect(boost::bind(&StreamStackTest::handleElement, this, _1)); - boost::shared_ptr<MyStreamLayer> xStream(new MyStreamLayer("s")); - boost::shared_ptr<MyStreamLayer> yStream(new MyStreamLayer("<")); - testling.addLayer(xStream); - testling.addLayer(yStream); - - physicalStream_->onDataRead(ByteArray("tream:stream xmlns:stream='http://etherx.jabber.org/streams'><presence/>")); - - CPPUNIT_ASSERT_EQUAL(1, elementsReceived_); - } - - void testAddLayer_ExistingOnWriteDataSlot() { - StreamStack testling(xmppStream_, physicalStream_); - xmppStream_->onWriteData.connect(boost::bind(&StreamStackTest::handleWriteData, this, _1)); - boost::shared_ptr<MyStreamLayer> xStream(new MyStreamLayer("X")); - testling.addLayer(xStream); - - xmppStream_->writeData("foo"); - - CPPUNIT_ASSERT_EQUAL(1, dataWriteReceived_); - } - - void handleElement(boost::shared_ptr<Element>) { - ++elementsReceived_; - } - - void handleWriteData(ByteArray) { - ++dataWriteReceived_; - } - - private: - class MyStreamLayer : public StreamLayer { - public: - MyStreamLayer(const String& prepend) : prepend_(prepend) { - } - - virtual void writeData(const ByteArray& data) { - onWriteData(ByteArray(prepend_) + data); - } - - virtual void handleDataRead(const ByteArray& data) { - onDataRead(ByteArray(prepend_) + data); - } - - private: - String prepend_; - }; - - class TestLowLayer : public LowLayer { - public: - TestLowLayer() { - } - - virtual void writeData(const ByteArray& data) { - data_.push_back(data); - } - - std::vector<ByteArray> data_; - }; - - private: - FullPayloadParserFactoryCollection parserFactories_; - FullPayloadSerializerCollection serializers_; - boost::shared_ptr<TestLowLayer> physicalStream_; - boost::shared_ptr<XMPPLayer> xmppStream_; - int elementsReceived_; - int dataWriteReceived_; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(StreamStackTest); diff --git a/Swiften/StreamStack/UnitTest/XMPPLayerTest.cpp b/Swiften/StreamStack/UnitTest/XMPPLayerTest.cpp deleted file mode 100644 index e284ba9..0000000 --- a/Swiften/StreamStack/UnitTest/XMPPLayerTest.cpp +++ /dev/null @@ -1,119 +0,0 @@ -#include <vector> -#include <boost/bind.hpp> -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Elements/ProtocolHeader.h" -#include "Swiften/Elements/Presence.h" -#include "Swiften/Base/ByteArray.h" -#include "Swiften/StreamStack/XMPPLayer.h" -#include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h" -#include "Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h" - -using namespace Swift; - -class XMPPLayerTest : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(XMPPLayerTest); - CPPUNIT_TEST(testParseData_Error); - CPPUNIT_TEST(testResetParser); - CPPUNIT_TEST(testResetParser_FromSlot); - CPPUNIT_TEST(testWriteHeader); - CPPUNIT_TEST(testWriteElement); - CPPUNIT_TEST(testWriteFooter); - CPPUNIT_TEST_SUITE_END(); - - public: - XMPPLayerTest() {} - - void setUp() { - testling_ = new XMPPLayer(&parserFactories_, &serializers_); - elementsReceived_ = 0; - dataReceived_ = ""; - errorReceived_ = 0; - } - - void tearDown() { - delete testling_; - } - - void testParseData_Error() { - testling_->onError.connect(boost::bind(&XMPPLayerTest::handleError, this)); - - testling_->parseData("<iq>"); - - CPPUNIT_ASSERT_EQUAL(1, errorReceived_); - } - - void testResetParser() { - testling_->onElement.connect(boost::bind(&XMPPLayerTest::handleElement, this, _1)); - testling_->onError.connect(boost::bind(&XMPPLayerTest::handleError, this)); - - testling_->parseData("<stream:stream to=\"example.com\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" >"); - testling_->resetParser(); - testling_->parseData("<stream:stream to=\"example.com\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" >"); - testling_->parseData("<presence/>"); - - CPPUNIT_ASSERT_EQUAL(1, elementsReceived_); - CPPUNIT_ASSERT_EQUAL(0, errorReceived_); - } - - void testResetParser_FromSlot() { - testling_->onElement.connect(boost::bind(&XMPPLayerTest::handleElementAndReset, this, _1)); - testling_->parseData("<stream:stream to=\"example.com\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" ><presence/>"); - testling_->parseData("<stream:stream to=\"example.com\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" ><presence/>"); - - CPPUNIT_ASSERT_EQUAL(2, elementsReceived_); - CPPUNIT_ASSERT_EQUAL(0, errorReceived_); - } - - void testWriteHeader() { - testling_->onWriteData.connect(boost::bind(&XMPPLayerTest::handleWriteData, this, _1)); - ProtocolHeader header; - header.setTo("example.com"); - testling_->writeHeader(header); - - CPPUNIT_ASSERT_EQUAL(String("<?xml version=\"1.0\"?><stream:stream xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" to=\"example.com\" version=\"1.0\">"), dataReceived_); - } - - void testWriteElement() { - testling_->onWriteData.connect(boost::bind(&XMPPLayerTest::handleWriteData, this, _1)); - testling_->writeElement(boost::shared_ptr<Presence>(new Presence())); - - CPPUNIT_ASSERT_EQUAL(String("<presence/>"), dataReceived_); - } - - void testWriteFooter() { - testling_->onWriteData.connect(boost::bind(&XMPPLayerTest::handleWriteData, this, _1)); - testling_->writeFooter(); - - CPPUNIT_ASSERT_EQUAL(String("</stream:stream>"), dataReceived_); - } - - void handleElement(boost::shared_ptr<Element>) { - ++elementsReceived_; - } - - void handleElementAndReset(boost::shared_ptr<Element>) { - ++elementsReceived_; - testling_->resetParser(); - } - - void handleWriteData(ByteArray ba) { - dataReceived_ += std::string(ba.getData(), ba.getSize()); - } - - void handleError() { - ++errorReceived_; - } - - private: - FullPayloadParserFactoryCollection parserFactories_; - FullPayloadSerializerCollection serializers_; - XMPPLayer* testling_; - int elementsReceived_; - String dataReceived_; - int errorReceived_; -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(XMPPLayerTest); diff --git a/Swiften/StreamStack/WhitespacePingLayer.cpp b/Swiften/StreamStack/WhitespacePingLayer.cpp deleted file mode 100644 index 5c1eb00..0000000 --- a/Swiften/StreamStack/WhitespacePingLayer.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "Swiften/StreamStack/WhitespacePingLayer.h" - -#include <boost/bind.hpp> - -#include "Swiften/Network/TimerFactory.h" -#include "Swiften/Network/Timer.h" - -namespace Swift { - -static const int TIMEOUT_MILLISECONDS = 60000; - -WhitespacePingLayer::WhitespacePingLayer(TimerFactory* timerFactory) : isActive(false) { - timer = timerFactory->createTimer(TIMEOUT_MILLISECONDS); - timer->onTick.connect(boost::bind(&WhitespacePingLayer::handleTimerTick, this)); -} - -void WhitespacePingLayer::writeData(const ByteArray& data) { - onWriteData(data); -} - -void WhitespacePingLayer::handleDataRead(const ByteArray& data) { - onDataRead(data); -} - -void WhitespacePingLayer::handleTimerTick() { - onWriteData(" "); -} - -void WhitespacePingLayer::setActive() { - isActive = true; - timer->start(); -} - -void WhitespacePingLayer::setInactive() { - timer->stop(); - isActive = false; -} - -} diff --git a/Swiften/StreamStack/WhitespacePingLayer.h b/Swiften/StreamStack/WhitespacePingLayer.h deleted file mode 100644 index 18ea39a..0000000 --- a/Swiften/StreamStack/WhitespacePingLayer.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include <boost/noncopyable.hpp> -#include <boost/shared_ptr.hpp> - -#include "Swiften/StreamStack/StreamLayer.h" - -namespace Swift { - class Timer; - class TimerFactory; - - class WhitespacePingLayer : public StreamLayer, boost::noncopyable { - public: - WhitespacePingLayer(TimerFactory* timerFactory); - - void setActive(); - void setInactive(); - void writeData(const ByteArray& data); - void handleDataRead(const ByteArray& data); - - bool getIsActive() const { - return isActive; - } - - private: - void handleTimerTick(); - - private: - bool isActive; - boost::shared_ptr<Timer> timer; - }; -} diff --git a/Swiften/StreamStack/XMPPLayer.cpp b/Swiften/StreamStack/XMPPLayer.cpp deleted file mode 100644 index b87cb4a..0000000 --- a/Swiften/StreamStack/XMPPLayer.cpp +++ /dev/null @@ -1,80 +0,0 @@ -#include "Swiften/StreamStack/XMPPLayer.h" -#include "Swiften/Parser/XMPPParser.h" -#include "Swiften/Serializer/XMPPSerializer.h" -#include "Swiften/Elements/ProtocolHeader.h" - -namespace Swift { - -XMPPLayer::XMPPLayer( - PayloadParserFactoryCollection* payloadParserFactories, - PayloadSerializerCollection* payloadSerializers) : - payloadParserFactories_(payloadParserFactories), - payloadSerializers_(payloadSerializers), - resetParserAfterParse_(false), - inParser_(false) { - xmppParser_ = new XMPPParser(this, payloadParserFactories_); - xmppSerializer_ = new XMPPSerializer(payloadSerializers_); -} - -XMPPLayer::~XMPPLayer() { - delete xmppSerializer_; - delete xmppParser_; -} - -void XMPPLayer::writeHeader(const ProtocolHeader& header) { - onWriteData(ByteArray(xmppSerializer_->serializeHeader(header))); -} - -void XMPPLayer::writeFooter() { - onWriteData(ByteArray(xmppSerializer_->serializeFooter())); -} - -void XMPPLayer::writeElement(boost::shared_ptr<Element> element) { - onWriteData(ByteArray(xmppSerializer_->serializeElement(element))); -} - -void XMPPLayer::writeData(const String& data) { - onWriteData(ByteArray(data)); -} - -void XMPPLayer::parseData(ByteArray data) { - onDataRead(data); - inParser_ = true; - if (!xmppParser_->parse(String(data.getData(), data.getSize()))) { - inParser_ = false; - onError(); - return; - } - inParser_ = false; - if (resetParserAfterParse_) { - doResetParser(); - } -} - -void XMPPLayer::doResetParser() { - delete xmppParser_; - xmppParser_ = new XMPPParser(this, payloadParserFactories_); - resetParserAfterParse_ = false; -} - -void XMPPLayer::handleStreamStart(const ProtocolHeader& header) { - onStreamStart(header); -} - -void XMPPLayer::handleElement(boost::shared_ptr<Element> stanza) { - onElement(stanza); -} - -void XMPPLayer::handleStreamEnd() { -} - -void XMPPLayer::resetParser() { - if (inParser_) { - resetParserAfterParse_ = true; - } - else { - doResetParser(); - } -} - -} diff --git a/Swiften/StreamStack/XMPPLayer.h b/Swiften/StreamStack/XMPPLayer.h deleted file mode 100644 index 7974811..0000000 --- a/Swiften/StreamStack/XMPPLayer.h +++ /dev/null @@ -1,55 +0,0 @@ -#pragma once - -#include <boost/shared_ptr.hpp> -#include <boost/signal.hpp> -#include <boost/noncopyable.hpp> - -#include "Swiften/Base/ByteArray.h" -#include "Swiften/Elements/Element.h" -#include "Swiften/Parser/XMPPParserClient.h" - -namespace Swift { - class ProtocolHeader; - class XMPPParser; - class PayloadParserFactoryCollection; - class XMPPSerializer; - class PayloadSerializerCollection; - - class XMPPLayer : public XMPPParserClient, boost::noncopyable { - public: - XMPPLayer( - PayloadParserFactoryCollection* payloadParserFactories, - PayloadSerializerCollection* payloadSerializers); - ~XMPPLayer(); - - void writeHeader(const ProtocolHeader& header); - void writeFooter(); - void writeElement(boost::shared_ptr<Element>); - void writeData(const String& data); - - void parseData(ByteArray data); - void resetParser(); - - public: - boost::signal<void (const ProtocolHeader&)> onStreamStart; - boost::signal<void (boost::shared_ptr<Element>)> onElement; - boost::signal<void (const ByteArray&)> onWriteData; - boost::signal<void (const ByteArray&)> onDataRead; - boost::signal<void ()> onError; - - private: - void handleStreamStart(const ProtocolHeader&); - void handleElement(boost::shared_ptr<Element>); - void handleStreamEnd(); - - void doResetParser(); - - private: - PayloadParserFactoryCollection* payloadParserFactories_; - XMPPParser* xmppParser_; - PayloadSerializerCollection* payloadSerializers_; - XMPPSerializer* xmppSerializer_; - bool resetParserAfterParse_; - bool inParser_; - }; -} diff --git a/Swiften/StringCodecs/Base64.cpp b/Swiften/StringCodecs/Base64.cpp deleted file mode 100644 index 03b0896..0000000 --- a/Swiften/StringCodecs/Base64.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include <boost/numeric/conversion/cast.hpp> - -#include "Swiften/StringCodecs/Base64.h" - -namespace Swift { - -#pragma GCC diagnostic ignored "-Wold-style-cast" - -String Base64::encode(const ByteArray &s) { - int i; - int len = s.getSize(); - char tbl[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - int a, b, c; - - std::string p; - p.resize((len+2)/3*4); - int at = 0; - for( i = 0; i < len; i += 3 ) { - a = ((unsigned char) (s[i]) & 3) << 4; - if(i + 1 < len) { - a += (unsigned char) (s[i + 1]) >> 4; - b = ((unsigned char) (s[i + 1]) & 0xF) << 2; - if(i + 2 < len) { - b += (unsigned char) (s[i + 2]) >> 6; - c = (unsigned char) (s[i + 2]) & 0x3F; - } - else - c = 64; - } - else { - b = c = 64; - } - - p[at++] = tbl[(unsigned char) (s[i]) >> 2]; - p[at++] = tbl[a]; - p[at++] = tbl[b]; - p[at++] = tbl[c]; - } - return p; -} - -ByteArray Base64::decode(const String& input) { - String inputWithoutNewlines(input); - inputWithoutNewlines.removeAll('\n'); - - const std::string& s = inputWithoutNewlines.getUTF8String(); - ByteArray p; - - // -1 specifies invalid - // 64 specifies eof - // everything else specifies data - - char tbl[] = { - -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, - -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, - -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63, - 52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1, - -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1, - -1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40, - 41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1, - -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, - -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, - -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, - -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, - -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, - -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, - -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, - -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, - }; - - // this should be a multiple of 4 - int len = s.size(); - - if(len % 4) { - return p; - } - - p.resize(len / 4 * 3); - - int i; - int at = 0; - - int a, b, c, d; - c = d = 0; - - for( i = 0; i < len; i += 4 ) { - a = tbl[boost::numeric_cast<int>(s[i])]; - b = tbl[boost::numeric_cast<int>(s[i + 1])]; - c = tbl[boost::numeric_cast<int>(s[i + 2])]; - d = tbl[boost::numeric_cast<int>(s[i + 3])]; - if((a == 64 || b == 64) || (a < 0 || b < 0 || c < 0 || d < 0)) { - p.resize(0); - return p; - } - p[at++] = ((a & 0x3F) << 2) | ((b >> 4) & 0x03); - p[at++] = ((b & 0x0F) << 4) | ((c >> 2) & 0x0F); - p[at++] = ((c & 0x03) << 6) | ((d >> 0) & 0x3F); - } - - if(c & 64) - p.resize(at - 2); - else if(d & 64) - p.resize(at - 1); - - return p; -} - -} diff --git a/Swiften/StringCodecs/Base64.h b/Swiften/StringCodecs/Base64.h deleted file mode 100644 index 1ea378c..0000000 --- a/Swiften/StringCodecs/Base64.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include <vector> - -#include "Swiften/Base/String.h" -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - class Base64 { - public: - static String encode(const ByteArray& s); - static ByteArray decode(const String &s); - }; -} diff --git a/Swiften/StringCodecs/HMACSHA1.cpp b/Swiften/StringCodecs/HMACSHA1.cpp deleted file mode 100644 index f4066cb..0000000 --- a/Swiften/StringCodecs/HMACSHA1.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "Swiften/StringCodecs/HMACSHA1.h" - -#include <cassert> - -#include "Swiften/StringCodecs/SHA1.h" -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - -static const unsigned int B = 64; - -ByteArray HMACSHA1::getResult(const ByteArray& key, const ByteArray& data) { - assert(key.getSize() <= B); - - // Create the padded key - ByteArray paddedKey(key); - paddedKey.resize(B); - for (unsigned int i = key.getSize(); i < paddedKey.getSize(); ++i) { - paddedKey[i] = 0x0; - } - - // Create the first value - ByteArray x(paddedKey); - for (unsigned int i = 0; i < x.getSize(); ++i) { - x[i] ^= 0x36; - } - x += data; - - // Create the second value - ByteArray y(paddedKey); - for (unsigned int i = 0; i < y.getSize(); ++i) { - y[i] ^= 0x5c; - } - y += SHA1::getHash(x); - - return SHA1::getHash(y); -} - -} diff --git a/Swiften/StringCodecs/HMACSHA1.h b/Swiften/StringCodecs/HMACSHA1.h deleted file mode 100644 index 698e4bc..0000000 --- a/Swiften/StringCodecs/HMACSHA1.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -namespace Swift { - class ByteArray; - - class HMACSHA1 { - public: - static ByteArray getResult(const ByteArray& key, const ByteArray& data); - }; -} diff --git a/Swiften/StringCodecs/Hexify.cpp b/Swiften/StringCodecs/Hexify.cpp deleted file mode 100644 index 504e314..0000000 --- a/Swiften/StringCodecs/Hexify.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "Swiften/StringCodecs/Hexify.h" - -#include <sstream> -#include <iomanip> -#include <boost/numeric/conversion/cast.hpp> - -#include "Swiften/Base/String.h" -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - -String Hexify::hexify(const ByteArray& data) { - std::ostringstream result; - result << std::hex; - - for (unsigned int i = 0; i < data.getSize(); ++i) { - result << std::setw(2) << std::setfill('0') << boost::numeric_cast<unsigned int>(static_cast<unsigned char>(data[i])); - } - return String(result.str()); -} - -} diff --git a/Swiften/StringCodecs/Hexify.h b/Swiften/StringCodecs/Hexify.h deleted file mode 100644 index 7bd5bee..0000000 --- a/Swiften/StringCodecs/Hexify.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -namespace Swift { - class String; - class ByteArray; - - class Hexify { - public: - static String hexify(const ByteArray& data); - }; -} diff --git a/Swiften/StringCodecs/MD5.cpp b/Swiften/StringCodecs/MD5.cpp deleted file mode 100644 index 937d128..0000000 --- a/Swiften/StringCodecs/MD5.cpp +++ /dev/null @@ -1,359 +0,0 @@ -/* - * This implementation is shamelessly copied from L. Peter Deutsch's - * implementation, and altered to use our own defines and datastructures. - * Original license below. - */ - -/* - Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved. - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - L. Peter Deutsch - ghost@aladdin.com - */ - -#include "Swiften/StringCodecs/MD5.h" - -#include <cassert> - -#include "Swiften/Base/ByteArray.h" -#include "Swiften/Base/Platform.h" - -namespace Swift { - -typedef unsigned char md5_byte_t; /* 8-bit byte */ -typedef unsigned int md5_word_t; /* 32-bit word */ - -/* Define the state of the MD5 Algorithm. */ -typedef struct md5_state_s { - md5_word_t count[2]; /* message length in bits, lsw first */ - md5_word_t abcd[4]; /* digest buffer */ - md5_byte_t buf[64]; /* accumulate block */ -} md5_state_t; - -#define T_MASK ((md5_word_t)~0) -#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87) -#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9) -#define T3 0x242070db -#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111) -#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050) -#define T6 0x4787c62a -#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec) -#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe) -#define T9 0x698098d8 -#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850) -#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e) -#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841) -#define T13 0x6b901122 -#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c) -#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71) -#define T16 0x49b40821 -#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d) -#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf) -#define T19 0x265e5a51 -#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855) -#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2) -#define T22 0x02441453 -#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e) -#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437) -#define T25 0x21e1cde6 -#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829) -#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278) -#define T28 0x455a14ed -#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa) -#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07) -#define T31 0x676f02d9 -#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375) -#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd) -#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e) -#define T35 0x6d9d6122 -#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3) -#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb) -#define T38 0x4bdecfa9 -#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f) -#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f) -#define T41 0x289b7ec6 -#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805) -#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a) -#define T44 0x04881d05 -#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6) -#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a) -#define T47 0x1fa27cf8 -#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a) -#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb) -#define T50 0x432aff97 -#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58) -#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6) -#define T53 0x655b59c3 -#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d) -#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82) -#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e) -#define T57 0x6fa87e4f -#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f) -#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb) -#define T60 0x4e0811a1 -#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d) -#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca) -#define T63 0x2ad7d2bb -#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e) - - -static void md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/) { - md5_word_t - a = pms->abcd[0], b = pms->abcd[1], - c = pms->abcd[2], d = pms->abcd[3]; - md5_word_t t; -#ifdef SWIFTEN_BIG_ENDIAN - /* Define storage only for big-endian CPUs. */ - md5_word_t X[16]; -#else - /* Define storage for little-endian or both types of CPUs. */ - md5_word_t xbuf[16]; - const md5_word_t *X; -#endif - - { -#ifdef SWIFTEN_LITTLE_ENDIAN - { - /* - * On little-endian machines, we can process properly aligned - * data without copying it. - */ - if (!((data - (const md5_byte_t *)0) & 3)) { - /* data are properly aligned */ - X = (const md5_word_t *)data; - } else { - /* not aligned */ - memcpy(xbuf, data, 64); - X = xbuf; - } - } -#else - { - /* - * On big-endian machines, we must arrange the bytes in the - * right order. - */ - const md5_byte_t *xp = data; - int i; - - for (i = 0; i < 16; ++i, xp += 4) - X[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24); - } -#endif - } - -#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) - - /* Round 1. */ - /* Let [abcd k s i] denote the operation - a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */ -#define F(x, y, z) (((x) & (y)) | (~(x) & (z))) -#define SET(a, b, c, d, k, s, Ti)\ - t = a + F(b,c,d) + X[k] + Ti;\ - a = ROTATE_LEFT(t, s) + b - /* Do the following 16 operations. */ - SET(a, b, c, d, 0, 7, T1); - SET(d, a, b, c, 1, 12, T2); - SET(c, d, a, b, 2, 17, T3); - SET(b, c, d, a, 3, 22, T4); - SET(a, b, c, d, 4, 7, T5); - SET(d, a, b, c, 5, 12, T6); - SET(c, d, a, b, 6, 17, T7); - SET(b, c, d, a, 7, 22, T8); - SET(a, b, c, d, 8, 7, T9); - SET(d, a, b, c, 9, 12, T10); - SET(c, d, a, b, 10, 17, T11); - SET(b, c, d, a, 11, 22, T12); - SET(a, b, c, d, 12, 7, T13); - SET(d, a, b, c, 13, 12, T14); - SET(c, d, a, b, 14, 17, T15); - SET(b, c, d, a, 15, 22, T16); -#undef SET - - /* Round 2. */ - /* Let [abcd k s i] denote the operation - a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */ -#define G(x, y, z) (((x) & (z)) | ((y) & ~(z))) -#define SET(a, b, c, d, k, s, Ti)\ - t = a + G(b,c,d) + X[k] + Ti;\ - a = ROTATE_LEFT(t, s) + b - /* Do the following 16 operations. */ - SET(a, b, c, d, 1, 5, T17); - SET(d, a, b, c, 6, 9, T18); - SET(c, d, a, b, 11, 14, T19); - SET(b, c, d, a, 0, 20, T20); - SET(a, b, c, d, 5, 5, T21); - SET(d, a, b, c, 10, 9, T22); - SET(c, d, a, b, 15, 14, T23); - SET(b, c, d, a, 4, 20, T24); - SET(a, b, c, d, 9, 5, T25); - SET(d, a, b, c, 14, 9, T26); - SET(c, d, a, b, 3, 14, T27); - SET(b, c, d, a, 8, 20, T28); - SET(a, b, c, d, 13, 5, T29); - SET(d, a, b, c, 2, 9, T30); - SET(c, d, a, b, 7, 14, T31); - SET(b, c, d, a, 12, 20, T32); -#undef SET - - /* Round 3. */ - /* Let [abcd k s t] denote the operation - a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */ -#define H(x, y, z) ((x) ^ (y) ^ (z)) -#define SET(a, b, c, d, k, s, Ti)\ - t = a + H(b,c,d) + X[k] + Ti;\ - a = ROTATE_LEFT(t, s) + b - /* Do the following 16 operations. */ - SET(a, b, c, d, 5, 4, T33); - SET(d, a, b, c, 8, 11, T34); - SET(c, d, a, b, 11, 16, T35); - SET(b, c, d, a, 14, 23, T36); - SET(a, b, c, d, 1, 4, T37); - SET(d, a, b, c, 4, 11, T38); - SET(c, d, a, b, 7, 16, T39); - SET(b, c, d, a, 10, 23, T40); - SET(a, b, c, d, 13, 4, T41); - SET(d, a, b, c, 0, 11, T42); - SET(c, d, a, b, 3, 16, T43); - SET(b, c, d, a, 6, 23, T44); - SET(a, b, c, d, 9, 4, T45); - SET(d, a, b, c, 12, 11, T46); - SET(c, d, a, b, 15, 16, T47); - SET(b, c, d, a, 2, 23, T48); -#undef SET - - /* Round 4. */ - /* Let [abcd k s t] denote the operation - a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */ -#define I(x, y, z) ((y) ^ ((x) | ~(z))) -#define SET(a, b, c, d, k, s, Ti)\ - t = a + I(b,c,d) + X[k] + Ti;\ - a = ROTATE_LEFT(t, s) + b - /* Do the following 16 operations. */ - SET(a, b, c, d, 0, 6, T49); - SET(d, a, b, c, 7, 10, T50); - SET(c, d, a, b, 14, 15, T51); - SET(b, c, d, a, 5, 21, T52); - SET(a, b, c, d, 12, 6, T53); - SET(d, a, b, c, 3, 10, T54); - SET(c, d, a, b, 10, 15, T55); - SET(b, c, d, a, 1, 21, T56); - SET(a, b, c, d, 8, 6, T57); - SET(d, a, b, c, 15, 10, T58); - SET(c, d, a, b, 6, 15, T59); - SET(b, c, d, a, 13, 21, T60); - SET(a, b, c, d, 4, 6, T61); - SET(d, a, b, c, 11, 10, T62); - SET(c, d, a, b, 2, 15, T63); - SET(b, c, d, a, 9, 21, T64); -#undef SET - - /* Then perform the following additions. (That is increment each - of the four registers by the value it had before this block - was started.) */ - pms->abcd[0] += a; - pms->abcd[1] += b; - pms->abcd[2] += c; - pms->abcd[3] += d; -} - -void -md5_init(md5_state_t *pms) -{ - pms->count[0] = pms->count[1] = 0; - pms->abcd[0] = 0x67452301; - pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476; - pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301; - pms->abcd[3] = 0x10325476; -} - -void -md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes) -{ - const md5_byte_t *p = data; - int left = nbytes; - int offset = (pms->count[0] >> 3) & 63; - md5_word_t nbits = (md5_word_t)(nbytes << 3); - - if (nbytes <= 0) - return; - - /* Update the message length. */ - pms->count[1] += nbytes >> 29; - pms->count[0] += nbits; - if (pms->count[0] < nbits) - pms->count[1]++; - - /* Process an initial partial block. */ - if (offset) { - int copy = (offset + nbytes > 64 ? 64 - offset : nbytes); - - memcpy(pms->buf + offset, p, copy); - if (offset + copy < 64) - return; - p += copy; - left -= copy; - md5_process(pms, pms->buf); - } - - /* Process full blocks. */ - for (; left >= 64; p += 64, left -= 64) - md5_process(pms, p); - - /* Process a final partial block. */ - if (left) - memcpy(pms->buf, p, left); -} - -void -md5_finish(md5_state_t *pms, md5_byte_t digest[16]) -{ - static const md5_byte_t pad[64] = { - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - md5_byte_t data[8]; - int i; - - /* Save the length before padding. */ - for (i = 0; i < 8; ++i) - data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3)); - /* Pad to 56 bytes mod 64. */ - md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1); - /* Append the length. */ - md5_append(pms, data, 8); - for (i = 0; i < 16; ++i) - digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3)); -} - -ByteArray MD5::getHash(const ByteArray& data) { - ByteArray digest; - digest.resize(16); - - md5_state_t state; - md5_init(&state); - md5_append(&state, reinterpret_cast<const md5_byte_t*>(data.getData()), data.getSize()); - md5_finish(&state, reinterpret_cast<md5_byte_t*>(digest.getData())); - - return digest; -} - -} diff --git a/Swiften/StringCodecs/MD5.h b/Swiften/StringCodecs/MD5.h deleted file mode 100644 index 8773409..0000000 --- a/Swiften/StringCodecs/MD5.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -namespace Swift { - class ByteArray; - - class MD5 { - public: - static ByteArray getHash(const ByteArray& data); - }; -} diff --git a/Swiften/StringCodecs/PBKDF2.cpp b/Swiften/StringCodecs/PBKDF2.cpp deleted file mode 100644 index c09c10e..0000000 --- a/Swiften/StringCodecs/PBKDF2.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "Swiften/StringCodecs/PBKDF2.h" -#include "Swiften/StringCodecs/HMACSHA1.h" - -namespace Swift { - -ByteArray PBKDF2::encode(const ByteArray& password, const ByteArray& salt, int iterations) { - ByteArray u = HMACSHA1::getResult(password, salt + ByteArray("\0\0\0\1", 4)); - ByteArray result = u; - int i = 1; - while (i < iterations) { - u = HMACSHA1::getResult(password, u); - for (unsigned int j = 0; j < u.getSize(); ++j) { - result[j] ^= u[j]; - } - ++i; - } - return result; -} - -} diff --git a/Swiften/StringCodecs/PBKDF2.h b/Swiften/StringCodecs/PBKDF2.h deleted file mode 100644 index e87380d..0000000 --- a/Swiften/StringCodecs/PBKDF2.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - class PBKDF2 { - public: - static ByteArray encode(const ByteArray& password, const ByteArray& salt, int iterations); - }; -} diff --git a/Swiften/StringCodecs/SHA1.cpp b/Swiften/StringCodecs/SHA1.cpp deleted file mode 100644 index ef99d9a..0000000 --- a/Swiften/StringCodecs/SHA1.cpp +++ /dev/null @@ -1,197 +0,0 @@ -#include "Swiften/Base/Platform.h" - -#pragma GCC diagnostic ignored "-Wold-style-cast" - -/* -SHA-1 in C -By Steve Reid <steve@edmweb.com> -100% Public Domain - -Test Vectors (from FIPS PUB 180-1) -"abc" - A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D -"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" - 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1 -A million repetitions of "a" - 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F -*/ - -/* #define LITTLE_ENDIAN * This should be #define'd if true. */ -/* #define SHA1HANDSOFF * Copies data before messing with it. */ - -#include <boost/cstdint.hpp> -#include <stdio.h> -#include <string.h> - -typedef struct { - boost::uint32_t state[5]; - boost::uint32_t count[2]; - boost::uint8_t buffer[64]; -} SHA1_CTX; - -void SHA1Transform(boost::uint32_t state[5], boost::uint8_t buffer[64]); -void SHA1Init(SHA1_CTX* context); -void SHA1Update(SHA1_CTX* context, boost::uint8_t* data, unsigned int len); -void SHA1Final(boost::uint8_t digest[20], SHA1_CTX* context); - -#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits)))) - -/* blk0() and blk() perform the initial expand. */ -/* I got the idea of expanding during the round function from SSLeay */ -#ifdef SWIFTEN_LITTLE_ENDIAN -#define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \ - |(rol(block->l[i],8)&0x00FF00FF)) -#else -#define blk0(i) block->l[i] -#endif -#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \ - ^block->l[(i+2)&15]^block->l[i&15],1)) - -/* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */ -#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30); -#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30); -#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30); -#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30); -#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30); - - -/* Hash a single 512-bit block. This is the core of the algorithm. */ - -void SHA1Transform(boost::uint32_t state[5], boost::uint8_t buffer[64]) -{ -boost::uint32_t a, b, c, d, e; -typedef union { - boost::uint8_t c[64]; - boost::uint32_t l[16]; -} CHAR64LONG16; -CHAR64LONG16* block; -#ifdef SHA1HANDSOFF -static boost::uint8_t workspace[64]; - block = (CHAR64LONG16*)workspace; - memcpy(block, buffer, 64); -#else - block = reinterpret_cast<CHAR64LONG16*>(buffer); -#endif - /* Copy context->state[] to working vars */ - a = state[0]; - b = state[1]; - c = state[2]; - d = state[3]; - e = state[4]; - /* 4 rounds of 20 operations each. Loop unrolled. */ - R0(a,b,c,d,e, 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3); - R0(b,c,d,e,a, 4); R0(a,b,c,d,e, 5); R0(e,a,b,c,d, 6); R0(d,e,a,b,c, 7); - R0(c,d,e,a,b, 8); R0(b,c,d,e,a, 9); R0(a,b,c,d,e,10); R0(e,a,b,c,d,11); - R0(d,e,a,b,c,12); R0(c,d,e,a,b,13); R0(b,c,d,e,a,14); R0(a,b,c,d,e,15); - R1(e,a,b,c,d,16); R1(d,e,a,b,c,17); R1(c,d,e,a,b,18); R1(b,c,d,e,a,19); - R2(a,b,c,d,e,20); R2(e,a,b,c,d,21); R2(d,e,a,b,c,22); R2(c,d,e,a,b,23); - R2(b,c,d,e,a,24); R2(a,b,c,d,e,25); R2(e,a,b,c,d,26); R2(d,e,a,b,c,27); - R2(c,d,e,a,b,28); R2(b,c,d,e,a,29); R2(a,b,c,d,e,30); R2(e,a,b,c,d,31); - R2(d,e,a,b,c,32); R2(c,d,e,a,b,33); R2(b,c,d,e,a,34); R2(a,b,c,d,e,35); - R2(e,a,b,c,d,36); R2(d,e,a,b,c,37); R2(c,d,e,a,b,38); R2(b,c,d,e,a,39); - R3(a,b,c,d,e,40); R3(e,a,b,c,d,41); R3(d,e,a,b,c,42); R3(c,d,e,a,b,43); - R3(b,c,d,e,a,44); R3(a,b,c,d,e,45); R3(e,a,b,c,d,46); R3(d,e,a,b,c,47); - R3(c,d,e,a,b,48); R3(b,c,d,e,a,49); R3(a,b,c,d,e,50); R3(e,a,b,c,d,51); - R3(d,e,a,b,c,52); R3(c,d,e,a,b,53); R3(b,c,d,e,a,54); R3(a,b,c,d,e,55); - R3(e,a,b,c,d,56); R3(d,e,a,b,c,57); R3(c,d,e,a,b,58); R3(b,c,d,e,a,59); - R4(a,b,c,d,e,60); R4(e,a,b,c,d,61); R4(d,e,a,b,c,62); R4(c,d,e,a,b,63); - R4(b,c,d,e,a,64); R4(a,b,c,d,e,65); R4(e,a,b,c,d,66); R4(d,e,a,b,c,67); - R4(c,d,e,a,b,68); R4(b,c,d,e,a,69); R4(a,b,c,d,e,70); R4(e,a,b,c,d,71); - R4(d,e,a,b,c,72); R4(c,d,e,a,b,73); R4(b,c,d,e,a,74); R4(a,b,c,d,e,75); - R4(e,a,b,c,d,76); R4(d,e,a,b,c,77); R4(c,d,e,a,b,78); R4(b,c,d,e,a,79); - /* Add the working vars back into context.state[] */ - state[0] += a; - state[1] += b; - state[2] += c; - state[3] += d; - state[4] += e; - /* Wipe variables */ - a = b = c = d = e = 0; -} - - -/* SHA1Init - Initialize new context */ - -void SHA1Init(SHA1_CTX* context) -{ - /* SHA1 initialization constants */ - context->state[0] = 0x67452301; - context->state[1] = 0xEFCDAB89; - context->state[2] = 0x98BADCFE; - context->state[3] = 0x10325476; - context->state[4] = 0xC3D2E1F0; - context->count[0] = context->count[1] = 0; -} - - -/* Run your data through this. */ - -void SHA1Update(SHA1_CTX* context, boost::uint8_t* data, unsigned int len) -{ -unsigned int i, j; - - j = (context->count[0] >> 3) & 63; - if ((context->count[0] += len << 3) < (len << 3)) context->count[1]++; - context->count[1] += (len >> 29); - if ((j + len) > 63) { - memcpy(&context->buffer[j], data, (i = 64-j)); - SHA1Transform(context->state, context->buffer); - for ( ; i + 63 < len; i += 64) { - SHA1Transform(context->state, &data[i]); - } - j = 0; - } - else i = 0; - memcpy(&context->buffer[j], &data[i], len - i); -} - - -/* Add padding and return the message digest. */ - -void SHA1Final(boost::uint8_t digest[20], SHA1_CTX* context) -{ -boost::uint32_t i, j; -boost::uint8_t finalcount[8]; - - for (i = 0; i < 8; i++) { - finalcount[i] = (boost::uint8_t) ((context->count[(i >= 4 ? 0 : 1)] - >> ((3-(i & 3)) * 8) ) & 255); /* Endian independent */ - } - SHA1Update(context, (boost::uint8_t *)("\200"), 1); - while ((context->count[0] & 504) != 448) { - SHA1Update(context, (boost::uint8_t *)("\0"), 1); - } - SHA1Update(context, finalcount, 8); /* Should cause a SHA1Transform() */ - for (i = 0; i < 20; i++) { - digest[i] = (boost::uint8_t) - ((context->state[i>>2] >> ((3-(i & 3)) * 8) ) & 255); - } - /* Wipe variables */ - i = j = 0; - memset(context->buffer, 0, 64); - memset(context->state, 0, 20); - memset(context->count, 0, 8); - memset(&finalcount, 0, 8); -#ifdef SHA1HANDSOFF /* make SHA1Transform overwrite it's own static vars */ - SHA1Transform(context->state, context->buffer); -#endif -} - -// ----------------------------------------------------------------------------- - -#include "Swiften/StringCodecs/SHA1.h" - -namespace Swift { - -ByteArray SHA1::getHash(const ByteArray& input) { - ByteArray inputCopy(input); - ByteArray digest; - digest.resize(20); - SHA1_CTX context; - SHA1Init(&context); - SHA1Update(&context, (boost::uint8_t*) inputCopy.getData(), inputCopy.getSize()); - SHA1Final((boost::uint8_t*) digest.getData(), &context); - return digest; -} - -} diff --git a/Swiften/StringCodecs/SHA1.h b/Swiften/StringCodecs/SHA1.h deleted file mode 100644 index 9f54e8e..0000000 --- a/Swiften/StringCodecs/SHA1.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - class SHA1 { - public: - static ByteArray getHash(const ByteArray& data); - }; -} diff --git a/Swiften/StringCodecs/UnitTest/Base64Test.cpp b/Swiften/StringCodecs/UnitTest/Base64Test.cpp deleted file mode 100644 index a28a9ab..0000000 --- a/Swiften/StringCodecs/UnitTest/Base64Test.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/StringCodecs/Base64.h" - -using namespace Swift; - -class Base64Test : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(Base64Test); - CPPUNIT_TEST(testEncode); - CPPUNIT_TEST(testEncode_NonAscii); - CPPUNIT_TEST(testEncode_NoData); - CPPUNIT_TEST(testDecode); - CPPUNIT_TEST(testDecode_NoData); - CPPUNIT_TEST_SUITE_END(); - - public: - void testEncode() { - String result(Base64::encode("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890")); - CPPUNIT_ASSERT_EQUAL(String("QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejEyMzQ1Njc4OTA="), result); - } - - void testEncode_NonAscii() { - String result(Base64::encode(ByteArray("\x42\x06\xb2\x3c\xa6\xb0\xa6\x43\xd2\x0d\x89\xb0\x4f\xf5\x8c\xf7\x8b\x80\x96\xed"))); - CPPUNIT_ASSERT_EQUAL(String("QgayPKawpkPSDYmwT/WM94uAlu0="), result); - } - - void testEncode_NoData() { - String result(Base64::encode(ByteArray())); - CPPUNIT_ASSERT_EQUAL(String(""), result); - } - - void testDecode() { - ByteArray result(Base64::decode("QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejEyMzQ1Njc4OTA=")); - CPPUNIT_ASSERT_EQUAL(ByteArray("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"), result); - } - - void testDecode_NoData() { - ByteArray result(Base64::decode("")); - CPPUNIT_ASSERT_EQUAL(ByteArray(), result); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(Base64Test); diff --git a/Swiften/StringCodecs/UnitTest/HMACSHA1Test.cpp b/Swiften/StringCodecs/UnitTest/HMACSHA1Test.cpp deleted file mode 100644 index edfae10..0000000 --- a/Swiften/StringCodecs/UnitTest/HMACSHA1Test.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Base/ByteArray.h" -#include "Swiften/StringCodecs/HMACSHA1.h" - -using namespace Swift; - -class HMACSHA1Test : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(HMACSHA1Test); - CPPUNIT_TEST(testGetResult); - CPPUNIT_TEST_SUITE_END(); - - public: - void testGetResult() { - ByteArray result(HMACSHA1::getResult("foo", "foobar")); - CPPUNIT_ASSERT_EQUAL(ByteArray("\xa4\xee\xba\x8e\x63\x3d\x77\x88\x69\xf5\x68\xd0\x5a\x1b\x3d\xc7\x2b\xfd\x4\xdd"), result); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(HMACSHA1Test); diff --git a/Swiften/StringCodecs/UnitTest/HexifyTest.cpp b/Swiften/StringCodecs/UnitTest/HexifyTest.cpp deleted file mode 100644 index bf032a3..0000000 --- a/Swiften/StringCodecs/UnitTest/HexifyTest.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/StringCodecs/Hexify.h" -#include "Swiften/Base/String.h" -#include "Swiften/Base/ByteArray.h" - -using namespace Swift; - -class HexifyTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(HexifyTest); - CPPUNIT_TEST(testHexify); - CPPUNIT_TEST_SUITE_END(); - - public: - void testHexify() { - CPPUNIT_ASSERT_EQUAL(String("4206b23ca6b0a643d20d89b04ff58cf78b8096ed"), Hexify::hexify(ByteArray("\x42\x06\xb2\x3c\xa6\xb0\xa6\x43\xd2\x0d\x89\xb0\x4f\xf5\x8c\xf7\x8b\x80\x96\xed"))); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(HexifyTest); diff --git a/Swiften/StringCodecs/UnitTest/MD5Test.cpp b/Swiften/StringCodecs/UnitTest/MD5Test.cpp deleted file mode 100644 index cad8754..0000000 --- a/Swiften/StringCodecs/UnitTest/MD5Test.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/StringCodecs/MD5.h" -#include "Swiften/Base/ByteArray.h" - -using namespace Swift; - -class MD5Test : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(MD5Test); - CPPUNIT_TEST(testGetHash_Empty); - CPPUNIT_TEST(testGetHash_Alphabet); - CPPUNIT_TEST_SUITE_END(); - - public: - void testGetHash_Empty() { - ByteArray result(MD5::getHash("")); - - CPPUNIT_ASSERT_EQUAL(ByteArray("\xd4\x1d\x8c\xd9\x8f\x00\xb2\x04\xe9\x80\x09\x98\xec\xf8\x42\x7e", 16), result); - } - - void testGetHash_Alphabet() { - ByteArray result(MD5::getHash("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")); - - CPPUNIT_ASSERT_EQUAL(ByteArray("\xd1\x74\xab\x98\xd2\x77\xd9\xf5\xa5\x61\x1c\x2c\x9f\x41\x9d\x9f", 16), result); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(MD5Test); diff --git a/Swiften/StringCodecs/UnitTest/PBKDF2Test.cpp b/Swiften/StringCodecs/UnitTest/PBKDF2Test.cpp deleted file mode 100644 index 92f4fe9..0000000 --- a/Swiften/StringCodecs/UnitTest/PBKDF2Test.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/Base/ByteArray.h" -#include "Swiften/StringCodecs/PBKDF2.h" - -using namespace Swift; - -class PBKDF2Test : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(PBKDF2Test); - CPPUNIT_TEST(testGetResult_I1); - CPPUNIT_TEST(testGetResult_I2); - CPPUNIT_TEST(testGetResult_I4096); - CPPUNIT_TEST_SUITE_END(); - - public: - void testGetResult_I1() { - ByteArray result(PBKDF2::encode("password", "salt", 1)); - - CPPUNIT_ASSERT_EQUAL(ByteArray("\x0c\x60\xc8\x0f\x96\x1f\x0e\x71\xf3\xa9\xb5\x24\xaf\x60\x12\x06\x2f\xe0\x37\xa6"), result); - } - - void testGetResult_I2() { - ByteArray result(PBKDF2::encode("password", "salt", 2)); - - CPPUNIT_ASSERT_EQUAL(ByteArray("\xea\x6c\x1\x4d\xc7\x2d\x6f\x8c\xcd\x1e\xd9\x2a\xce\x1d\x41\xf0\xd8\xde\x89\x57"), result); - } - - void testGetResult_I4096() { - ByteArray result(PBKDF2::encode("password", "salt", 4096)); - - CPPUNIT_ASSERT_EQUAL(ByteArray("\x4b\x00\x79\x1\xb7\x65\x48\x9a\xbe\xad\x49\xd9\x26\xf7\x21\xd0\x65\xa4\x29\xc1", 20), result); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(PBKDF2Test); diff --git a/Swiften/StringCodecs/UnitTest/SHA1Test.cpp b/Swiften/StringCodecs/UnitTest/SHA1Test.cpp deleted file mode 100644 index 3dbf341..0000000 --- a/Swiften/StringCodecs/UnitTest/SHA1Test.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include <cppunit/extensions/HelperMacros.h> -#include <cppunit/extensions/TestFactoryRegistry.h> - -#include "Swiften/StringCodecs/SHA1.h" - -using namespace Swift; - -class SHA1Test : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(SHA1Test); - CPPUNIT_TEST(testGetHash); - CPPUNIT_TEST(testGetHash_Twice); - CPPUNIT_TEST(testGetHash_NoData); - CPPUNIT_TEST_SUITE_END(); - - public: - void testGetHash() { - ByteArray result(SHA1::getHash("client/pc//Exodus 0.9.1<http://jabber.org/protocol/caps<http://jabber.org/protocol/disco#info<http://jabber.org/protocol/disco#items<http://jabber.org/protocol/muc<")); - CPPUNIT_ASSERT_EQUAL(ByteArray("\x42\x06\xb2\x3c\xa6\xb0\xa6\x43\xd2\x0d\x89\xb0\x4f\xf5\x8c\xf7\x8b\x80\x96\xed"), result); - } - - - void testGetHash_Twice() { - ByteArray input("client/pc//Exodus 0.9.1<http://jabber.org/protocol/caps<http://jabber.org/protocol/disco#info<http://jabber.org/protocol/disco#items<http://jabber.org/protocol/muc<"); - SHA1::getHash(input); - ByteArray result(SHA1::getHash(input)); - - CPPUNIT_ASSERT_EQUAL(ByteArray("\x42\x06\xb2\x3c\xa6\xb0\xa6\x43\xd2\x0d\x89\xb0\x4f\xf5\x8c\xf7\x8b\x80\x96\xed"), result); - } - - void testGetHash_NoData() { - ByteArray result(SHA1::getHash(ByteArray())); - - CPPUNIT_ASSERT_EQUAL(ByteArray("\xda\x39\xa3\xee\x5e\x6b\x4b\x0d\x32\x55\xbf\xef\x95\x60\x18\x90\xaf\xd8\x07\x09"), result); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(SHA1Test); diff --git a/Swiften/StringPrep/SConscript b/Swiften/StringPrep/SConscript deleted file mode 100644 index 480d81a..0000000 --- a/Swiften/StringPrep/SConscript +++ /dev/null @@ -1,9 +0,0 @@ -Import("swiften_env") - -myenv = swiften_env.Clone() -myenv.MergeFlags(swiften_env["LIBIDN_FLAGS"]) - -objects = myenv.StaticObject([ - "StringPrep.cpp" - ]) -swiften_env.Append(SWIFTEN_OBJECTS = [objects]) diff --git a/Swiften/StringPrep/StringPrep.cpp b/Swiften/StringPrep/StringPrep.cpp deleted file mode 100644 index a4af208..0000000 --- a/Swiften/StringPrep/StringPrep.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "Swiften/StringPrep/StringPrep.h" - -#include <stringprep.h> -#include <vector> - -namespace Swift { - -static const int MAX_STRINGPREP_SIZE = 1024; - -const Stringprep_profile* getLibIDNProfile(StringPrep::Profile profile) { - switch(profile) { - case StringPrep::NamePrep: return stringprep_nameprep; break; - case StringPrep::XMPPNodePrep: return stringprep_xmpp_nodeprep; break; - case StringPrep::XMPPResourcePrep: return stringprep_xmpp_resourceprep; break; - case StringPrep::SASLPrep: return stringprep_saslprep; break; - } - assert(false); - return 0; -} - -String StringPrep::getPrepared(const String& s, Profile profile) { - - std::vector<char> input(s.getUTF8String().begin(), s.getUTF8String().end()); - input.resize(MAX_STRINGPREP_SIZE); - if (stringprep(&input[0], MAX_STRINGPREP_SIZE, static_cast<Stringprep_profile_flags>(0), getLibIDNProfile(profile)) == 0) { - return String(&input[0]); - } - else { - return ""; - } -} - -} diff --git a/Swiften/StringPrep/StringPrep.h b/Swiften/StringPrep/StringPrep.h deleted file mode 100644 index 7dbb03a..0000000 --- a/Swiften/StringPrep/StringPrep.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include "Swiften/Base/String.h" - -namespace Swift { - class StringPrep { - public: - enum Profile { - NamePrep, - XMPPNodePrep, - XMPPResourcePrep, - SASLPrep, - }; - - static String getPrepared(const String& s, Profile profile); - }; -} diff --git a/Swiften/TLS/OpenSSL/OpenSSLContext.cpp b/Swiften/TLS/OpenSSL/OpenSSLContext.cpp deleted file mode 100644 index 3ce8d54..0000000 --- a/Swiften/TLS/OpenSSL/OpenSSLContext.cpp +++ /dev/null @@ -1,159 +0,0 @@ -#include <vector> -#include <openssl/err.h> -#include <openssl/pkcs12.h> - -#include "Swiften/TLS/OpenSSL/OpenSSLContext.h" -#include "Swiften/TLS/PKCS12Certificate.h" - -#pragma GCC diagnostic ignored "-Wold-style-cast" - -namespace Swift { - -static const int SSL_READ_BUFFERSIZE = 8192; - -void freeX509Stack(STACK_OF(X509)* stack) { - sk_X509_free(stack); -} - -OpenSSLContext::OpenSSLContext() : state_(Start), context_(0), handle_(0), readBIO_(0), writeBIO_(0) { - ensureLibraryInitialized(); - context_ = SSL_CTX_new(TLSv1_client_method()); -} - -OpenSSLContext::~OpenSSLContext() { - SSL_free(handle_); - SSL_CTX_free(context_); -} - -void OpenSSLContext::ensureLibraryInitialized() { - static bool isLibraryInitialized = false; - if (!isLibraryInitialized) { - SSL_load_error_strings(); - SSL_library_init(); - OpenSSL_add_all_algorithms(); - isLibraryInitialized = true; - } -} - -void OpenSSLContext::connect() { - handle_ = SSL_new(context_); - // Ownership of BIOs is ransferred - readBIO_ = BIO_new(BIO_s_mem()); - writeBIO_ = BIO_new(BIO_s_mem()); - SSL_set_bio(handle_, readBIO_, writeBIO_); - - state_ = Connecting; - doConnect(); -} - -void OpenSSLContext::doConnect() { - int connectResult = SSL_connect(handle_); - int error = SSL_get_error(handle_, connectResult); - switch (error) { - case SSL_ERROR_NONE: - state_ = Connected; - onConnected(); - //X509* x = SSL_get_peer_certificate(handle_); - //std::cout << x->name << std::endl; - //const char* comp = SSL_get_current_compression(handle_); - //std::cout << "Compression: " << SSL_COMP_get_name(comp) << std::endl; - break; - case SSL_ERROR_WANT_READ: - sendPendingDataToNetwork(); - break; - default: - state_ = Error; - onError(); - } -} - -void OpenSSLContext::sendPendingDataToNetwork() { - int size = BIO_pending(writeBIO_); - if (size > 0) { - ByteArray data; - data.resize(size); - BIO_read(writeBIO_, data.getData(), size); - onDataForNetwork(data); - } -} - -void OpenSSLContext::handleDataFromNetwork(const ByteArray& data) { - BIO_write(readBIO_, data.getData(), data.getSize()); - switch (state_) { - case Connecting: - doConnect(); - break; - case Connected: - sendPendingDataToApplication(); - break; - case Start: assert(false); break; - case Error: assert(false); break; - } -} - -void OpenSSLContext::handleDataFromApplication(const ByteArray& data) { - if (SSL_write(handle_, data.getData(), data.getSize()) >= 0) { - sendPendingDataToNetwork(); - } - else { - state_ = Error; - onError(); - } -} - -void OpenSSLContext::sendPendingDataToApplication() { - ByteArray data; - data.resize(SSL_READ_BUFFERSIZE); - int ret = SSL_read(handle_, data.getData(), data.getSize()); - while (ret > 0) { - data.resize(ret); - onDataForApplication(data); - data.resize(SSL_READ_BUFFERSIZE); - ret = SSL_read(handle_, data.getData(), data.getSize()); - } - if (ret < 0 && SSL_get_error(handle_, ret) != SSL_ERROR_WANT_READ) { - state_ = Error; - onError(); - } -} - -bool OpenSSLContext::setClientCertificate(const PKCS12Certificate& certificate) { - if (certificate.isNull()) { - return false; - } - - // Create a PKCS12 structure - BIO* bio = BIO_new(BIO_s_mem()); - BIO_write(bio, certificate.getData().getData(), certificate.getData().getSize()); - boost::shared_ptr<PKCS12> pkcs12(d2i_PKCS12_bio(bio, NULL), PKCS12_free); - BIO_free(bio); - if (!pkcs12) { - return false; - } - - // Parse PKCS12 - X509 *certPtr = 0; - EVP_PKEY* privateKeyPtr = 0; - STACK_OF(X509)* caCertsPtr = 0; - int result = PKCS12_parse(pkcs12.get(), certificate.getPassword().getUTF8Data(), &privateKeyPtr, &certPtr, &caCertsPtr); - if (result != 1) { - return false; - } - boost::shared_ptr<X509> cert(certPtr, X509_free); - boost::shared_ptr<EVP_PKEY> privateKey(privateKeyPtr, EVP_PKEY_free); - boost::shared_ptr<STACK_OF(X509)> caCerts(caCertsPtr, freeX509Stack); - - // Use the key & certificates - if (SSL_CTX_use_certificate(context_, cert.get()) != 1) { - return false; - } - if (SSL_CTX_use_PrivateKey(context_, privateKey.get()) != 1) { - return false; - } - for (int i = 0; i < sk_X509_num(caCerts.get()); ++i) { - SSL_CTX_add_extra_chain_cert(context_, sk_X509_value(caCerts.get(), i)); - } - return true; -} - -} diff --git a/Swiften/TLS/OpenSSL/OpenSSLContext.h b/Swiften/TLS/OpenSSL/OpenSSLContext.h deleted file mode 100644 index 3e735df..0000000 --- a/Swiften/TLS/OpenSSL/OpenSSLContext.h +++ /dev/null @@ -1,43 +0,0 @@ -#include <openssl/ssl.h> -#include <boost/signal.hpp> -#include <boost/noncopyable.hpp> - -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - class PKCS12Certificate; - - class OpenSSLContext : boost::noncopyable { - public: - OpenSSLContext(); - ~OpenSSLContext(); - - void connect(); - bool setClientCertificate(const PKCS12Certificate& cert); - - void handleDataFromNetwork(const ByteArray&); - void handleDataFromApplication(const ByteArray&); - - public: - boost::signal<void (const ByteArray&)> onDataForNetwork; - boost::signal<void (const ByteArray&)> onDataForApplication; - boost::signal<void ()> onError; - boost::signal<void ()> onConnected; - - private: - static void ensureLibraryInitialized(); - - void doConnect(); - void sendPendingDataToNetwork(); - void sendPendingDataToApplication(); - - private: - enum State { Start, Connecting, Connected, Error }; - - State state_; - SSL_CTX* context_; - SSL* handle_; - BIO* readBIO_; - BIO* writeBIO_; - }; -} diff --git a/Swiften/TLS/PKCS12Certificate.h b/Swiften/TLS/PKCS12Certificate.h deleted file mode 100644 index 4b0e708..0000000 --- a/Swiften/TLS/PKCS12Certificate.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef SWIFTEN_PKCS12Certificate_H -#define SWIFTEN_PKCS12Certificate_H - -#include "Swiften/Base/ByteArray.h" - -namespace Swift { - class PKCS12Certificate { - public: - PKCS12Certificate() {} - - PKCS12Certificate(const String& filename, const String& password) : password_(password) { - data_.readFromFile(filename); - } - - bool isNull() const { - return data_.isEmpty(); - } - - const ByteArray& getData() const { - return data_; - } - - void setData(const ByteArray& data) { - data_ = data; - } - - const String& getPassword() const { - return password_; - } - - private: - ByteArray data_; - String password_; - }; -} - -#endif |