diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-10-24 13:46:12 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-10-24 15:56:44 (GMT) |
commit | 9dccf1e0c86b10d41dd2d5f3bf71faf1bf8d77c8 (patch) | |
tree | 4d054c17e759f5f206c67fbbef1ca3e77647ba07 | |
parent | efc2bed8610f6e1b7fc29b3dd6f13137fc19bdf6 (diff) | |
download | swift-contrib-9dccf1e0c86b10d41dd2d5f3bf71faf1bf8d77c8.zip swift-contrib-9dccf1e0c86b10d41dd2d5f3bf71faf1bf8d77c8.tar.bz2 |
Created Storages interface.
-rw-r--r-- | SwifTools/Application/ApplicationPathProvider.cpp | 4 | ||||
-rw-r--r-- | SwifTools/Application/ApplicationPathProvider.h | 1 | ||||
-rw-r--r-- | Swift/Controllers/FileStoragesFactory.h | 24 | ||||
-rw-r--r-- | Swift/Controllers/MainController.cpp | 46 | ||||
-rw-r--r-- | Swift/Controllers/MainController.h | 22 | ||||
-rw-r--r-- | Swift/Controllers/StoragesFactory.h (renamed from Swiften/VCards/VCardStorageFactory.h) | 9 | ||||
-rw-r--r-- | Swift/QtUI/QtSwift.cpp | 14 | ||||
-rw-r--r-- | Swift/QtUI/QtSwift.h | 11 | ||||
-rw-r--r-- | Swiften/Client/Client.cpp | 20 | ||||
-rw-r--r-- | Swiften/Client/Client.h | 18 | ||||
-rw-r--r-- | Swiften/Client/FileStorages.cpp | 39 | ||||
-rw-r--r-- | Swiften/Client/FileStorages.h | 33 | ||||
-rw-r--r-- | Swiften/Client/MemoryStorages.cpp | 38 | ||||
-rw-r--r-- | Swiften/Client/MemoryStorages.h | 28 | ||||
-rw-r--r-- | Swiften/Client/Storages.h | 22 | ||||
-rw-r--r-- | Swiften/SConscript | 2 | ||||
-rw-r--r-- | Swiften/VCards/SConscript | 1 | ||||
-rw-r--r-- | Swiften/VCards/VCardFileStorageFactory.h | 27 | ||||
-rw-r--r-- | Swiften/VCards/VCardMemoryStorageFactory.h | 24 | ||||
-rw-r--r-- | Swiften/VCards/VCardStorageFactory.cpp | 14 |
20 files changed, 252 insertions, 145 deletions
diff --git a/SwifTools/Application/ApplicationPathProvider.cpp b/SwifTools/Application/ApplicationPathProvider.cpp index bf0a19e..2c5db7e 100644 --- a/SwifTools/Application/ApplicationPathProvider.cpp +++ b/SwifTools/Application/ApplicationPathProvider.cpp @@ -18,10 +18,6 @@ ApplicationPathProvider::ApplicationPathProvider(const String& applicationName) ApplicationPathProvider::~ApplicationPathProvider() { } -boost::filesystem::path ApplicationPathProvider::getAvatarDir() const { - return getDataDir() / "avatars"; -} - boost::filesystem::path ApplicationPathProvider::getProfileDir(const String& profile) const { boost::filesystem::path result(getHomeDir() / profile.getUTF8String()); try { diff --git a/SwifTools/Application/ApplicationPathProvider.h b/SwifTools/Application/ApplicationPathProvider.h index 7bd2630..0c2d302 100644 --- a/SwifTools/Application/ApplicationPathProvider.h +++ b/SwifTools/Application/ApplicationPathProvider.h @@ -17,7 +17,6 @@ namespace Swift { ApplicationPathProvider(const String& applicationName); virtual ~ApplicationPathProvider(); - boost::filesystem::path getAvatarDir() const; virtual boost::filesystem::path getHomeDir() const = 0; virtual boost::filesystem::path getDataDir() const = 0; virtual boost::filesystem::path getExecutableDir() const = 0; diff --git a/Swift/Controllers/FileStoragesFactory.h b/Swift/Controllers/FileStoragesFactory.h new file mode 100644 index 0000000..bd7cdfb --- /dev/null +++ b/Swift/Controllers/FileStoragesFactory.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include "Swift/Controllers/StoragesFactory.h" +#include "Swiften/Client/FileStorages.h" + +namespace Swift { + class FileStoragesFactory : public StoragesFactory { + public: + FileStoragesFactory(const boost::filesystem::path& basePath) : basePath(basePath) {} + + virtual Storages* createStorages(const JID& profile) const { + return new FileStorages(basePath, profile); + } + + private: + boost::filesystem::path basePath; + }; +} diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp index c5b55bf..a2d8331 100644 --- a/Swift/Controllers/MainController.cpp +++ b/Swift/Controllers/MainController.cpp @@ -16,9 +16,9 @@ #include "Swiften/Network/BoostIOServiceThread.h" #include "Swiften/Network/MainBoostIOServiceThread.h" #include "Swift/Controllers/BuildVersion.h" -#include "Swiften/VCards/VCardStorageFactory.h" +#include "Swift/Controllers/StoragesFactory.h" +#include "Swiften/Client/Storages.h" #include "Swiften/VCards/VCardManager.h" -#include "Swiften/VCards/VCardStorage.h" #include "Swift/Controllers/Chat/MUCSearchController.h" #include "Swift/Controllers/Chat/ChatsManager.h" #include "Swift/Controllers/XMPPEvents/EventController.h" @@ -53,9 +53,7 @@ #include "Swiften/Disco/CapsInfoGenerator.h" #include "Swiften/Disco/GetDiscoInfoRequest.h" #include "Swiften/VCards/GetVCardRequest.h" -#include "Swiften/Avatars/AvatarStorage.h" #include "Swiften/Avatars/AvatarManagerImpl.h" -#include "Swiften/Disco/CapsFileStorage.h" #include "Swiften/Disco/CapsManager.h" #include "Swiften/Disco/EntityCapsManager.h" #include "Swiften/StringCodecs/SHA1.h" @@ -83,25 +81,23 @@ MainController::MainController( XMLConsoleWidgetFactory* xmlConsoleWidgetFactory, ChatListWindowFactory* chatListWindowFactory, MUCSearchWindowFactory* mucSearchWindowFactory, - AvatarStorage* avatarStorage, - CapsStorage* capsStorage, - VCardStorageFactory* vcardStorageFactory, + StoragesFactory* storagesFactory, Dock* dock, Notifier* notifier, bool useDelayForLatency) : timerFactory_(&boostIOServiceThread_.getIOService()), idleDetector_(&idleQuerier_, &timerFactory_, 100), + storagesFactory_(storagesFactory), chatWindowFactory_(chatWindowFactory), mainWindowFactory_(mainWindowFactory), loginWindowFactory_(loginWindowFactory), settings_(settings), - vcardStorageFactory_(vcardStorageFactory), loginWindow_(NULL) , useDelayForLatency_(useDelayForLatency) { + storages_ = NULL; statusTracker_ = NULL; client_ = NULL; - vcardManager_ = NULL; avatarManager_ = NULL; capsManager_ = NULL; entityCapsManager_ = NULL; @@ -122,8 +118,6 @@ MainController::MainController( chatListWindowFactory_ = chatListWindowFactory; uiEventStream_ = new UIEventStream(); - avatarStorage_ = avatarStorage; - capsStorage_ = capsStorage; notifier_ = new TogglableNotifier(notifier); eventController_ = new EventController(); eventController_->onEventQueueLengthChange.connect(boost::bind(&MainController::handleEventQueueLengthChange, this, _1)); @@ -180,9 +174,6 @@ MainController::~MainController() { resetClient(); delete eventController_; delete notifier_; - for(VCardStorageMap::iterator i = vcardStorages_.begin(); i != vcardStorages_.end(); ++i) { - delete i->second; - } } void MainController::resetClient() { @@ -213,10 +204,10 @@ void MainController::resetClient() { avatarManager_ = NULL; delete nickResolver_; nickResolver_ = NULL; - delete vcardManager_; - vcardManager_ = NULL; delete client_; client_ = NULL; + delete storages_; + storages_ = NULL; delete statusTracker_; statusTracker_ = NULL; delete profileSettings_; @@ -288,7 +279,7 @@ void MainController::handleConnected() { discoInfoRequest->onResponse.connect(boost::bind(&MainController::handleServerDiscoInfoResponse, this, _1, _2)); discoInfoRequest->send(); - vcardManager_->requestOwnVCard(); + client_->getVCardManager()->requestOwnVCard(); rosterController_->setEnabled(true); /* Send presence later to catch all the incoming presences. */ @@ -390,7 +381,8 @@ void MainController::performLoginFromCachedCredentials() { statusTracker_ = new StatusTracker(); } if (!client_) { - client_ = new Swift::Client(jid_, password_); + storages_ = storagesFactory_->createStorages(jid_); + client_ = new Swift::Client(jid_, password_, storages_); client_->onDataRead.connect(boost::bind(&XMLConsoleController::handleDataRead, xmlConsoleController_, _1)); client_->onDataWritten.connect(boost::bind(&XMLConsoleController::handleDataWritten, xmlConsoleController_, _1)); client_->onError.connect(boost::bind(&MainController::handleError, this, _1)); @@ -398,11 +390,10 @@ void MainController::performLoginFromCachedCredentials() { client_->setSoftwareVersion(CLIENT_NAME, buildVersion); - vcardManager_ = new VCardManager(jid_, client_->getIQRouter(), getVCardStorageForProfile(jid_)); - vcardManager_->onVCardChanged.connect(boost::bind(&MainController::handleVCardReceived, this, _1, _2)); - nickResolver_ = new NickResolver(this->jid_.toBare(), client_->getRoster(), vcardManager_, client_->getMUCRegistry()); - avatarManager_ = new AvatarManagerImpl(vcardManager_, client_->getStanzaChannel(), avatarStorage_, client_->getMUCRegistry()); - capsManager_ = new CapsManager(capsStorage_, client_->getStanzaChannel(), client_->getIQRouter()); + client_->getVCardManager()->onVCardChanged.connect(boost::bind(&MainController::handleVCardReceived, this, _1, _2)); + nickResolver_ = new NickResolver(this->jid_.toBare(), client_->getRoster(), client_->getVCardManager(), client_->getMUCRegistry()); + avatarManager_ = new AvatarManagerImpl(client_->getVCardManager(), client_->getStanzaChannel(), storages_->getAvatarStorage(), client_->getMUCRegistry()); + capsManager_ = new CapsManager(storages_->getCapsStorage(), client_->getStanzaChannel(), client_->getIQRouter()); entityCapsManager_ = new EntityCapsManager(capsManager_, client_->getStanzaChannel()); presenceNotifier_ = new PresenceNotifier(client_->getStanzaChannel(), notifier_, client_->getMUCRegistry(), avatarManager_, nickResolver_, client_->getPresenceOracle(), &timerFactory_); presenceNotifier_->onNotificationActivated.connect(boost::bind(&MainController::handleNotificationClicked, this, _1)); @@ -541,14 +532,5 @@ void MainController::handleNotificationClicked(const JID& jid) { uiEventStream_->send(boost::shared_ptr<UIEvent>(new RequestChatUIEvent(jid))); } -VCardStorage* MainController::getVCardStorageForProfile(const JID& jid) { - String profile = jid.toBare().toString(); - std::pair<VCardStorageMap::iterator, bool> r = vcardStorages_.insert(std::make_pair<String, VCardStorage*>(profile, NULL)); - if (r.second) { - r.first->second = vcardStorageFactory_->createVCardStorage(profile); - } - return r.first->second; -} - } diff --git a/Swift/Controllers/MainController.h b/Swift/Controllers/MainController.h index e04123c..0a14993 100644 --- a/Swift/Controllers/MainController.h +++ b/Swift/Controllers/MainController.h @@ -28,10 +28,6 @@ #include "Swift/Controllers/UIEvents/UIEvent.h" namespace Swift { - class AvatarStorage; - class CapsStorage; - class VCardStorage; - class VCardManager; class Application; class Client; class ChatWindowFactory; @@ -67,8 +63,9 @@ namespace Swift { class MUCSearchController; class MUCSearchWindowFactory; class StatusTracker; - class VCardStorageFactory; class Dock; + class Storages; + class StoragesFactory; class MainController { public: @@ -83,9 +80,7 @@ namespace Swift { XMLConsoleWidgetFactory* xmlConsoleWidgetFactory, ChatListWindowFactory* chatListWindowFactory_, MUCSearchWindowFactory* mucSearchWindowFactory, - AvatarStorage* avatarStorage, - CapsStorage* capsStorage, - VCardStorageFactory* vcardStorageFactory, + StoragesFactory* storagesFactory, Dock* dock, Notifier* notifier, bool useDelayForLatency); @@ -116,13 +111,13 @@ namespace Swift { void setManagersOffline(); void handleNotificationClicked(const JID& jid); - VCardStorage* getVCardStorageForProfile(const JID& jid); - private: BoostIOServiceThread boostIOServiceThread_; BoostTimerFactory timerFactory_; PlatformIdleQuerier idleQuerier_; ActualIdleDetector idleDetector_; + StoragesFactory* storagesFactory_; + Storages* storages_; Client* client_; ChatWindowFactory* chatWindowFactory_; MainWindowFactory* mainWindowFactory_; @@ -130,10 +125,6 @@ namespace Swift { EventWindowFactory* eventWindowFactory_; SettingsProvider *settings_; ProfileSettingsProvider* profileSettings_; - AvatarStorage* avatarStorage_; - CapsStorage* capsStorage_; - VCardStorageFactory* vcardStorageFactory_; - VCardManager* vcardManager_; Dock* dock_; TogglableNotifier* notifier_; PresenceNotifier* presenceNotifier_; @@ -167,8 +158,5 @@ namespace Swift { Timer::ref reconnectTimer_; StatusTracker* statusTracker_; bool myStatusLooksOnline_; - - typedef std::map<String, VCardStorage*> VCardStorageMap; - VCardStorageMap vcardStorages_; }; } diff --git a/Swiften/VCards/VCardStorageFactory.h b/Swift/Controllers/StoragesFactory.h index 7bef87b..441a4e9 100644 --- a/Swiften/VCards/VCardStorageFactory.h +++ b/Swift/Controllers/StoragesFactory.h @@ -7,13 +7,12 @@ #pragma once namespace Swift { - class VCardStorage; - class String; + class Storages; - class VCardStorageFactory { + class StoragesFactory { public: - virtual ~VCardStorageFactory(); + virtual ~StoragesFactory() {} - virtual VCardStorage* createVCardStorage(const String& profile) = 0; + virtual Storages* createStorages(const JID& profile) const = 0; }; } diff --git a/Swift/QtUI/QtSwift.cpp b/Swift/QtUI/QtSwift.cpp index d9879a2..d61f94c 100644 --- a/Swift/QtUI/QtSwift.cpp +++ b/Swift/QtUI/QtSwift.cpp @@ -26,9 +26,9 @@ #include "SwifTools/Application/PlatformApplicationPathProvider.h" #include "Swiften/Avatars/AvatarFileStorage.h" #include "Swiften/Disco/CapsFileStorage.h" -#include "Swiften/VCards/VCardFileStorageFactory.h" #include "Swiften/Base/String.h" #include "Swiften/Base/Platform.h" +#include "Swift/Controllers/FileStoragesFactory.h" #include "Swiften/Elements/Presence.h" #include "Swiften/Client/Client.h" #include "Swift/Controllers/MainController.h" @@ -95,9 +95,7 @@ QtSwift::QtSwift(po::variables_map options) : autoUpdater_(NULL) { tabs_ = options.count("no-tabs") && !(splitter_ > 0) ? NULL : new QtChatTabs(); settings_ = new QtSettingsProvider(); applicationPathProvider_ = new PlatformApplicationPathProvider(SWIFT_APPLICATION_NAME); - avatarStorage_ = new AvatarFileStorage(applicationPathProvider_->getAvatarDir()); - vcardStorageFactory_ = new VCardFileStorageFactory(applicationPathProvider_->getDataDir()); - capsStorage_ = new CapsFileStorage(applicationPathProvider_->getDataDir() / "caps"); + storagesFactory_ = new FileStoragesFactory(applicationPathProvider_->getDataDir()); chatWindowFactory_ = new QtChatWindowFactory(splitter_, settings_, tabs_, ""); soundPlayer_ = new QtSoundPlayer(applicationPathProvider_); #if defined(HAVE_GROWL) @@ -147,9 +145,7 @@ QtSwift::QtSwift(po::variables_map options) : autoUpdater_(NULL) { xmlConsoleWidgetFactory, chatListWindowFactory, mucSearchWindowFactory, - avatarStorage_, - capsStorage_, - vcardStorageFactory_, + storagesFactory_, dock_, notifier_, options.count("latency-debug") > 0); @@ -197,9 +193,7 @@ QtSwift::~QtSwift() { foreach (QtChatListWindowFactory* factory, chatListWindowFactories_) { delete factory; } - delete capsStorage_; - delete avatarStorage_; - delete vcardStorageFactory_; + delete storagesFactory_; } } diff --git a/Swift/QtUI/QtSwift.h b/Swift/QtUI/QtSwift.h index d72faaa..59fa746 100644 --- a/Swift/QtUI/QtSwift.h +++ b/Swift/QtUI/QtSwift.h @@ -4,8 +4,7 @@ * See Documentation/Licenses/GPLv3.txt for more information. */ -#ifndef SWIFT_QtSwift_H -#define SWIFT_QtSwift_H +#pragma once #include <boost/program_options/variables_map.hpp> #include <boost/program_options/options_description.hpp> @@ -31,7 +30,7 @@ class QSplitter; namespace Swift { class Dock; class Notifier; - class VCardStorageFactory; + class StoragesFactory; class AutoUpdater; class ApplicationPathProvider; class AvatarStorage; @@ -70,9 +69,7 @@ namespace Swift { Dock* dock_; QtChatTabs* tabs_; ApplicationPathProvider* applicationPathProvider_; - AvatarStorage* avatarStorage_; - CapsStorage* capsStorage_; - VCardStorageFactory* vcardStorageFactory_; + StoragesFactory* storagesFactory_; AutoUpdater* autoUpdater_; Notifier* notifier_; #if defined(SWIFTEN_PLATFORM_MACOSX) @@ -83,5 +80,3 @@ namespace Swift { #endif }; } - -#endif diff --git a/Swiften/Client/Client.cpp b/Swiften/Client/Client.cpp index 63cd89f..7363c3f 100644 --- a/Swiften/Client/Client.cpp +++ b/Swiften/Client/Client.cpp @@ -12,10 +12,14 @@ #include "Swiften/Presence/PresenceOracle.h" #include "Swiften/Presence/PresenceSender.h" #include "Swiften/MUC/MUCRegistry.h" +#include "Swiften/Client/MemoryStorages.h" +#include "Swiften/VCards/VCardManager.h" namespace Swift { -Client::Client(const JID& jid, const String& password) : CoreClient(jid, password) { +Client::Client(const JID& jid, const String& password, Storages* storages) : CoreClient(jid, password), storages(storages) { + memoryStorages = new MemoryStorages(); + softwareVersionResponder = new SoftwareVersionResponder(getIQRouter()); softwareVersionResponder->start(); @@ -29,9 +33,13 @@ Client::Client(const JID& jid, const String& password) : CoreClient(jid, passwor presenceSender = new PresenceSender(getStanzaChannel()); mucRegistry = new MUCRegistry(); + + vcardManager = new VCardManager(jid, getIQRouter(), getStorages()->getVCardStorage()); } Client::~Client() { + delete vcardManager; + delete mucRegistry; delete presenceSender; @@ -42,6 +50,8 @@ Client::~Client() { softwareVersionResponder->stop(); delete softwareVersionResponder; + + delete memoryStorages; } XMPPRoster* Client::getRoster() const { @@ -65,4 +75,12 @@ Presence::ref Client::getHighestPriorityPresence(const JID& bareJID) const { return presenceOracle->getHighestPriorityPresence(bareJID); } +Storages* Client::getStorages() const { + if (storages) { + return storages; + } + return memoryStorages; +} + + } diff --git a/Swiften/Client/Client.h b/Swiften/Client/Client.h index 2b4aa45..22fc636 100644 --- a/Swiften/Client/Client.h +++ b/Swiften/Client/Client.h @@ -16,16 +16,22 @@ namespace Swift { class PresenceOracle; class PresenceSender; class MUCRegistry; + class Storages; + class MemoryStorages; + class VCardManager; /** * Provides the core functionality for writing XMPP client software. * * Besides connecting to an XMPP server, this class also provides interfaces for * performing most tasks on the XMPP network. + * + * \param storages The interfaces for storing cache information etc. If this is NULL, + * all data will be stored in memory (and be lost on shutdown) */ class Client : public CoreClient { public: - Client(const JID& jid, const String& password); + Client(const JID& jid, const String& password, Storages* storages = NULL); ~Client(); @@ -80,6 +86,10 @@ namespace Swift { return mucRegistry; } + VCardManager* getVCardManager() const { + return vcardManager; + } + public: /** * This signal is emitted when a JID changes presence. @@ -92,11 +102,17 @@ namespace Swift { boost::signal<void (const JID&, const String&)> onPresenceSubscriptionRequest; private: + Storages* getStorages() const; + + private: + Storages* storages; + MemoryStorages* memoryStorages; SoftwareVersionResponder* softwareVersionResponder; XMPPRosterImpl* roster; XMPPRosterController* rosterController; PresenceOracle* presenceOracle; PresenceSender* presenceSender; MUCRegistry* mucRegistry; + VCardManager* vcardManager; }; } diff --git a/Swiften/Client/FileStorages.cpp b/Swiften/Client/FileStorages.cpp new file mode 100644 index 0000000..9f2dda0 --- /dev/null +++ b/Swiften/Client/FileStorages.cpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include "Swiften/Client/FileStorages.h" +#include "Swiften/VCards/VCardFileStorage.h" +#include "Swiften/Avatars/AvatarFileStorage.h" +#include "Swiften/Disco/CapsFileStorage.h" + +namespace Swift { + +FileStorages::FileStorages(const boost::filesystem::path& baseDir, const JID& jid) { + String profile = jid.toBare(); + vcardStorage = new VCardFileStorage(baseDir / profile.getUTF8String() / "vcards"); + capsStorage = new CapsFileStorage(baseDir / "caps"); + avatarStorage = new AvatarFileStorage(baseDir / "avatars"); +} + +FileStorages::~FileStorages() { + delete avatarStorage; + delete capsStorage; + delete vcardStorage; +} + +VCardStorage* FileStorages::getVCardStorage() const { + return vcardStorage; +} + +CapsStorage* FileStorages::getCapsStorage() const { + return capsStorage; +} + +AvatarStorage* FileStorages::getAvatarStorage() const { + return avatarStorage; +} + +} diff --git a/Swiften/Client/FileStorages.h b/Swiften/Client/FileStorages.h new file mode 100644 index 0000000..f8c3162 --- /dev/null +++ b/Swiften/Client/FileStorages.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include <boost/filesystem.hpp> + +#include "Swiften/Client/Storages.h" + +namespace Swift { + class VCardFileStorage; + class AvatarFileStorage; + class CapsFileStorage; + class JID; + + class FileStorages : public Storages { + public: + FileStorages(const boost::filesystem::path& baseDir, const JID& jid); + ~FileStorages(); + + virtual VCardStorage* getVCardStorage() const; + virtual AvatarStorage* getAvatarStorage() const; + virtual CapsStorage* getCapsStorage() const; + + private: + VCardFileStorage* vcardStorage; + AvatarFileStorage* avatarStorage; + CapsFileStorage* capsStorage; + }; +} diff --git a/Swiften/Client/MemoryStorages.cpp b/Swiften/Client/MemoryStorages.cpp new file mode 100644 index 0000000..5f6371b --- /dev/null +++ b/Swiften/Client/MemoryStorages.cpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include "Swiften/Client/MemoryStorages.h" +#include "Swiften/VCards/VCardMemoryStorage.h" +#include "Swiften/Avatars/AvatarMemoryStorage.h" +#include "Swiften/Disco/CapsMemoryStorage.h" + +namespace Swift { + +MemoryStorages::MemoryStorages() { + vcardStorage = new VCardMemoryStorage(); + capsStorage = new CapsMemoryStorage(); + avatarStorage = new AvatarMemoryStorage(); +} + +MemoryStorages::~MemoryStorages() { + delete avatarStorage; + delete capsStorage; + delete vcardStorage; +} + +VCardStorage* MemoryStorages::getVCardStorage() const { + return vcardStorage; +} + +CapsStorage* MemoryStorages::getCapsStorage() const { + return capsStorage; +} + +AvatarStorage* MemoryStorages::getAvatarStorage() const { + return avatarStorage; +} + +} diff --git a/Swiften/Client/MemoryStorages.h b/Swiften/Client/MemoryStorages.h new file mode 100644 index 0000000..13f41d1 --- /dev/null +++ b/Swiften/Client/MemoryStorages.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include "Swiften/Client/Storages.h" + +namespace Swift { + class VCardMemoryStorage; + + class MemoryStorages : public Storages { + public: + MemoryStorages(); + ~MemoryStorages(); + + virtual VCardStorage* getVCardStorage() const; + virtual AvatarStorage* getAvatarStorage() const; + virtual CapsStorage* getCapsStorage() const; + + private: + VCardMemoryStorage* vcardStorage; + AvatarStorage* avatarStorage; + CapsStorage* capsStorage; + }; +} diff --git a/Swiften/Client/Storages.h b/Swiften/Client/Storages.h new file mode 100644 index 0000000..6f286ca --- /dev/null +++ b/Swiften/Client/Storages.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +namespace Swift { + class VCardStorage; + class AvatarStorage; + class CapsStorage; + + class Storages { + public: + virtual ~Storages() {} + + virtual VCardStorage* getVCardStorage() const = 0; + virtual AvatarStorage* getAvatarStorage() const = 0; + virtual CapsStorage* getCapsStorage() const = 0; + }; +} diff --git a/Swiften/SConscript b/Swiften/SConscript index 12703fc..543029d 100644 --- a/Swiften/SConscript +++ b/Swiften/SConscript @@ -33,6 +33,8 @@ if env["SCONS_STAGE"] == "build" : "Client/CoreClient.cpp", "Client/Client.cpp", "Client/ClientSession.cpp", + "Client/MemoryStorages.cpp", + "Client/FileStorages.cpp", "Compress/ZLibCodecompressor.cpp", "Compress/ZLibDecompressor.cpp", "Compress/ZLibCompressor.cpp", diff --git a/Swiften/VCards/SConscript b/Swiften/VCards/SConscript index e83e633..13be7d3 100644 --- a/Swiften/VCards/SConscript +++ b/Swiften/VCards/SConscript @@ -4,6 +4,5 @@ objects = swiften_env.StaticObject([ "VCardManager.cpp", "VCardStorage.cpp", "VCardFileStorage.cpp", - "VCardStorageFactory.cpp", ]) swiften_env.Append(SWIFTEN_OBJECTS = [objects]) diff --git a/Swiften/VCards/VCardFileStorageFactory.h b/Swiften/VCards/VCardFileStorageFactory.h deleted file mode 100644 index 27e50af..0000000 --- a/Swiften/VCards/VCardFileStorageFactory.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2010 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. - */ - -#pragma once - -#include <boost/filesystem.hpp> - -#include "Swiften/VCards/VCardStorageFactory.h" -#include "Swiften/VCards/VCardFileStorage.h" - -namespace Swift { - class VCardFileStorageFactory : public VCardStorageFactory { - public: - VCardFileStorageFactory(boost::filesystem::path base) : base(base) { - } - - virtual VCardStorage* createVCardStorage(const String& profile) { - return new VCardFileStorage(base / profile.getUTF8String() / "vcards"); - } - - private: - boost::filesystem::path base; - }; -} diff --git a/Swiften/VCards/VCardMemoryStorageFactory.h b/Swiften/VCards/VCardMemoryStorageFactory.h deleted file mode 100644 index d48794d..0000000 --- a/Swiften/VCards/VCardMemoryStorageFactory.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2010 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. - */ - -#pragma once - -#include <boost/filesystem.hpp> - -#include "Swiften/VCards/VCardStorageFactory.h" -#include "Swiften/VCards/VCardMemoryStorage.h" - -namespace Swift { - class VCardMemoryStorageFactory : public VCardStorageFactory { - public: - VCardMemoryStorageFactory() { - } - - virtual VCardStorage* createVCardStorage(const String& profile) { - return new VCardMemoryStorage(); - } - }; -} diff --git a/Swiften/VCards/VCardStorageFactory.cpp b/Swiften/VCards/VCardStorageFactory.cpp deleted file mode 100644 index 64a3e88..0000000 --- a/Swiften/VCards/VCardStorageFactory.cpp +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright (c) 2010 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. - */ - -#include "Swiften/VCards/VCardStorageFactory.h" - -namespace Swift { - -VCardStorageFactory::~VCardStorageFactory() { -} - -} |