Program Listing for File PacketBuffer.h

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

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

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

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

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

#ifndef SICK_SAFETYSCANNERS_BASE_DATASTRUCTURE_PACKETBUFFER_H
#define SICK_SAFETYSCANNERS_BASE_DATASTRUCTURE_PACKETBUFFER_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 {

const uint32_t MAXSIZE = 10000;

class PacketBuffer
{
public:
  typedef boost::array<uint8_t, MAXSIZE> ArrayBuffer;

  PacketBuffer();

  PacketBuffer(const std::vector<uint8_t>& buffer);

  PacketBuffer(const ArrayBuffer& buffer, const size_t& length);

  static uint32_t getMaxSize() { return MAXSIZE; }

  std::shared_ptr<std::vector<uint8_t> const> getBuffer() const;

  void setBuffer(const std::vector<uint8_t>& buffer);

  void setBuffer(const ArrayBuffer& buffer, const size_t& length);

  size_t getLength() const;


private:
  std::shared_ptr<std::vector<uint8_t> const> m_buffer;
};

} // namespace datastructure
} // namespace sick

#endif // SICK_SAFETYSCANNERS_BASE_DATASTRUCTURE_PACKETBUFFER_H