summaryrefslogtreecommitdiff
path: root/bin/bbstored
diff options
context:
space:
mode:
authorChris Wilson <chris+github@qwirx.com>2006-08-30 18:37:38 +0000
committerChris Wilson <chris+github@qwirx.com>2006-08-30 18:37:38 +0000
commit7286b52c4b2f703d8862088b1197bb848bba36da (patch)
treeb5f922973e497eaafeacaffeac36e379ec2e93b6 /bin/bbstored
parent27bb0b1740173c7c6b7b313678abf3760f94402b (diff)
* bin/bbstored/BBStoreDHousekeeping.cpp
- Revert to trunk
Diffstat (limited to 'bin/bbstored')
-rw-r--r--bin/bbstored/BBStoreDHousekeeping.cpp174
1 files changed, 68 insertions, 106 deletions
diff --git a/bin/bbstored/BBStoreDHousekeeping.cpp b/bin/bbstored/BBStoreDHousekeeping.cpp
index 86b2468b..d3656630 100644
--- a/bin/bbstored/BBStoreDHousekeeping.cpp
+++ b/bin/bbstored/BBStoreDHousekeeping.cpp
@@ -10,10 +10,7 @@
#include "Box.h"
#include <stdio.h>
-
-#ifdef HAVE_SYSLOG_H
#include <syslog.h>
-#endif
#include "BackupStoreDaemon.h"
#include "BackupStoreAccountDatabase.h"
@@ -32,128 +29,95 @@
// Created: 11/12/03
//
// --------------------------------------------------------------------------
-void BackupStoreDaemon::HousekeepingInit()
-{
-
- mLastHousekeepingRun = 0;
-}
-
-#ifndef WIN32
void BackupStoreDaemon::HousekeepingProcess()
{
- HousekeepingInit();
-
// Get the time between housekeeping runs
const Configuration &rconfig(GetConfiguration());
int64_t housekeepingInterval = SecondsToBoxTime(rconfig.GetKeyValueInt("TimeBetweenHousekeeping"));
+
+ int64_t lastHousekeepingRun = 0;
while(!StopRun())
{
- RunHousekeepingIfNeeded();
-
- // Calculate how long should wait before doing the next housekeeping run
+ // Time now
int64_t timeNow = GetCurrentBoxTime();
- time_t secondsToGo = BoxTimeToSeconds((mLastHousekeepingRun + housekeepingInterval) - timeNow);
- if(secondsToGo < 1) secondsToGo = 1;
- if(secondsToGo > 60) secondsToGo = 60;
- int32_t millisecondsToGo = ((int)secondsToGo) * 1000;
-
- // Check to see if there's any message pending
- CheckForInterProcessMsg(0 /* no account */, millisecondsToGo);
- }
-}
-#endif
-
-void BackupStoreDaemon::RunHousekeepingIfNeeded()
-{
- // Get the time between housekeeping runs
- const Configuration &rconfig(GetConfiguration());
- int64_t housekeepingInterval = SecondsToBoxTime(rconfig.GetKeyValueInt("TimeBetweenHousekeeping"));
-
- // Time now
- int64_t timeNow = GetCurrentBoxTime();
- // Do housekeeping if the time interval has elapsed since the last check
- if((timeNow - mLastHousekeepingRun) < housekeepingInterval)
- {
- return;
- }
-
- // Store the time
- mLastHousekeepingRun = timeNow;
- ::syslog(LOG_INFO, "Starting housekeeping");
+ // Do housekeeping if the time interval has elapsed since the last check
+ if((timeNow - lastHousekeepingRun) >= housekeepingInterval)
+ {
+ // Store the time
+ lastHousekeepingRun = timeNow;
+ ::syslog(LOG_INFO, "Starting housekeeping");
- // Get the list of accounts
- std::vector<int32_t> accounts;
- if(mpAccountDatabase)
- {
- mpAccountDatabase->GetAllAccountIDs(accounts);
- }
+ // Get the list of accounts
+ std::vector<int32_t> accounts;
+ if(mpAccountDatabase)
+ {
+ mpAccountDatabase->GetAllAccountIDs(accounts);
+ }
- SetProcessTitle("housekeeping, active");
+ SetProcessTitle("housekeeping, active");
- // Check them all
- for(std::vector<int32_t>::const_iterator i = accounts.begin(); i != accounts.end(); ++i)
- {
- try
- {
- if(mpAccounts)
+ // Check them all
+ for(std::vector<int32_t>::const_iterator i = accounts.begin(); i != accounts.end(); ++i)
{
- // Get the account root
- std::string rootDir;
- int discSet = 0;
- mpAccounts->GetAccountRoot(*i, rootDir, discSet);
+ try
+ {
+ if(mpAccounts)
+ {
+ // Get the account root
+ std::string rootDir;
+ int discSet = 0;
+ mpAccounts->GetAccountRoot(*i, rootDir, discSet);
+
+ // Do housekeeping on this account
+ HousekeepStoreAccount housekeeping(*i, rootDir, discSet, *this);
+ housekeeping.DoHousekeeping();
+ }
+ }
+ catch(BoxException &e)
+ {
+ ::syslog(LOG_ERR, "while housekeeping account %08X, exception %s (%d/%d) -- aborting housekeeping run for this account",
+ *i, e.what(), e.GetType(), e.GetSubType());
+ }
+ catch(std::exception &e)
+ {
+ ::syslog(LOG_ERR, "while housekeeping account %08X, exception %s -- aborting housekeeping run for this account",
+ *i, e.what());
+ }
+ catch(...)
+ {
+ ::syslog(LOG_ERR, "while housekeeping account %08X, unknown exception -- aborting housekeeping run for this account",
+ *i);
+ }
- // Do housekeeping on this account
- HousekeepStoreAccount housekeeping(*i, rootDir, discSet, *this);
- housekeeping.DoHousekeeping();
+ // Check to see if there's any message pending
+ CheckForInterProcessMsg(0 /* no account */);
+
+ // Stop early?
+ if(StopRun())
+ {
+ break;
+ }
}
+
+ ::syslog(LOG_INFO, "Finished housekeeping");
}
- catch(BoxException &e)
- {
- ::syslog(LOG_ERR, "while housekeeping account %08X, exception %s (%d/%d) -- aborting housekeeping run for this account",
- *i, e.what(), e.GetType(), e.GetSubType());
- }
- catch(std::exception &e)
- {
- ::syslog(LOG_ERR, "while housekeeping account %08X, exception %s -- aborting housekeeping run for this account",
- *i, e.what());
- }
- catch(...)
- {
- ::syslog(LOG_ERR, "while housekeeping account %08X, unknown exception -- aborting housekeeping run for this account",
- *i);
- }
+
+ // Placed here for accuracy, if StopRun() is true, for example.
+ SetProcessTitle("housekeeping, idle");
+
+ // Calculate how long should wait before doing the next housekeeping run
+ timeNow = GetCurrentBoxTime();
+ time_t secondsToGo = BoxTimeToSeconds((lastHousekeepingRun + housekeepingInterval) - timeNow);
+ if(secondsToGo < 1) secondsToGo = 1;
+ if(secondsToGo > 60) secondsToGo = 60;
+ int32_t millisecondsToGo = ((int)secondsToGo) * 1000;
-#ifndef WIN32
// Check to see if there's any message pending
- CheckForInterProcessMsg(0 /* no account */);
-#endif
-
- // Stop early?
- if(StopRun())
- {
- break;
- }
+ CheckForInterProcessMsg(0 /* no account */, millisecondsToGo);
}
-
- ::syslog(LOG_INFO, "Finished housekeeping");
-
- // Placed here for accuracy, if StopRun() is true, for example.
- SetProcessTitle("housekeeping, idle");
}
-#ifdef WIN32
-void BackupStoreDaemon::OnIdle()
-{
- if (!mHousekeepingInited)
- {
- HousekeepingInit();
- mHousekeepingInited = true;
- }
-
- RunHousekeepingIfNeeded();
-}
-#endif
// --------------------------------------------------------------------------
//
@@ -164,7 +128,6 @@ void BackupStoreDaemon::OnIdle()
// Created: 11/12/03
//
// --------------------------------------------------------------------------
-#ifndef WIN32
bool BackupStoreDaemon::CheckForInterProcessMsg(int AccountNum, int MaximumWaitTime)
{
// First, check to see if it's EOF -- this means something has gone wrong, and the housekeeping should terminate.
@@ -208,6 +171,5 @@ bool BackupStoreDaemon::CheckForInterProcessMsg(int AccountNum, int MaximumWaitT
return false;
}
-#endif