LRESULT CGMToolDlg::OnReadMessage(WPARAM wParam,LPARAM lParam)
{
int err;
/*
static link_struct *pLinkHead = NULL;
static int state = 0;
static int pblen =0;
int nReceive = 0;
char buf[8] = 0;
link_struct * listNode = (link_struct *)wParam;
switch(state)
{
case 0:
pLinkHead = NULL;
state = 0;
pblen =0;
pLinkHead = MergeLink(pLinkHead,listNode);
memcpy(buf,listNode->RecvBuf,8);
pblen = *(int*)(buf+4);
while(listNode)
{
nReceive += sizeof(listNode->RecvBuf);
listNode = listNode->next;
}
if(pblen + sizeof(CLIENT_PACKET)>nReceive ) //一个包没接完
state =1;
else if(pblen + sizeof(CLIENT_PACKET)<=nReceive ) //一个包接完了
{
pLinkHead = ParsePacketOneLink(pLinkHead );
state = 0;
nReceive = 0;
ZeroMemory(buf,8);
listNode = NULL;
}
break;
case 1:
pLinkHead = MergeLink(pLinkHead,listNode);
link_struct *pHead = pLinkHead;
while(pLinkHead)
{
nReceive += sizeof(pLinkHead->RecvBuf);
pLinkHead = pLinkHead->next;
}
pLinkHead =pHead;
if(pblen + sizeof(CLIENT_PACKET)<=nReceive ) //一个包接完了
{
pLinkHead = ParsePacketOneLink(pLinkHead );
state = 0;
nReceive = 0;
ZeroMemory(buf,8);
listNode = NULL;
}
break;
}
*/
err = CClientPacket::ParsePacket(this,(link_struct*)wParam);
if(err == ERR_CONN_CLOSED || err == ERR_FATAL)
{
return 0;
}
return 0;
}