diff --git a/include/transport/adhoccommand.h b/include/transport/adhoccommand.h index 03bc21b8..24dbe8e6 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 a0430d0f..9f1691a5 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 ca19979e..75e31d09 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 b34a7804..c9702865 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 bc35e2e2..ac6bef9e 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 badc5dc2..9810693b 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 cf02a937..14531149 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 5aea25ec..73077910 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 c69ef923..1f01afe1 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);