优化令牌统计
This commit is contained in:
parent
17d89d6eb6
commit
5f6850f452
|
@ -31,6 +31,8 @@ public:
|
||||||
int ReadReply;
|
int ReadReply;
|
||||||
int Write;
|
int Write;
|
||||||
int WriteReply;
|
int WriteReply;
|
||||||
|
int Invoke;
|
||||||
|
int InvokeReply;
|
||||||
|
|
||||||
TokenStat();
|
TokenStat();
|
||||||
~TokenStat();
|
~TokenStat();
|
||||||
|
@ -241,8 +243,6 @@ static byte _Sequence = 0;
|
||||||
bool TokenController::Send(Message& msg)
|
bool TokenController::Send(Message& msg)
|
||||||
{
|
{
|
||||||
TS("TokenController::Send");
|
TS("TokenController::Send");
|
||||||
// 未登录,登录注册,握手可通过
|
|
||||||
//if(Token == 0&&!( msg.Code <= 0x2||msg.Code == 0x07)) return false;
|
|
||||||
|
|
||||||
//static byte _Sequence = 0;
|
//static byte _Sequence = 0;
|
||||||
auto& tmsg = (TokenMessage&)msg;
|
auto& tmsg = (TokenMessage&)msg;
|
||||||
|
@ -260,8 +260,10 @@ bool TokenController::Send(Message& msg)
|
||||||
// 如果没有传输口处于打开状态,则发送失败
|
// 如果没有传输口处于打开状态,则发送失败
|
||||||
if(!Port->Open()) return false;
|
if(!Port->Open()) return false;
|
||||||
|
|
||||||
byte buf[1472];
|
//byte buf[1472];
|
||||||
Stream ms(buf, ArrayLength(buf));
|
//Stream ms(buf, ArrayLength(buf));
|
||||||
|
byte buf[128];
|
||||||
|
MemoStream ms(buf, ArrayLength(buf));
|
||||||
// 带有负载数据,需要合并成为一段连续的内存
|
// 带有负载数据,需要合并成为一段连续的内存
|
||||||
msg.Write(ms);
|
msg.Write(ms);
|
||||||
|
|
||||||
|
@ -319,7 +321,7 @@ void TokenController::ShowMessage(cstring action, const Message& msg)
|
||||||
|
|
||||||
bool TokenController::StartSendStat(byte code)
|
bool TokenController::StartSendStat(byte code)
|
||||||
{
|
{
|
||||||
TS("TokenController::StartSendStat");
|
//TS("TokenController::StartSendStat");
|
||||||
|
|
||||||
auto st = Stat;
|
auto st = Stat;
|
||||||
|
|
||||||
|
@ -331,18 +333,24 @@ bool TokenController::StartSendStat(byte code)
|
||||||
}
|
}
|
||||||
|
|
||||||
st->SendRequest++;
|
st->SendRequest++;
|
||||||
byte code2 = code & 0x3F;
|
byte tc = code & 0x0F;
|
||||||
if (code2 == 0x15 || code2 == 0x05)
|
if (tc == 0x05)
|
||||||
st->Read++;
|
st->Read++;
|
||||||
else if (code2 == 0x16 || code2 == 0x06)
|
else if (tc == 0x06)
|
||||||
st->Write++;
|
st->Write++;
|
||||||
|
else if (tc == 0x08)
|
||||||
|
st->Invoke++;
|
||||||
|
|
||||||
|
// 超时指令也干掉
|
||||||
|
UInt64 end = Sys.Ms() - 5000;
|
||||||
for (int i = 0; i < ArrayLength(_Queue); i++)
|
for (int i = 0; i < ArrayLength(_Queue); i++)
|
||||||
{
|
{
|
||||||
if (_Queue[i].Code == 0)
|
auto& qi = _Queue[i];
|
||||||
|
if (qi.Code == 0 || qi.Time <= end)
|
||||||
{
|
{
|
||||||
_Queue[i].Code = code;
|
qi.Code = code;
|
||||||
_Queue[i].Time = Sys.Ms();
|
qi.Time = Sys.Ms();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -352,20 +360,21 @@ bool TokenController::StartSendStat(byte code)
|
||||||
|
|
||||||
bool TokenController::EndSendStat(byte code, bool success)
|
bool TokenController::EndSendStat(byte code, bool success)
|
||||||
{
|
{
|
||||||
TS("TokenController::EndSendStat");
|
//TS("TokenController::EndSendStat");
|
||||||
|
|
||||||
auto st = Stat;
|
auto st = Stat;
|
||||||
|
|
||||||
byte code2 = code & 0x3F;
|
byte tc = code & 0x0F;
|
||||||
|
|
||||||
for (int i = 0; i < ArrayLength(_Queue); i++)
|
for (int i = 0; i < ArrayLength(_Queue); i++)
|
||||||
{
|
{
|
||||||
if (_Queue[i].Code == code2)
|
auto& qi = _Queue[i];
|
||||||
|
if (qi.Code == tc)
|
||||||
{
|
{
|
||||||
bool rs = false;
|
bool rs = false;
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
int cost = (int)(Sys.Ms() - _Queue[i].Time);
|
int cost = (int)(Sys.Ms() - qi.Time);
|
||||||
// 莫名其妙,有时候竟然是负数
|
// 莫名其妙,有时候竟然是负数
|
||||||
if (cost < 0) cost = -cost;
|
if (cost < 0) cost = -cost;
|
||||||
if (cost < 1000)
|
if (cost < 1000)
|
||||||
|
@ -377,7 +386,7 @@ bool TokenController::EndSendStat(byte code, bool success)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_Queue[i].Code = 0;
|
qi.Code = 0;
|
||||||
|
|
||||||
return rs;
|
return rs;
|
||||||
}
|
}
|
||||||
|
@ -385,10 +394,12 @@ bool TokenController::EndSendStat(byte code, bool success)
|
||||||
|
|
||||||
if ((code & 0x80) != 0)
|
if ((code & 0x80) != 0)
|
||||||
{
|
{
|
||||||
if (code2 == 0x15 || code2 == 0x05)
|
if (tc == 0x05)
|
||||||
st->ReadReply++;
|
st->ReadReply++;
|
||||||
else if (code2 == 0x16 || code2 == 0x06)
|
else if (tc == 0x06)
|
||||||
st->WriteReply++;
|
st->WriteReply++;
|
||||||
|
else if (tc == 0x08)
|
||||||
|
st->InvokeReply++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -487,6 +498,8 @@ void TokenStat::Clear()
|
||||||
_Last->ReadReply = ReadReply;
|
_Last->ReadReply = ReadReply;
|
||||||
_Last->Write = Write;
|
_Last->Write = Write;
|
||||||
_Last->WriteReply = WriteReply;
|
_Last->WriteReply = WriteReply;
|
||||||
|
_Last->Invoke = Invoke;
|
||||||
|
_Last->InvokeReply = InvokeReply;
|
||||||
|
|
||||||
_Total->SendRequest += SendRequest;
|
_Total->SendRequest += SendRequest;
|
||||||
_Total->RecvReply += RecvReply;
|
_Total->RecvReply += RecvReply;
|
||||||
|
@ -498,19 +511,23 @@ void TokenStat::Clear()
|
||||||
_Total->ReadReply += ReadReply;
|
_Total->ReadReply += ReadReply;
|
||||||
_Total->Write += Write;
|
_Total->Write += Write;
|
||||||
_Total->WriteReply += WriteReply;
|
_Total->WriteReply += WriteReply;
|
||||||
|
_Total->Invoke += Invoke;
|
||||||
|
_Total->InvokeReply += InvokeReply;
|
||||||
|
|
||||||
SendRequest = 0;
|
SendRequest = 0;
|
||||||
RecvReply = 0;
|
RecvReply = 0;
|
||||||
Time = 0;
|
Time = 0;
|
||||||
|
|
||||||
SendReply = 0;
|
SendReply = 0;
|
||||||
RecvRequest = 0;
|
RecvRequest = 0;
|
||||||
RecvReplyAsync = 0;
|
RecvReplyAsync = 0;
|
||||||
|
|
||||||
Read = 0;
|
Read = 0;
|
||||||
ReadReply = 0;
|
ReadReply = 0;
|
||||||
Write = 0;
|
Write = 0;
|
||||||
WriteReply = 0;
|
WriteReply = 0;
|
||||||
|
Invoke = 0;
|
||||||
|
InvokeReply = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
String& TokenStat::ToStr(String& str) const
|
String& TokenStat::ToStr(String& str) const
|
||||||
|
@ -523,8 +540,9 @@ String& TokenStat::ToStr(String& str) const
|
||||||
str = str + "发:" + Percent() + "% " + RecvReply + "/" + SendRequest + " " + Speed() + "ms";
|
str = str + "发:" + Percent() + "% " + RecvReply + "/" + SendRequest + " " + Speed() + "ms";
|
||||||
str = str + " 收:" + PercentReply() + "% " + SendReply + "/" + RecvRequest;
|
str = str + " 收:" + PercentReply() + "% " + SendReply + "/" + RecvRequest;
|
||||||
if (RecvReplyAsync > 0) str = str + " 异步 " + RecvReplyAsync;
|
if (RecvReplyAsync > 0) str = str + " 异步 " + RecvReplyAsync;
|
||||||
if (Read > 0) str = str + " 读:" + (ReadReply * 100 / Read) + " " + ReadReply + "/" + Read;
|
if (Read > 0) str = str + " 读:" + (ReadReply * 100 / Read) + " " + ReadReply + "/" + Read;
|
||||||
if (Write > 0) str = str + " 写:" + (WriteReply * 100 / Write) + " " + WriteReply + "/" + Write;
|
if (Write > 0) str = str + " 写:" + (WriteReply * 100 / Write) + " " + WriteReply + "/" + Write;
|
||||||
|
if (Write > 0) str = str + " 调:" + (InvokeReply * 100 / Invoke) + " " + InvokeReply + "/" + Invoke;
|
||||||
if (_Total)
|
if (_Total)
|
||||||
{
|
{
|
||||||
str += " 总";
|
str += " 总";
|
||||||
|
|
|
@ -50,7 +50,7 @@ private:
|
||||||
UInt64 Time; // 时间ms
|
UInt64 Time; // 时间ms
|
||||||
};
|
};
|
||||||
|
|
||||||
QueueItem _Queue[16];
|
QueueItem _Queue[4];
|
||||||
|
|
||||||
bool StartSendStat(byte code);
|
bool StartSendStat(byte code);
|
||||||
bool EndSendStat(byte code, bool success);
|
bool EndSendStat(byte code, bool success);
|
||||||
|
|
|
@ -28,7 +28,7 @@ bool TokenMessage::Read(Stream& ms)
|
||||||
if(ms.Remain() < MinSize) return false;
|
if(ms.Remain() < MinSize) return false;
|
||||||
|
|
||||||
byte temp = ms.ReadByte();
|
byte temp = ms.ReadByte();
|
||||||
Code = temp & 0x3f;
|
Code = temp & 0x0F;
|
||||||
Reply = temp >> 7;
|
Reply = temp >> 7;
|
||||||
if(!Reply)
|
if(!Reply)
|
||||||
OneWay = (temp >> 6) & 0x01;
|
OneWay = (temp >> 6) & 0x01;
|
||||||
|
|
Loading…
Reference in New Issue