From 4b7c2c628f550de5c28e756a4abf033e52ffca38 Mon Sep 17 00:00:00 2001 From: Maxim Mamontov Date: Tue, 5 Apr 2011 12:38:24 +0300 Subject: [PATCH 1/1] Replace update user authorization loop with std::for_each --- .../stargazer/plugins/authorization/ao/ao.cpp | 44 +++++-------------- .../stargazer/plugins/authorization/ao/ao.h | 23 ++++------ 2 files changed, 20 insertions(+), 47 deletions(-) diff --git a/projects/stargazer/plugins/authorization/ao/ao.cpp b/projects/stargazer/plugins/authorization/ao/ao.cpp index 811807de..84e97a0d 100644 --- a/projects/stargazer/plugins/authorization/ao/ao.cpp +++ b/projects/stargazer/plugins/authorization/ao/ao.cpp @@ -24,9 +24,11 @@ $Date: 2010/03/04 12:29:06 $ $Author: faust $ */ -#include #include -#include + +#include +#include // for_each +#include // mem_fun_ref #include "ao.h" #include "user.h" @@ -61,7 +63,6 @@ AO_CREATOR aoc; //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- -// ëÌÁÓÓ ÄÌÑ ÐÏÉÓËÁ ÀÚÅÒÁ × ÓÐÉÓËÅ ÎÏÔÉÆÉËÁÔÏÒÏ× template class IS_CONTAINS_USER: public binary_function { @@ -94,44 +95,23 @@ AUTH_AO::AUTH_AO() { } //----------------------------------------------------------------------------- -void AUTH_AO::SetUsers(USERS * u) -{ -users = u; -} -//----------------------------------------------------------------------------- -void AUTH_AO::SetSettings(const MODULE_SETTINGS & s) -{ -settings = s; -} -//----------------------------------------------------------------------------- -int AUTH_AO::ParseSettings() -{ -return 0; -} -//----------------------------------------------------------------------------- -const string & AUTH_AO::GetStrError() const -{ -return errorStr; -} -//----------------------------------------------------------------------------- int AUTH_AO::Start() { GetUsers(); -list::iterator users_iter; - -/*onAddUserNotifier.SetAuthorizator(this); -onDelUserNotifier.SetAuthorizator(this);*/ users->AddNotifierUserAdd(&onAddUserNotifier); users->AddNotifierUserDel(&onDelUserNotifier); -users_iter = usersList.begin(); -while (users_iter != usersList.end()) +/*list::iterator it = usersList.begin(); +while (it != usersList.end()) { - UpdateUserAuthorization(*users_iter); - ++users_iter; - } + UpdateUserAuthorization(*it); + ++it; + }*/ +std::for_each(usersList.begin(), usersList.end(), std::bind1st(std::mem_fun(&AUTH_AO::UpdateUserAuthorization), this)); + isRunning = true; + return 0; } //----------------------------------------------------------------------------- diff --git a/projects/stargazer/plugins/authorization/ao/ao.h b/projects/stargazer/plugins/authorization/ao/ao.h index 4c0c344a..f6c9f8a1 100644 --- a/projects/stargazer/plugins/authorization/ao/ao.h +++ b/projects/stargazer/plugins/authorization/ao/ao.h @@ -78,7 +78,7 @@ public: AUTH_AO(); virtual ~AUTH_AO(){}; - void SetUsers(USERS * u); + void SetUsers(USERS * u) { users = u; } void SetTariffs(TARIFFS *) {} void SetAdmins(ADMINS *) {} void SetTraffcounter(TRAFFCOUNTER *) {} @@ -89,9 +89,9 @@ public: int Stop(); int Reload() { return 0; } bool IsRunning(); - void SetSettings(const MODULE_SETTINGS & s); - int ParseSettings(); - const std::string & GetStrError() const; + void SetSettings(const MODULE_SETTINGS &) {} + int ParseSettings() { return 0; } + const std::string & GetStrError() const { return errorStr; } const std::string GetVersion() const; uint16_t GetStartPosition() const; uint16_t GetStopPosition() const; @@ -116,18 +116,11 @@ private: bool isRunning; MODULE_SETTINGS settings; - /* - ÍÙ ÄÏÌÖÎÙ ÐÅÒÅÐÒÏ×ÅÒÉÔØ ×ÏÚÍÏÖÎÏÓÔØ Á×ÔÏÒÉÚÁÃÉÉ ÀÚÅÒÁ ÐÒÉ ÉÚÍÅÎÅÎÉÉ - ÓÌÅÄÕÀÝÉÈ ÅÇÏ ÐÁÒÁÍÅÔÒÏ×: - - alwaysOnline - - ips - */ + list > BeforeChgAONotifierList; + list > AfterChgAONotifierList; - list > BeforeChgAONotifierList; - list > AfterChgAONotifierList; - - list > BeforeChgIPNotifierList; - list > AfterChgIPNotifierList; + list > BeforeChgIPNotifierList; + list > AfterChgIPNotifierList; class ADD_USER_NONIFIER: public NOTIFIER_BASE { public: -- 2.44.2