// // Created by pansen on 2017/8/24. // #include #include "FunctionalProc.h" #include "FunctionalUDPPeer.h" bool UDPPacking::proc(uint8_t *buffer, size_t buffSize) { FUPHeader* fupHeader ; memcpy(fupHeader,buffer, sizeof(fupHeader)); ret = fupHeader->magic!=123? false: true; if(!ret) return false; if(!tFlag) { seq = fupHeader->seq; magic = fupHeader->magic; parts = fupHeader->parts; size = fupHeader->size; minSeq = seq; maxSeq = seq + parts - 1; num=parts; dataSize = sizeof(fupHeader)- sizeof( fupHeader->data); } fupHeader->data; if( tFlag == 0 && magic > 1) { tFlag=1; memcpy(tempData,fupHeader->data,dataSize); num--; } else { if(fupHeader->parts <= maxSeq && fupHeader->parts) { return false; } else { ret = parts == fupHeader->parts; if(!ret) return false; memcpy(tempData+(fupHeader->seq - minSeq),fupHeader->data,dataSize); num--; if(num == 0){ tFlag =0; //触发回调 } } } }