# # # patch "src/model/AutomateCommand.cpp" # from [c31727618370f788e85742edd60ae188c7a49a63] # to [4ce7f2845e63e78b9227cb9360e05f20608a27d9] # # patch "src/model/AutomateCommand.h" # from [326af203c76ca76af5a9e35bdcfbdf314e002027] # to [c8c94874519a7d87fc7dc9ea2264485f0e7f5ba0] # ============================================================ --- src/model/AutomateCommand.cpp c31727618370f788e85742edd60ae188c7a49a63 +++ src/model/AutomateCommand.cpp 4ce7f2845e63e78b9227cb9360e05f20608a27d9 @@ -21,8 +21,7 @@ #include "AutomateCommand.h" #include "Guitone.h" -AutomateCommand::AutomateCommand(const QString & db, AutomateCommandHelper * helper) - : dbPath(db) +AutomateCommand::AutomateCommand(AutomateCommandHelper * helper) { if (helper == 0) { @@ -36,11 +35,10 @@ AutomateCommand::~AutomateCommand() delete cmdHelper; } -void AutomateCommand::enqueueTask(const MonotoneTask & task) +void AutomateCommand::enqueueTask(MonotoneThread * thread, const MonotoneTask & task) { QMutexLocker locker(&lock); - MonotoneThread * thread = APP->manager()->getThread(dbPath); int threadNumber = thread->getThreadNumber(); // we want to avoid multiple thread connections if (!connectedThreads.contains(threadNumber)) @@ -60,8 +58,20 @@ void AutomateCommand::enqueueTask(const queuedCommands[threadNumber].append( thread->enqueueTask(task) ); + } +void AutomateCommand::enqueueWorkspaceTask(const WorkspacePath & ws, const MonotoneTask & task) +{ + MonotoneThread * thread = APP->manager()->getThreadForWorkspace(ws); + enqueueTask(thread, task); +} +void AutomateCommand::enqueueDatabaseTask(const DatabaseFile & db, const MonotoneTask & task) +{ + MonotoneThread * thread = APP->manager()->getThreadForDatabase(db); + enqueueTask(thread, task); +} + AutomateCommandHelper::AutomateCommandHelper(AutomateCommand * cmd) : command(cmd) {} ============================================================ --- src/model/AutomateCommand.h 326af203c76ca76af5a9e35bdcfbdf314e002027 +++ src/model/AutomateCommand.h c8c94874519a7d87fc7dc9ea2264485f0e7f5ba0 @@ -32,19 +32,18 @@ public: class AutomateCommand { public: - AutomateCommand(const QString &, AutomateCommandHelper * helper = 0); + AutomateCommand(AutomateCommandHelper * helper = 0); virtual ~AutomateCommand(); - inline QString getDbPath() const { return dbPath; } friend class AutomateCommandHelper; protected: virtual void processTaskResult(const MonotoneTask &) = 0; + void enqueueWorkspaceTask(const WorkspacePath &, const MonotoneTask &); + void enqueueDatabaseTask(const DatabaseFile &, const MonotoneTask &); -protected: - void enqueueTask(const MonotoneTask &); - private: - QString dbPath; + void enqueueTask(MonotoneThread * thread, const MonotoneTask &); + QMutex lock; QList connectedThreads; QMap > queuedCommands;