db/update/Service: migrate from DeferredMonitor to DeferEvent

This commit is contained in:
Max Kellermann 2017-11-10 20:58:25 +01:00
parent 13f6b1b344
commit 0db7a0c9e2
2 changed files with 13 additions and 7 deletions

View File

@ -40,7 +40,7 @@
UpdateService::UpdateService(EventLoop &_loop, SimpleDatabase &_db,
CompositeStorage &_storage,
DatabaseListener &_listener)
:DeferredMonitor(_loop),
:defer(_loop, BIND_THIS_METHOD(RunDeferred)),
db(_db), storage(_storage),
listener(_listener),
update_thread(BIND_THIS_METHOD(Task))
@ -136,7 +136,7 @@ UpdateService::Task()
else
LogDebug(update_domain, "finished");
DeferredMonitor::Schedule();
defer.Schedule();
}
void
@ -237,7 +237,7 @@ UpdateService::Enqueue(const char *path, bool discard)
* Called in the main thread after the database update is finished.
*/
void
UpdateService::RunDeferred()
UpdateService::RunDeferred() noexcept
{
assert(next.IsDefined());
assert(walk != nullptr);

View File

@ -22,7 +22,7 @@
#include "check.h"
#include "Queue.hxx"
#include "event/DeferredMonitor.hxx"
#include "event/DeferEvent.hxx"
#include "thread/Thread.hxx"
#include "Compiler.h"
@ -34,7 +34,9 @@ class CompositeStorage;
/**
* This class manages the update queue and runs the update thread.
*/
class UpdateService final : DeferredMonitor {
class UpdateService final {
DeferEvent defer;
SimpleDatabase &db;
CompositeStorage &storage;
@ -61,6 +63,10 @@ public:
~UpdateService();
EventLoop &GetEventLoop() noexcept {
return defer.GetEventLoop();
}
/**
* Returns a non-zero job id when we are currently updating
* the database.
@ -93,8 +99,8 @@ public:
void CancelMount(const char *uri);
private:
/* virtual methods from class DeferredMonitor */
virtual void RunDeferred() override;
/* DeferEvent callback */
void RunDeferred() noexcept;
/* the update thread */
void Task();