diff --git a/include/transport/adhoccommand.h b/include/transport/adhoccommand.h index 03bc21b832ae5180ffe88134fff1cd55794eac1d..24dbe8e64929c310fc77ff3caeaf497e710bd82b 100644 --- a/include/transport/adhoccommand.h +++ b/include/transport/adhoccommand.h @@ -28,13 +28,15 @@ namespace Transport { class Component; +class UserManager; +class StorageBackend; class AdHocCommand { public: /// Creates new AdHocManager. /// \param component Transport instance associated with this AdHocManager. - AdHocCommand(Component *component, const Swift::JID &initiator, const Swift::JID &to); + AdHocCommand(Component *component, UserManager *userManager, StorageBackend *storageBackend, const Swift::JID &initiator, const Swift::JID &to); /// Destructor. virtual ~AdHocCommand(); @@ -57,6 +59,8 @@ class AdHocCommand { protected: Component *m_component; + UserManager *m_userManager; + StorageBackend *m_storageBackend; Swift::JID m_initiator; Swift::JID m_to; std::vector m_fields; diff --git a/include/transport/adhoccommandfactory.h b/include/transport/adhoccommandfactory.h index a0430d0fb3620a6369a94e8ebacb7eb83ff26a45..9f1691a5dba12d8b99bfb2fc7847c62bf46678e4 100644 --- a/include/transport/adhoccommandfactory.h +++ b/include/transport/adhoccommandfactory.h @@ -29,6 +29,8 @@ namespace Transport { class Component; +class UserManager; +class StorageBackend; class AdHocCommandFactory { public: @@ -37,7 +39,7 @@ class AdHocCommandFactory { /// Destructor. virtual ~AdHocCommandFactory() {} - virtual AdHocCommand *createAdHocCommand(Component *component, const Swift::JID &initiator, const Swift::JID &to) = 0; + virtual AdHocCommand *createAdHocCommand(Component *component, UserManager *userManager, StorageBackend *storageBackend, const Swift::JID &initiator, const Swift::JID &to) = 0; virtual std::string getNode() = 0; diff --git a/include/transport/adhocmanager.h b/include/transport/adhocmanager.h index ca19979efdc41b272831f8a827e6a2cf4c03d44a..75e31d097edfd9f6d18d244915aa43f1fb24a36f 100644 --- a/include/transport/adhocmanager.h +++ b/include/transport/adhocmanager.h @@ -33,6 +33,8 @@ class Component; class DiscoItemsResponder; class AdHocCommandFactory; class AdHocCommand; +class UserManager; +class StorageBackend; /// Listens for AdHoc commands and manages all AdHoc commands sessions class AdHocManager : public Swift::Responder { @@ -42,7 +44,7 @@ class AdHocManager : public Swift::Responder { /// Creates new AdHocManager. /// \param component Transport instance associated with this AdHocManager. - AdHocManager(Component *component, DiscoItemsResponder *discoItemsResponder); + AdHocManager(Component *component, DiscoItemsResponder *discoItemsResponder, UserManager *userManager, StorageBackend *storageBackend = NULL); /// Destructor. virtual ~AdHocManager(); @@ -70,6 +72,8 @@ class AdHocManager : public Swift::Responder { std::map m_factories; SessionsMap m_sessions; Swift::Timer::ref m_collectTimer; + UserManager *m_userManager; + StorageBackend *m_storageBackend; }; } diff --git a/include/transport/settingsadhoccommand.h b/include/transport/settingsadhoccommand.h index b34a78040e8038521b2a78ba691dcebe622a6e24..c97028658c3451b83b084983fd8f2306d3a34486 100644 --- a/include/transport/settingsadhoccommand.h +++ b/include/transport/settingsadhoccommand.h @@ -31,12 +31,14 @@ namespace Transport { class Component; +class UserManager; +class StorageBackend; class SettingsAdHocCommand : public AdHocCommand { public: typedef enum { Init, WaitingForResponse } State; - SettingsAdHocCommand(Component *component, const Swift::JID &initiator, const Swift::JID &to); + SettingsAdHocCommand(Component *component, UserManager *userManager, StorageBackend *storageBackend, const Swift::JID &initiator, const Swift::JID &to); /// Destructor. virtual ~SettingsAdHocCommand(); @@ -54,8 +56,8 @@ class SettingsAdHocCommandFactory : public AdHocCommandFactory { SettingsAdHocCommandFactory() {} virtual ~SettingsAdHocCommandFactory() {} - AdHocCommand *createAdHocCommand(Component *component, const Swift::JID &initiator, const Swift::JID &to) { - return new SettingsAdHocCommand(component, initiator, to); + AdHocCommand *createAdHocCommand(Component *component, UserManager *userManager, StorageBackend *storageBackend, const Swift::JID &initiator, const Swift::JID &to) { + return new SettingsAdHocCommand(component, userManager, storageBackend, initiator, to); } std::string getNode() { diff --git a/spectrum/src/main.cpp b/spectrum/src/main.cpp index bc35e2e2b799682fb8a44d8355d5d4a84a287814..ac6bef9ee2de564541c76aa7cbcf53288a2c9892 100644 --- a/spectrum/src/main.cpp +++ b/spectrum/src/main.cpp @@ -351,7 +351,7 @@ int main(int argc, char **argv) DiscoItemsResponder discoItemsResponder(&transport); discoItemsResponder.start(); - AdHocManager adhocmanager(&transport, &discoItemsResponder); + AdHocManager adhocmanager(&transport, &discoItemsResponder, &userManager, storageBackend); adhocmanager.start(); SettingsAdHocCommandFactory settings; diff --git a/src/adhoccommand.cpp b/src/adhoccommand.cpp index badc5dc21d4d90e2be9b3aa33c1fe07c7f7fa94d..9810693b5b1726074c41b1168d2606936dfe8568 100644 --- a/src/adhoccommand.cpp +++ b/src/adhoccommand.cpp @@ -22,6 +22,7 @@ #include "transport/adhoccommandfactory.h" #include "transport/conversation.h" #include "transport/usermanager.h" +#include "transport/storagebackend.h" #include "transport/buddy.h" #include "transport/factory.h" #include "transport/user.h" @@ -31,8 +32,10 @@ namespace Transport { DEFINE_LOGGER(logger, "AdHocCommand"); -AdHocCommand::AdHocCommand(Component *component, const Swift::JID &initiator, const Swift::JID &to) { +AdHocCommand::AdHocCommand(Component *component, UserManager *userManager, StorageBackend *storageBackend, const Swift::JID &initiator, const Swift::JID &to) { m_component = component; + m_userManager = userManager; + m_storageBackend = storageBackend; m_initiator = initiator; m_to = to; diff --git a/src/adhocmanager.cpp b/src/adhocmanager.cpp index cf02a9375dfe4cca7ae069541fe55ea473bf530e..145311497f9cbf6de91b495212686fc70fdd4957 100644 --- a/src/adhocmanager.cpp +++ b/src/adhocmanager.cpp @@ -27,14 +27,17 @@ #include "transport/factory.h" #include "transport/user.h" #include "transport/logging.h" +#include "transport/storagebackend.h" namespace Transport { DEFINE_LOGGER(logger, "AdHocManager"); -AdHocManager::AdHocManager(Component *component, DiscoItemsResponder *discoItemsResponder) : Swift::Responder(component->getIQRouter()){ +AdHocManager::AdHocManager(Component *component, DiscoItemsResponder *discoItemsResponder, UserManager *userManager, StorageBackend *storageBackend) : Swift::Responder(component->getIQRouter()){ m_component = component; m_discoItemsResponder = discoItemsResponder; + m_userManager = userManager; + m_storageBackend = storageBackend; m_collectTimer = m_component->getNetworkFactories()->getTimerFactory()->createTimer(20); m_collectTimer->onTick.connect(boost::bind(&AdHocManager::removeOldSessions, this)); @@ -125,7 +128,7 @@ bool AdHocManager::handleSetRequest(const Swift::JID& from, const Swift::JID& to } // Check if we can create command with this node else if (m_factories.find(payload->getNode()) != m_factories.end()) { - command = m_factories[payload->getNode()]->createAdHocCommand(m_component, from, to); + command = m_factories[payload->getNode()]->createAdHocCommand(m_component, m_userManager, m_storageBackend, from, to); m_sessions[from][command->getId()] = command; LOG4CXX_INFO(logger, from.toString() << ": Started new AdHoc command session with node " << payload->getNode()); } diff --git a/src/settingsadhoccommand.cpp b/src/settingsadhoccommand.cpp index 5aea25ec668381c4477c830afcd9987995282d44..730779109471350c51d8f3fb8587ec19fcb095a3 100644 --- a/src/settingsadhoccommand.cpp +++ b/src/settingsadhoccommand.cpp @@ -25,12 +25,14 @@ #include "transport/factory.h" #include "transport/user.h" #include "transport/logging.h" +#include "transport/storagebackend.h" + namespace Transport { DEFINE_LOGGER(logger, "SettingsAdHocCommand"); -SettingsAdHocCommand::SettingsAdHocCommand(Component *component, const Swift::JID &initiator, const Swift::JID &to) : AdHocCommand(component, initiator, to) { +SettingsAdHocCommand::SettingsAdHocCommand(Component *component, UserManager *userManager, StorageBackend *storageBackend, const Swift::JID &initiator, const Swift::JID &to) : AdHocCommand(component, userManager, storageBackend, initiator, to) { m_state = Init; } diff --git a/src/tests/settingsadhoccommand.cpp b/src/tests/settingsadhoccommand.cpp index c69ef923b5ccbf20182ab20a53d67e9a267c00df..1f01afe10d440e27f0d8eb8bb32341fe03172c1d 100644 --- a/src/tests/settingsadhoccommand.cpp +++ b/src/tests/settingsadhoccommand.cpp @@ -38,7 +38,7 @@ class SettingsAdHocCommandTest : public CPPUNIT_NS :: TestFixture, public BasicT void setUp (void) { setMeUp(); - adhoc = new AdHocManager(component, itemsResponder); + adhoc = new AdHocManager(component, itemsResponder, userManager); adhoc->start(); settings = new SettingsAdHocCommandFactory(); adhoc->addAdHocCommand(settings);