不能进行这个优化处理,必须保证每次接收一条完整的微网消息,否则后续将无法分离出粘包的下一条指令
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)
|
bool TinyController::Dispatch(Stream& ms, Message* pmsg, void* param)
|
||||||
{
|
{
|
||||||
byte* buf = ms.Current();
|
/*byte* buf = ms.Current();
|
||||||
// 前移一个字节,确保不是自己的消息时,数据流能够移动
|
// 前移一个字节,确保不是自己的消息时,数据流能够移动
|
||||||
ms.Seek(1);
|
ms.Seek(1);
|
||||||
|
|
||||||
|
@ -300,7 +300,7 @@ bool TinyController::Dispatch(Stream& ms, Message* pmsg, void* param)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 后移一个字节来弥补
|
// 后移一个字节来弥补
|
||||||
ms.Seek(-1);
|
ms.Seek(-1);*/
|
||||||
|
|
||||||
TinyMessage msg;
|
TinyMessage msg;
|
||||||
return Controller::Dispatch(ms, &msg, param);
|
return Controller::Dispatch(ms, &msg, param);
|
||||||
|
@ -311,6 +311,23 @@ bool TinyController::Valid(const Message& msg)
|
||||||
{
|
{
|
||||||
TinyMessage& tmsg = (TinyMessage&)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");
|
TS("TinyController::Valid");
|
||||||
|
|
||||||
#if MSG_DEBUG
|
#if MSG_DEBUG
|
||||||
|
|
Loading…
Reference in New Issue