Vanetza
 
Loading...
Searching...
No Matches
pdu_conversion.hpp
1#ifndef PDU_CONVERSION_HPP_XLCSI42E
2#define PDU_CONVERSION_HPP_XLCSI42E
3
4#include <vanetza/common/byte_buffer.hpp>
5#include <vanetza/common/byte_buffer_convertible.hpp>
6#include <vanetza/geonet/pdu.hpp>
7#include <memory>
8
9namespace vanetza
10{
11namespace convertible
12{
13
14template<>
15struct byte_buffer_impl<std::unique_ptr<vanetza::geonet::Pdu>> : public byte_buffer
16{
17 byte_buffer_impl(std::unique_ptr<vanetza::geonet::Pdu> pdu) :
18 m_pdu(std::move(pdu)) {}
19
20 void convert(ByteBuffer& dest) const override;
21 std::size_t size() const override;
22 std::unique_ptr<byte_buffer> duplicate() const override;
23
24 const std::unique_ptr<vanetza::geonet::Pdu> m_pdu;
25};
26
27} // namespace convertible
28
29namespace geonet
30{
31
32/**
33 * Fetch PDU from byte buffer convertible
34 * \param conv source convertible
35 * \return PDU pointer or nullptr if cast failed
36 * */
37Pdu* pdu_cast(ByteBufferConvertible& conv);
38
39} // namespace geonet
40} // namespace vanetza
41
42#endif /* PDU_CONVERSION_HPP_XLCSI42E */
43
STL namespace.