令牌配置区更爱,添加判断是否新配置

This commit is contained in:
cdyong 2016-01-07 10:00:04 +00:00
parent 9b68031326
commit 32c77ba45f
2 changed files with 18 additions and 5 deletions

View File

@ -4,10 +4,15 @@
TokenConfig* TokenConfig::Current = NULL; TokenConfig* TokenConfig::Current = NULL;
uint TokenConfig::Size() const
{
return (uint)&New - (uint)&Length;
}
void TokenConfig::LoadDefault() void TokenConfig::LoadDefault()
{ {
// 实际内存大小,减去头部大小 // 实际内存大小,减去头部大小
uint len = sizeof(this[0]) - ((int)&Length - (int)this); uint len = Size();
memset(&Length, 0, len); memset(&Length, 0, len);
Length = len; Length = len;
@ -23,7 +28,7 @@ bool TokenConfig::Load()
if(!Config::Current) Config::Current = &Config::CreateFlash(); if(!Config::Current) Config::Current = &Config::CreateFlash();
// 尝试加载配置区设置 // 尝试加载配置区设置
uint len = Length; uint len = Size();
if(!len) len = sizeof(this[0]); if(!len) len = sizeof(this[0]);
Array bs(&Length, len); Array bs(&Length, len);
/*if(!Config::Current->GetOrSet("TKCF", bs)) /*if(!Config::Current->GetOrSet("TKCF", bs))
@ -33,15 +38,20 @@ bool TokenConfig::Load()
if(Config::Current->Get("TKCF", bs)) if(Config::Current->Get("TKCF", bs))
{ {
debug_printf("TokenConfig::Load 从配置区加载配置\r\n"); debug_printf("TokenConfig::Load 从配置区加载配置\r\n");
New = false;
return true; return true;
} }
else
New = true;
return false; return false;
} }
void TokenConfig::Save() void TokenConfig::Save()
{ {
uint len = Length; uint len = Size();
if(!len) len = sizeof(this[0]); if(!len) len = sizeof(this[0]);
debug_printf("TokenConfig::Save \r\n"); debug_printf("TokenConfig::Save \r\n");
@ -69,7 +79,7 @@ void TokenConfig::Show()
void TokenConfig::Write(Stream& ms) const void TokenConfig::Write(Stream& ms) const
{ {
uint len = Length; uint len = Size();
if(!len) len = sizeof(this[0]); if(!len) len = sizeof(this[0]);
ms.Write(&Length, 0, len); ms.Write(&Length, 0, len);
@ -77,7 +87,7 @@ void TokenConfig::Write(Stream& ms) const
void TokenConfig::Read(Stream& ms) void TokenConfig::Read(Stream& ms)
{ {
uint len = Length; uint len = Size();
if(!len) len = sizeof(this[0]); if(!len) len = sizeof(this[0]);
ms.Read(&Length, 0, len); ms.Read(&Length, 0, len);

View File

@ -27,11 +27,14 @@ struct TokenConfig
char Server[32]; // 服务器域名。出厂为空,从厂商服务器覆盖,恢复出厂设置时清空 char Server[32]; // 服务器域名。出厂为空,从厂商服务器覆盖,恢复出厂设置时清空
char Vendor[32]; // 厂商服务器域名。原始厂商服务器地址 char Vendor[32]; // 厂商服务器域名。原始厂商服务器地址
bool New;
void LoadDefault(); void LoadDefault();
bool Load(); bool Load();
void Save(); void Save();
void Show(); void Show();
uint Size() const;
// 序列化到消息数据流 // 序列化到消息数据流
void Write(Stream& ms) const; void Write(Stream& ms) const;