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; }