pass UserManager and StorageBackend to adhoc commands
This commit is contained in:
parent
974bf2de0a
commit
8bb71e5148
9 changed files with 32 additions and 12 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue