diff --git a/RTCP/Cobalt/CoInterface/src/StreamableData.h b/RTCP/Cobalt/CoInterface/src/StreamableData.h index 567b7d0621ea7d5f4f450e2a34e25c462a04918a..97e8dc290b505002a9d6a1cdcc8e3bdd86b81b40 100644 --- a/RTCP/Cobalt/CoInterface/src/StreamableData.h +++ b/RTCP/Cobalt/CoInterface/src/StreamableData.h @@ -93,6 +93,11 @@ namespace LOFAR rawSequenceNumber = seqno; } + bool doReadWithSequenceNumber() + { + return readWithSequenceNumber; + } + virtual void setDimensions(unsigned, unsigned, unsigned) { } diff --git a/RTCP/Cobalt/GPUProc/src/Station/RSPRawSender.cc b/RTCP/Cobalt/GPUProc/src/Station/RSPRawSender.cc index e57c092a556875fb87ed51f8e5b0b55d2b09a7d3..5159b2497c015430e7b4f03637106d8ee9a955bc 100644 --- a/RTCP/Cobalt/GPUProc/src/Station/RSPRawSender.cc +++ b/RTCP/Cobalt/GPUProc/src/Station/RSPRawSender.cc @@ -154,7 +154,7 @@ namespace LOFAR { unsigned nrSent = sockStream->sendmmsg(packets, packetSize, itsSentMsgSizes, MSG_CONFIRM); if (nrSent < nrPackets) { // don't check itsSentMsgSizes: resending remainders won't help with UDP (message oriented) itsNrDroppedPackets += nrPackets - nrSent; - LOG_WARN("RSPRawSender::trySend(): fewer sent to avoid blocking"); // not retried, not even in non-RT... + LOG_WARN("RSPRawSender::trySendUdp(): fewer sent to avoid blocking"); // not retried, not even in non-RT... } } @@ -176,7 +176,7 @@ namespace LOFAR { unsigned nrSent = bytesSent / packetSize; unsigned partialPacketSent = bytesSent % packetSize; if (partialPacketSent != 0) { - LOG_WARN("RSPRawSender::trySend(): partial packet sent: will retry remainder later"); + LOG_WARN("RSPRawSender::trySendByteStream(): partial packet sent: will retry remainder later"); const char *data = (char *)iov[nrSent].iov_base + partialPacketSent; size_t size = packetSize - partialPacketSent; itsPendingData.resize(size); @@ -185,7 +185,7 @@ namespace LOFAR { } itsNrDroppedPackets += nrPackets - nrSent; - LOG_WARN("RSPRawSender::trySend(): fewer sent to avoid blocking"); // not retried, not even in non-RT... + LOG_WARN("RSPRawSender::trySendByteStream(): fewer sent to avoid blocking"); // not retried, not even in non-RT... } } diff --git a/RTCP/Cobalt/OutputProc/src/OutputThread.cc b/RTCP/Cobalt/OutputProc/src/OutputThread.cc index 46be2e737ac8bf661a51e574cdf3cba39541d3c5..088f656348d177daaf4fb27f87d91f5b6aef5be0 100644 --- a/RTCP/Cobalt/OutputProc/src/OutputThread.cc +++ b/RTCP/Cobalt/OutputProc/src/OutputThread.cc @@ -91,10 +91,10 @@ namespace LOFAR { // TODO: check for dropped data at end of observation - size_t droppedBlocks = data->sequenceNumber() - itsNextSequenceNumber; - ASSERTSTR(data->sequenceNumber() >= itsNextSequenceNumber, "Received block nr " << data->sequenceNumber() << " out of order! I expected nothing before " << itsNextSequenceNumber); + size_t droppedBlocks = data->sequenceNumber() - itsNextSequenceNumber; + const string streamNrStr = '[' + lexical_cast<string>(itsStreamNr) + ']'; if (droppedBlocks > 0) { @@ -106,7 +106,9 @@ namespace LOFAR itsBlocksDropped * static_cast<float>(itsBlockDuration)); } - itsNextSequenceNumber = data->sequenceNumber() + 1; + if (data->doReadWithSequenceNumber()) { + itsNextSequenceNumber = data->sequenceNumber() + 1; + } // else, droppedBlocks is useless, but itsBlocksWritten is still useful itsBlocksWritten++; itsMdLogger.log(itsMdKeyPrefix + PN_COP_DROPPING + streamNrStr,