db/update/Service: use DatabaseListener instead of Instance
Don't use the global variable "instance".
This commit is contained in:
parent
c5fa8ed321
commit
eec6d09959
|
@ -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();
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue