summaryrefslogtreecommitdiff
path: root/bin/bbackupd/BackupDaemon.h
diff options
context:
space:
mode:
Diffstat (limited to 'bin/bbackupd/BackupDaemon.h')
-rw-r--r--bin/bbackupd/BackupDaemon.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/bin/bbackupd/BackupDaemon.h b/bin/bbackupd/BackupDaemon.h
index 1d3c991e..5a811f7e 100644
--- a/bin/bbackupd/BackupDaemon.h
+++ b/bin/bbackupd/BackupDaemon.h
@@ -25,6 +25,7 @@
#include "TLSContext.h"
#include "autogen_BackupProtocol.h"
+#include "autogen_BackupStoreException.h"
#ifdef WIN32
#include "WinNamedPipeListener.h"
@@ -38,6 +39,8 @@
# include <VsBackup.h>
#endif
+#define COMMAND_SOCKET_POLL_INTERVAL 1000
+
class BackupClientDirectoryRecord;
class BackupClientContext;
class Configuration;
@@ -55,7 +58,7 @@ class Archive;
//
// --------------------------------------------------------------------------
class BackupDaemon : public Daemon, ProgressNotifier, LocationResolver,
-RunStatusProvider, SysadminNotifier
+RunStatusProvider, SysadminNotifier, BackgroundTask
{
public:
BackupDaemon();
@@ -232,12 +235,15 @@ public:
void SetLocationResolver (LocationResolver* p) { mpLocationResolver = p; }
void SetRunStatusProvider(RunStatusProvider* p) { mpRunStatusProvider = p; }
void SetSysadminNotifier (SysadminNotifier* p) { mpSysadminNotifier = p; }
+ virtual bool RunBackgroundTask(State state, uint64_t progress,
+ uint64_t maximum);
private:
ProgressNotifier* mpProgressNotifier;
LocationResolver* mpLocationResolver;
RunStatusProvider* mpRunStatusProvider;
SysadminNotifier* mpSysadminNotifier;
+ std::auto_ptr<Timer> mapCommandSocketPollTimer;
/* ProgressNotifier implementation */
public:
@@ -250,7 +256,13 @@ public:
if (mLogAllFileAccess)
{
BOX_INFO("Scanning directory: " << rLocalPath);
- }
+ }
+
+ if (!RunBackgroundTask(BackgroundTask::Scanning_Dirs, 0, 0))
+ {
+ THROW_EXCEPTION(BackupStoreException,
+ CancelledByBackgroundTask);
+ }
}
virtual void NotifyDirStatFailed(
const BackupClientDirectoryRecord* pDirRecord,