TokenMessage 解密失败需要上抛 让上层做一些处理

添加ErrorCode进行区分    ErrorCode仅本地使用 不与云端沟通
This commit is contained in:
WangQiang 2016-07-22 02:42:57 +00:00
parent 5d54bc805a
commit a8415f47ca
4 changed files with 19 additions and 4 deletions

View File

@ -216,7 +216,11 @@ bool TokenController::OnReceive(Message& msg)
for (int i = 0; i < ArrayLength(_RecvQueue); i++)
{
auto& qi = _RecvQueue[i];
if (qi.Code == msg.Code && qi.Seq == tmsg.Seq && qi.Time > start) return true;
if (qi.Code == msg.Code && qi.Seq == tmsg.Seq && qi.Time > start)
{
tmsg.ErrorCode = SeqError;
return true;
}
}
for (int i = 0; i < ArrayLength(_RecvQueue); i++)
{
@ -248,7 +252,9 @@ bool TokenController::OnReceive(Message& msg)
Key.Show(true);
msg.Length = 0;
return Controller::OnReceive(msg);
((TokenMessage&)msg).ErrorCode = DecryptError;
// 加解密失败也上抛数据让TokenClient做一些处理
// return Controller::OnReceive(msg);
}
}

View File

@ -13,7 +13,7 @@
TokenMessage::TokenMessage(byte code) : Message(code)
{
Data = _Data;
ErrorCode = NoError;
//OneWay = false;
Seq = 0;
}

View File

@ -3,12 +3,20 @@
#include "Message\Message.h"
enum ErrorCodeType :byte
{
NoError, // 没错
DecryptError, // 解密失败
SeqError, // Seq无效
};
// 令牌消息
class TokenMessage : public Message
{
public:
//byte OneWay; // 单向传输。无应答
byte Seq; // 消息序号
ErrorCodeType ErrorCode; // 错误类型 仅本地使用,不与云端交互
byte _Data[512]; // 数据

View File

@ -48,7 +48,8 @@ void TokenSession::OnReceive(TokenMessage& msg)
TS("TokenSession::OnReceive");
LastActive = Sys.Ms();
if (Token == 0 && msg.Code > 1 && Key.Length() == 0)
// if (Token == 0 && msg.Code > 1 && Key.Length() == 0)
if(msg.ErrorCode == DecryptError) // 解密失败 直接让他重新来过
{
auto rs = msg.CreateReply();