long sockRecvData(void *pData, int Size) { int ret; ret = _recvPacket(pData); if (ret > 0) return ret; PacketInitPacket(lpRecvPacket, buffer, BUFFER_SIZE); if(PacketReceivePacket(lpAdapter,lpRecvPacket,TRUE)==FALSE){ printf("Error: PacketReceivePacket failed"); return (-1); } lbytes = lpRecvPacket->ulBytesReceived; tbytes+= lbytes; // DEV9_LOG("PacketReceivePacket %d:\n", lbytes); if (lbytes == 0) return 0; memcpy(buffer, lpRecvPacket->Buffer, lbytes); buf = buffer; PacketFreePacket(lpRecvPacket); return _recvPacket(pData); }
void *FricXactor::Receive(void *args) { for(;;) { boost::shared_ptr<FricData> recvData(new FricData("FricRecieve")); _recvPacket(recvData->ptype, recvData->port, recvData->addr, recvData->data); outChan.put(recvData); ExecuteCallbacks(RecieveCB, recvData.get()); } return 0; }