pass UserManager and StorageBackend to adhoc commands

This commit is contained in:
HanzZ 2012-08-17 10:19:21 +02:00
parent 974bf2de0a
commit 8bb71e5148
9 changed files with 32 additions and 12 deletions

View file

@ -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<Swift::FormField::ref> m_fields;

View file

@ -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;

View file

@ -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<Swift::Command> {
@ -42,7 +44,7 @@ class AdHocManager : public Swift::Responder<Swift::Command> {
/// 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<Swift::Command> {
std::map<std::string, AdHocCommandFactory *> m_factories;
SessionsMap m_sessions;
Swift::Timer::ref m_collectTimer;
UserManager *m_userManager;
StorageBackend *m_storageBackend;
};
}

View file

@ -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() {

View file

@ -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;

View file

@ -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;

View file

@ -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<Swift::Command>(component->getIQRouter()){
AdHocManager::AdHocManager(Component *component, DiscoItemsResponder *discoItemsResponder, UserManager *userManager, StorageBackend *storageBackend) : Swift::Responder<Swift::Command>(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());
}

View file

@ -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;
}

View file

@ -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);