CacheManagerActionLegacy(char const *anAction, char const *aDesc, unsigned int isPwReq, unsigned int isAtomic, OBJH *aHandler);
};
-class CacheManagerShutdownAction : public CacheManagerAction {
-public:
- virtual void run (StoreEntry *sentry);
- CacheManagerShutdownAction();
-};
-
-class CacheManagerReconfigureAction : public CacheManagerAction {
-public:
- virtual void run (StoreEntry *sentry);
- CacheManagerReconfigureAction();
-};
-
class CacheManagerActionList : public Vector<CacheManagerAction *> {
};
int CheckPassword(cachemgrStateData * mgr);
char *PasswdGet(cachemgr_passwd *, const char *);
+ // command classes. They are private to the cachemanager because they
+ // may require access to local data sources, plus we avoid polluting
+ // the namespace more than needed.
+ class CacheManagerShutdownAction : public CacheManagerAction {
+ public:
+ virtual void run (StoreEntry *sentry);
+ CacheManagerShutdownAction();
+ };
+ class CacheManagerReconfigureAction : public CacheManagerAction {
+ public:
+ virtual void run (StoreEntry *sentry);
+ CacheManagerReconfigureAction();
+ };
+ class CacheManagerOfflineToggleAction : public CacheManagerAction {
+ public:
+ virtual void run (StoreEntry *sentry);
+ CacheManagerOfflineToggleAction();
+ };
+
+
private:
static CacheManager* instance;
//via the singleton, but it's syntactic hackery
//TODO: fix so that ActionTable uses a Command pattern and thus
// function calls are properly object-wrapped
- static void ReconfigureCommand(StoreEntry *sentry);
static void MenuCommand(StoreEntry *sentry);
static void OfflineToggleCommand(StoreEntry *sentry);
delete(ActionsList); //TODO: Laaazy. Will be moved to class member
ActionsList = new CacheManagerActionList;
registerAction("menu", "This Cachemanager Menu", MenuCommand, 0, 1);
- registerAction("offline_toggle",
- "Toggle offline_mode setting",
- OfflineToggleCommand, 1, 1);
+ //registerAction("offline_toggle", "Toggle offline_mode setting", OfflineToggleCommand, 1, 1);
+ registerAction(new CacheManagerOfflineToggleAction);
registerAction(new CacheManagerShutdownAction);
registerAction(new CacheManagerReconfigureAction);
}
StateFree(mgr);
}
-void CacheManagerShutdownAction::run(StoreEntry *sentry)
+void CacheManager::CacheManagerShutdownAction::run(StoreEntry *sentry)
{
debugs(16, 0, "Shutdown by command.");
shut_down(0);
}
-CacheManagerShutdownAction::CacheManagerShutdownAction() : CacheManagerAction("shutdown","Shut Down the Squid Process", 1, 1) { }
+CacheManager::CacheManagerShutdownAction::CacheManagerShutdownAction() : CacheManagerAction("shutdown","Shut Down the Squid Process", 1, 1) { }
void
-CacheManagerReconfigureAction::run(StoreEntry * sentry)
+CacheManager::CacheManagerReconfigureAction::run(StoreEntry * sentry)
{
debug(16, 0) ("Reconfigure by command.\n");
storeAppendPrintf(sentry, "Reconfiguring Squid Process ....");
reconfigure(SIGHUP);
}
-CacheManagerReconfigureAction::CacheManagerReconfigureAction() : CacheManagerAction("reconfigure","Reconfigure Squid", 1, 1) { }
+CacheManager::CacheManagerReconfigureAction::CacheManagerReconfigureAction() : CacheManagerAction("reconfigure","Reconfigure Squid", 1, 1) { }
/// \ingroup CacheManagerInternal
void
-CacheManager::OfflineToggleCommand(StoreEntry * sentry)
+CacheManager::CacheManagerOfflineToggleAction::run(StoreEntry * sentry)
{
Config.onoff.offline = !Config.onoff.offline;
debugs(16, 0, "offline_mode now " << (Config.onoff.offline ? "ON" : "OFF") << ".");
storeAppendPrintf(sentry, "offline_mode is now %s\n",
Config.onoff.offline ? "ON" : "OFF");
}
+CacheManager::CacheManagerOfflineToggleAction::CacheManagerOfflineToggleAction() : CacheManagerAction ("offline_toggle", "Toggle offline_mode setting", 1, 1) { }
/// \ingroup CacheManagerInternal
const char *