diff options
Diffstat (limited to 'bin/bbackupd/BackupDaemon.h')
-rw-r--r-- | bin/bbackupd/BackupDaemon.h | 16 |
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, |