Пример #1
0
int testfun(void *par,char* data,int data_size)
{
	CWinTest* Hand=(CWinTest*)par;
	TestMessage t;
	if(!t.ParseFromArray(data,data_size))
	{
		return -1;
	}
	uint32_t curid= t.guid();
	
	if(curid==Hand->alreadyGuid+1)
	{
		Hand->alreadyGuid=curid;
	}
	else
	{
		if(curid > Hand->alreadyGuid+1)
		{
			Hand->lostpacketCount=Hand->lostpacketCount+curid-Hand->alreadyGuid+1;
			Hand->alreadyGuid=curid;
		}
		else
		{
			if(Hand->lostpacketCount!=0)
			{
				--Hand->lostpacketCount;
				++Hand->outOrderCount;
			}
		}
	}
	
	t.set_guid(++Hand->writeGuid);
	SendPacket spkt;
	Hand->packet.makePacket(&t,1,spkt);
	Hand->Write(spkt.data,spkt.size);
	return data_size;
}