#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();
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;
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;
};
//=============================================================================
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
+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)
//-----------------------------------------------------------------------------
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 "";
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------