コード例 #1
0
ファイル: GVSP.hpp プロジェクト: posilva/dune
    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");
                }
            }
        }
    }
コード例 #2
0
ファイル: GVSP.hpp プロジェクト: LSTS/dune
      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"));
            }
          }
        }
      }