增加序列号匹配
This commit is contained in:
parent
060e377e39
commit
c2abefe4c8
|
@ -211,12 +211,13 @@ bool TokenController::OnReceive(Message& msg)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
auto& tmsg = (TokenMessage&)msg;
|
||||||
// 过滤重复请求。1秒内不接收重复指令
|
// 过滤重复请求。1秒内不接收重复指令
|
||||||
UInt64 start = Sys.Ms() - 1000;
|
UInt64 start = Sys.Ms() - 5000;
|
||||||
for (int i = 0; i < ArrayLength(_RecvQueue); i++)
|
for (int i = 0; i < ArrayLength(_RecvQueue); i++)
|
||||||
{
|
{
|
||||||
auto& qi = _RecvQueue[i];
|
auto& qi = _RecvQueue[i];
|
||||||
if (qi.Code == msg.Code && qi.Time > start) return true;
|
if (qi.Code == msg.Code && qi.Seq == tmsg.Seq && qi.Time > start) return true;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < ArrayLength(_RecvQueue); i++)
|
for (int i = 0; i < ArrayLength(_RecvQueue); i++)
|
||||||
{
|
{
|
||||||
|
@ -224,6 +225,7 @@ bool TokenController::OnReceive(Message& msg)
|
||||||
if (qi.Code == 0 || qi.Time <= start)
|
if (qi.Code == 0 || qi.Time <= start)
|
||||||
{
|
{
|
||||||
qi.Code = msg.Code;
|
qi.Code = msg.Code;
|
||||||
|
qi.Seq = tmsg.Seq;
|
||||||
qi.Time = Sys.Ms();
|
qi.Time = Sys.Ms();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -405,8 +407,9 @@ bool TokenController::StatReceive(const Message& msg)
|
||||||
auto& qi = _StatQueue[i];
|
auto& qi = _StatQueue[i];
|
||||||
if (qi.Code == code)
|
if (qi.Code == code)
|
||||||
{
|
{
|
||||||
int cost = (int)(Sys.Ms() - qi.Time);
|
int cost = (int)(Sys.Ms() - (UInt64)qi.Time);
|
||||||
// 莫名其妙,有时候竟然是负数
|
// 莫名其妙,有时候竟然是负数
|
||||||
|
if (cost < 0) debug_printf("cost=%d qi.Time=%d now=%d \r\n", cost, (int)qi.Time, (int)qi.Time + cost);
|
||||||
if (cost < 0) cost = -cost;
|
if (cost < 0) cost = -cost;
|
||||||
if (cost < 1000)
|
if (cost < 1000)
|
||||||
{
|
{
|
||||||
|
|
|
@ -51,11 +51,12 @@ private:
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
byte Code;
|
byte Code;
|
||||||
|
byte Seq;
|
||||||
UInt64 Time; // 时间ms
|
UInt64 Time; // 时间ms
|
||||||
};
|
};
|
||||||
|
|
||||||
QueueItem _StatQueue[4];
|
QueueItem _StatQueue[8];
|
||||||
QueueItem _RecvQueue[4];
|
QueueItem _RecvQueue[8];
|
||||||
|
|
||||||
bool StatSend(const Message& msg);
|
bool StatSend(const Message& msg);
|
||||||
bool StatReceive(const Message& msg);
|
bool StatReceive(const Message& msg);
|
||||||
|
|
Loading…
Reference in New Issue