Program Listing for File TCPPacketMerger.h
↰ Return to documentation for file (/tmp/ws/src/sick_safetyscanners_base/include/sick_safetyscanners_base/data_processing/TCPPacketMerger.h
)
// this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-
// -- BEGIN LICENSE BLOCK ----------------------------------------------
// -- END LICENSE BLOCK ------------------------------------------------
//----------------------------------------------------------------------
//----------------------------------------------------------------------
#ifndef SICK_SAFETYSCANNERS_BASE_DATA_PROCESSING_TCPPACKETMERGER_H
#define SICK_SAFETYSCANNERS_BASE_DATA_PROCESSING_TCPPACKETMERGER_H
#include "sick_safetyscanners_base/datastructure/PacketBuffer.h"
#include "sick_safetyscanners_base/data_processing/ParseDatagramHeader.h"
#include <mutex>
#include <vector>
namespace sick {
namespace data_processing {
class TCPPacketMerger
{
public:
TCPPacketMerger() = delete;
TCPPacketMerger(std::size_t target_size);
TCPPacketMerger(const TCPPacketMerger&) = delete;
TCPPacketMerger& operator=(const TCPPacketMerger&) = delete;
bool isComplete() const;
bool isEmpty() const;
bool addTCPPacket(const sick::datastructure::PacketBuffer& buffer);
sick::datastructure::PacketBuffer getDeployedPacketBuffer();
std::size_t getTargetSize() const;
void setTargetSize(std::size_t target_size);
// void reset();
private:
bool m_is_complete;
sick::datastructure::PacketBuffer m_deployed_packet_buffer;
std::vector<sick::datastructure::PacketBuffer> m_buffer_vector;
std::mutex m_buffer_mutex;
std::size_t m_target_size;
bool addToMap(const sick::datastructure::PacketBuffer& new_packet);
bool deployPacketIfComplete();
std::size_t getCurrentSize();
bool deployPacket();
};
} // namespace data_processing
} // namespace sick
#endif // SICK_SAFETYSCANNERS_BASE_DATA_PROCESSING_TCPPACKETMERGER_H