int RawSocketDevice::receivePackets(RawPacketVector& packetVec, int timeout, int& failedRecv) { if (!isOpened()) { LOG_ERROR("Device is not open"); return 0; } long curSec, curNsec; clockGetTime(curSec, curNsec); int packetCount = 0; failedRecv = 0; long timeoutSec = curSec + timeout; while (curSec < timeoutSec) { RawPacket* rawPacket = new RawPacket(); if (receivePacket(*rawPacket, true, timeoutSec-curSec) == RecvSuccess) { packetVec.pushBack(rawPacket); packetCount++; } else { failedRecv++; delete rawPacket; } clockGetTime(curSec, curNsec); } return packetCount; }