db/update/Service: use DatabaseListener instead of Instance

Don't use the global variable "instance".
This commit is contained in:
Max Kellermann 2014-02-04 18:51:01 +01:00
parent c5fa8ed321
commit eec6d09959
3 changed files with 12 additions and 6 deletions

View File

@ -211,7 +211,7 @@ glue_db_init_and_load(void)
return true; return true;
SimpleDatabase &db = *(SimpleDatabase *)instance->database; SimpleDatabase &db = *(SimpleDatabase *)instance->database;
instance->update = new UpdateService(*main_loop, db); instance->update = new UpdateService(*main_loop, db, *instance);
/* run database update after daemonization? */ /* run database update after daemonization? */
return db.FileExists(); return db.FileExists();

View File

@ -27,6 +27,7 @@
#include "thread/Thread.hxx" #include "thread/Thread.hxx"
class SimpleDatabase; class SimpleDatabase;
class DatabaseListener;
/** /**
* This class manages the update queue and runs the update thread. * This class manages the update queue and runs the update thread.
@ -40,6 +41,8 @@ class UpdateService final : DeferredMonitor {
SimpleDatabase &db; SimpleDatabase &db;
DatabaseListener &listener;
Progress progress; Progress progress;
bool modified; bool modified;
@ -57,7 +60,8 @@ class UpdateService final : DeferredMonitor {
UpdateWalk walk; UpdateWalk walk;
public: public:
UpdateService(EventLoop &_loop, SimpleDatabase &_db); UpdateService(EventLoop &_loop, SimpleDatabase &_db,
DatabaseListener &_listener);
/** /**
* Returns a non-zero job id when we are currently updating * Returns a non-zero job id when we are currently updating

View File

@ -20,11 +20,11 @@
#include "config.h" #include "config.h"
#include "Service.hxx" #include "Service.hxx"
#include "UpdateDomain.hxx" #include "UpdateDomain.hxx"
#include "db/DatabaseListener.hxx"
#include "db/plugins/SimpleDatabasePlugin.hxx" #include "db/plugins/SimpleDatabasePlugin.hxx"
#include "Idle.hxx" #include "Idle.hxx"
#include "util/Error.hxx" #include "util/Error.hxx"
#include "Log.hxx" #include "Log.hxx"
#include "Main.hxx"
#include "Instance.hxx" #include "Instance.hxx"
#include "system/FatalError.hxx" #include "system/FatalError.hxx"
#include "thread/Id.hxx" #include "thread/Id.hxx"
@ -139,7 +139,7 @@ UpdateService::RunDeferred()
if (modified) if (modified)
/* send "idle" events */ /* send "idle" events */
instance->DatabaseModified(); listener.OnDatabaseModified();
auto i = queue.Pop(); auto i = queue.Pop();
if (i.IsDefined()) { if (i.IsDefined()) {
@ -150,8 +150,10 @@ UpdateService::RunDeferred()
} }
} }
UpdateService::UpdateService(EventLoop &_loop, SimpleDatabase &_db) UpdateService::UpdateService(EventLoop &_loop, SimpleDatabase &_db,
:DeferredMonitor(_loop), db(_db), progress(UPDATE_PROGRESS_IDLE), DatabaseListener &_listener)
:DeferredMonitor(_loop), db(_db), listener(_listener),
progress(UPDATE_PROGRESS_IDLE),
update_task_id(0), update_task_id(0),
walk(_loop) walk(_loop)
{ {