From: Francesco Chemolli Date: Fri, 4 Jul 2008 17:22:13 +0000 (+0200) Subject: Command object classes are now members of the CacheManager class. X-Git-Tag: SQUID_3_1_0_1~49^2~143^2~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b2aa1b40aba48a55d3d058610d5f15be36a99fe;p=thirdparty%2Fsquid.git Command object classes are now members of the CacheManager class. Converted offline_toggle command. --- diff --git a/src/CacheManager.h b/src/CacheManager.h index c829232a17..8839239c44 100644 --- a/src/CacheManager.h +++ b/src/CacheManager.h @@ -69,18 +69,6 @@ public: 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 { }; @@ -130,6 +118,26 @@ protected: 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; @@ -138,7 +146,6 @@ private: //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); diff --git a/src/cache_manager.cc b/src/cache_manager.cc index 73e8c89422..03fc82f372 100644 --- a/src/cache_manager.cc +++ b/src/cache_manager.cc @@ -61,9 +61,8 @@ CacheManager::CacheManager() 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); } @@ -335,25 +334,25 @@ CacheManager::Start(int fd, HttpRequest * request, StoreEntry * entry) 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") << "."); @@ -361,6 +360,7 @@ CacheManager::OfflineToggleCommand(StoreEntry * sentry) 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 *