不能进行这个优化处理,必须保证每次接收一条完整的微网消息,否则后续将无法分离出粘包的下一条指令
This commit is contained in:
parent
1bf54a8d19
commit
950ffca5b6
|
@ -278,7 +278,7 @@ void ShowMessage(TinyMessage& msg, bool send, ITransport* port)
|
|||
|
||||
bool TinyController::Dispatch(Stream& ms, Message* pmsg, void* param)
|
||||
{
|
||||
byte* buf = ms.Current();
|
||||
/*byte* buf = ms.Current();
|
||||
// 前移一个字节,确保不是自己的消息时,数据流能够移动
|
||||
ms.Seek(1);
|
||||
|
||||
|
@ -300,7 +300,7 @@ bool TinyController::Dispatch(Stream& ms, Message* pmsg, void* param)
|
|||
}
|
||||
|
||||
// 后移一个字节来弥补
|
||||
ms.Seek(-1);
|
||||
ms.Seek(-1);*/
|
||||
|
||||
TinyMessage msg;
|
||||
return Controller::Dispatch(ms, &msg, param);
|
||||
|
@ -311,6 +311,23 @@ bool TinyController::Valid(const Message& msg)
|
|||
{
|
||||
TinyMessage& tmsg = (TinyMessage&)msg;
|
||||
|
||||
// 代码为0是非法的
|
||||
if(!msg.Code) return false;
|
||||
// 没有源地址是很不负责任的
|
||||
if(!tmsg.Src) return false;
|
||||
// 非广播包时,源地址和目的地址相同也是非法的
|
||||
if(tmsg.Dest == tmsg.Src) return false;
|
||||
// 源地址是自己不要接收
|
||||
if(tmsg.Src == Address) return false;
|
||||
// 只处理本机消息或广播消息
|
||||
//if(tmsg.Dest != Address && tmsg.Dest != 0) return false;
|
||||
// 不是自己的消息,并且没有设置接收全部
|
||||
if(Mode < 2 && tmsg.Dest != Address)
|
||||
{
|
||||
// 如果不是广播或者不允许广播
|
||||
if(Mode != 1 || tmsg.Dest != 0) return false;
|
||||
}
|
||||
|
||||
TS("TinyController::Valid");
|
||||
|
||||
#if MSG_DEBUG
|
||||
|
|
Loading…
Reference in New Issue