From 4e101b93cafd0881518fc2be53c051d47d374d93 Mon Sep 17 00:00:00 2001 From: Naffanya Date: Sun, 15 Sep 2013 02:37:21 +0300 Subject: [PATCH 1/1] optimization method USER_IMPL::GetParamValue --- include/stg/user_property.h | 21 +++++++++- projects/stargazer/user_impl.cpp | 67 ++++++++++++++++---------------- 2 files changed, 53 insertions(+), 35 deletions(-) diff --git a/include/stg/user_property.h b/include/stg/user_property.h index 1716296a..fbcf8856 100644 --- a/include/stg/user_property.h +++ b/include/stg/user_property.h @@ -25,10 +25,14 @@ $Author: faust $ #include "noncopyable.h" extern volatile time_t stgTime; - +//----------------------------------------------------------------------------- +class USER_PROPERTY_BASE { +public: + virtual std::string ToString() const = 0; +}; //----------------------------------------------------------------------------- template -class USER_PROPERTY { +class USER_PROPERTY : USER_PROPERTY_BASE { public: USER_PROPERTY(varT & val); virtual ~USER_PROPERTY(); @@ -130,6 +134,8 @@ public: void SetProperties(const USER_PROPERTIES & p) { stat = p.stat; conf = p.conf; } + std::string GetPropertyValue(const std::string & name) const; + USER_PROPERTY_LOGGED cash; USER_PROPERTY_LOGGED up; USER_PROPERTY_LOGGED down; @@ -165,6 +171,8 @@ public: USER_PROPERTY_LOGGED userdata7; USER_PROPERTY_LOGGED userdata8; USER_PROPERTY_LOGGED userdata9; + + std::map params; }; //============================================================================= @@ -376,6 +384,15 @@ else //------------------------------------------------------------------------- //------------------------------------------------------------------------- //------------------------------------------------------------------------- +std::string USER_PROPERTIES::GetPropertyValue(const std::string & name) const +{ + std::map::iterator it = params.find(name); + if (it != params.end()) return it->second.ToString(); + else return ""; +} +//------------------------------------------------------------------------- +//------------------------------------------------------------------------- +//------------------------------------------------------------------------- template inline std::ostream & operator<< (std::ostream & stream, const USER_PROPERTY & value) diff --git a/projects/stargazer/user_impl.cpp b/projects/stargazer/user_impl.cpp index 52731b7b..d3f78bcc 100644 --- a/projects/stargazer/user_impl.cpp +++ b/projects/stargazer/user_impl.cpp @@ -1474,39 +1474,40 @@ while (it != messages.end()) //----------------------------------------------------------------------------- std::string USER_IMPL::GetParamValue(const std::string & name) const { -if (name == "freeMb") return property.freeMb.ToString(); -if (name == "passive") return property.passive.ToString(); -if (name == "disabled") return property.disabled.ToString(); -if (name == "alwaysOnline") return property.alwaysOnline.ToString(); -if (name == "tariffName") return property.tariffName; -if (name == "nextTariff") return property.nextTariff; -if (name == "address") return property.address; -if (name == "note") return property.note; -if (name == "group") return property.group; -if (name == "email") return property.email; -if (name == "phone") return property.phone; -if (name == "realName") return property.realName; -if (name == "credit") return property.credit.ToString(); -if (name == "userdata0") return property.userdata0; -if (name == "userdata1") return property.userdata1; -if (name == "userdata2") return property.userdata2; -if (name == "userdata3") return property.userdata3; -if (name == "userdata4") return property.userdata4; -if (name == "userdata5") return property.userdata5; -if (name == "userdata6") return property.userdata6; -if (name == "userdata7") return property.userdata7; -if (name == "userdata8") return property.userdata8; -if (name == "userdata9") return property.userdata9; -if (name == "cash") return property.cash.ToString(); -if (name == "id") - { - std::stringstream stream; - stream << id; - return stream.str();; - } -if (name == "login") return login; -if (name == "ip") return currIP.ToString(); -return ""; + return properties.GetPropertyValue(&name); +//if (name == "freeMb") return property.freeMb.ToString(); +//if (name == "passive") return property.passive.ToString(); +//if (name == "disabled") return property.disabled.ToString(); +//if (name == "alwaysOnline") return property.alwaysOnline.ToString(); +//if (name == "tariffName") return property.tariffName; +//if (name == "nextTariff") return property.nextTariff; +//if (name == "address") return property.address; +//if (name == "note") return property.note; +//if (name == "group") return property.group; +//if (name == "email") return property.email; +//if (name == "phone") return property.phone; +//if (name == "realName") return property.realName; +//if (name == "credit") return property.credit.ToString(); +//if (name == "userdata0") return property.userdata0; +//if (name == "userdata1") return property.userdata1; +//if (name == "userdata2") return property.userdata2; +//if (name == "userdata3") return property.userdata3; +//if (name == "userdata4") return property.userdata4; +//if (name == "userdata5") return property.userdata5; +//if (name == "userdata6") return property.userdata6; +//if (name == "userdata7") return property.userdata7; +//if (name == "userdata8") return property.userdata8; +//if (name == "userdata9") return property.userdata9; +//if (name == "cash") return property.cash.ToString(); +//if (name == "id") +// { +// std::stringstream stream; +// stream << id; +// return stream.str();; +// } +//if (name == "login") return login; +//if (name == "ip") return currIP.ToString(); +//return ""; } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- -- 2.44.2