Program Listing for File UDPPacketMerger.h
↰ Return to documentation for file (/tmp/ws/src/sick_safetyscanners_base/include/sick_safetyscanners_base/data_processing/UDPPacketMerger.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_UDPPACKETMERGER_H
#define SICK_SAFETYSCANNERS_BASE_DATA_PROCESSING_UDPPACKETMERGER_H
#include "sick_safetyscanners_base/datastructure/PacketBuffer.h"
#include "sick_safetyscanners_base/datastructure/ParsedPacketBuffer.h"
#include "sick_safetyscanners_base/data_processing/ParseDatagramHeader.h"
#include <algorithm>
#include <mutex>
namespace sick {
namespace data_processing {
class UDPPacketMerger
{
public:
UDPPacketMerger();
bool isComplete() const;
bool addUDPPacket(const sick::datastructure::PacketBuffer& buffer);
sick::datastructure::PacketBuffer getDeployedPacketBuffer();
private:
bool m_is_complete;
sick::datastructure::PacketBuffer m_deployed_packet_buffer;
std::map<uint32_t, sick::datastructure::ParsedPacketBuffer::ParsedPacketBufferVector>
m_parsed_packet_buffer_map;
std::mutex m_buffer_mutex;
bool addToMap(const sick::datastructure::PacketBuffer& buffer,
const sick::datastructure::DatagramHeader& header);
bool deployPacketIfComplete(datastructure::DatagramHeader& header);
bool checkIfComplete(sick::datastructure::DatagramHeader& header);
uint32_t calcualteCurrentLengthOfParsedPacketBuffer(
const sick::datastructure::ParsedPacketBuffer::ParsedPacketBufferVector& vec);
sick::datastructure::ParsedPacketBuffer::ParsedPacketBufferVector
getSortedParsedPacketBufferForIdentification(const sick::datastructure::DatagramHeader& header);
std::vector<uint8_t> removeHeaderFromParsedPacketBuffer(
const sick::datastructure::ParsedPacketBuffer::ParsedPacketBufferVector& vec);
};
} // namespace data_processing
} // namespace sick
#endif // SICK_SAFETYSCANNERS_BASE_DATA_PROCESSING_UDPPACKETMERGER_H