Program Listing for File ParsedPacketBuffer.h

Return to documentation for file (/tmp/ws/src/sick_safetyscanners_base/include/sick_safetyscanners_base/datastructure/ParsedPacketBuffer.h)

// this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-

// -- BEGIN LICENSE BLOCK ----------------------------------------------

// -- END LICENSE BLOCK ------------------------------------------------

//----------------------------------------------------------------------
//----------------------------------------------------------------------

#ifndef SICK_SAFETYSCANNERS_BASE_DATASTRUCTURE_PARSEDPACKETBUFFER_H
#define SICK_SAFETYSCANNERS_BASE_DATASTRUCTURE_PARSEDPACKETBUFFER_H

#include <iostream>
#include <stdint.h>
#include <string>
#include <vector>

#include <boost/array.hpp>
#include <boost/asio.hpp>

#include "sick_safetyscanners_base/datastructure/DatagramHeader.h"
#include "sick_safetyscanners_base/datastructure/PacketBuffer.h"


namespace sick {
namespace datastructure {


class ParsedPacketBuffer
{
public:
  typedef std::vector<ParsedPacketBuffer> ParsedPacketBufferVector;

  ParsedPacketBuffer(const sick::datastructure::PacketBuffer& packet_buffer,
                     sick::datastructure::DatagramHeader datagram_header);

  static bool sortForIncreasingOffset(const ParsedPacketBuffer& ppb1,
                                      const ParsedPacketBuffer& ppb2)
  {
    return ppb1.m_datagram_header.getFragmentOffset() < ppb2.m_datagram_header.getFragmentOffset();
  }

  sick::datastructure::PacketBuffer getPacketBuffer() const;

  void setPacketBuffer(const sick::datastructure::PacketBuffer& packet_buffer);

private:
  sick::datastructure::PacketBuffer m_packet_buffer;

  sick::datastructure::DatagramHeader m_datagram_header;
};


} // namespace datastructure
} // namespace sick

#endif // SICK_SAFETYSCANNERS_BASE_DATASTRUCTURE_PACKETBUFFER_H