void run(void) { Frame* frame = NULL; IOMultiplexing iom; m_socket.addToPoll(iom); while (!isStopping()) { if (!iom.poll(1.0)) continue; int rv = m_socket.read((char*)m_buffer, m_buffer_capacity); if (rv == c_header_size) { m_count = 0; frame = dequeueClean(); if (frame == NULL) { DUNE_ERR("GVSP", "buffer overrun"); break; } frame->setTimeStamp(); } else if (rv == c_footer_size) { enqueueDirty(frame); frame = NULL; } else { if (frame != NULL) { uint16_t packet_number = 0; ByteCopy::fromBE(packet_number, m_buffer + 6); m_count += frame->writePacket(packet_number, m_buffer + 8, rv - 8); } else { DUNE_ERR("GVSP", "null frame"); } } } }
void run(void) { Frame* frame = NULL; while (!isStopping()) { if (!Poll::poll(m_socket, 1.0)) continue; size_t rv = m_socket.read(m_buffer, m_buffer_capacity); if (rv == c_header_size) { m_count = 0; frame = dequeueClean(); if (frame == NULL) { m_task->err(DTR("buffer overrun")); break; } frame->setTimeStamp(); } else if (rv == c_footer_size) { enqueueDirty(frame); frame = NULL; } else { if (frame != NULL) { uint16_t packet_number = 0; ByteCopy::fromBE(packet_number, m_buffer + 6); m_count += frame->writePacket(packet_number, m_buffer + 8, rv - 8); } else { m_task->err(DTR("null frame")); } } } }