]> git.stg.codes - stg.git/commitdiff
optimization method USER_IMPL::GetParamValue
authorNaffanya <naffanya@naffanya.(none)>
Sat, 14 Sep 2013 23:37:21 +0000 (02:37 +0300)
committerNaffanya <naffanya@naffanya.(none)>
Sat, 14 Sep 2013 23:37:21 +0000 (02:37 +0300)
include/stg/user_property.h
projects/stargazer/user_impl.cpp

index 1716296acd7300482c53f3014c41d7f13869574d..fbcf885602137f8cf885ae0274ea36e1294d995a 100644 (file)
@@ -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<typename varT>
-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<double>            cash;
     USER_PROPERTY_LOGGED<DIR_TRAFF>         up;
     USER_PROPERTY_LOGGED<DIR_TRAFF>         down;
@@ -165,6 +171,8 @@ public:
     USER_PROPERTY_LOGGED<std::string>       userdata7;
     USER_PROPERTY_LOGGED<std::string>       userdata8;
     USER_PROPERTY_LOGGED<std::string>       userdata9;
+
+    std::map<std::string, USER_PROPERTY_BASE*> params;
 };
 //=============================================================================
 
@@ -376,6 +384,15 @@ else
 //-------------------------------------------------------------------------
 //-------------------------------------------------------------------------
 //-------------------------------------------------------------------------
+std::string USER_PROPERTIES::GetPropertyValue(const std::string & name) const
+{
+    std::map<std::string, USER_PROPERTY_BASE*>::iterator it = params.find(name);
+    if (it != params.end()) return it->second.ToString();
+    else return "";
+}
+//-------------------------------------------------------------------------
+//-------------------------------------------------------------------------
+//-------------------------------------------------------------------------
 template<typename varT>
 inline
 std::ostream & operator<< (std::ostream & stream, const USER_PROPERTY<varT> & value)
index 52731b7bd8581f4a593d87f5daadb60f1180fea2..d3f78bcc55044af0ff976fc8529ba274bb32aada 100644 (file)
@@ -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 "";
 }
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------