13 #include <boost/none.hpp>
14 #include <boost/optional.hpp>
20 namespace uhd {
namespace utils {
namespace chdr {
33 template <
typename payload_t>
37 boost::optional<uint64_t> timestamp = boost::none,
38 std::vector<uint64_t> metadata = {});
46 std::vector<uint8_t> payload_data,
47 boost::optional<uint64_t> timestamp = boost::none,
48 std::vector<uint64_t> mdata = {});
66 boost::optional<uint64_t> get_timestamp()
const;
72 void set_timestamp(boost::optional<uint64_t> timestamp);
78 const std::vector<uint64_t>& get_metadata()
const;
84 void set_metadata(std::vector<uint64_t> metadata);
91 std::vector<uint8_t> serialize_to_byte_vector(
100 template <
typename OutputIterator>
101 void serialize(OutputIterator first,
113 template <
typename InputIterator>
123 size_t get_packet_len()
const;
129 const std::vector<uint8_t>& get_payload_bytes()
const;
135 void set_payload_bytes(std::vector<uint8_t> bytes);
142 template <
typename payload_t>
151 template <
typename payload_t>
156 std::string to_string()
const;
159 template <
typename payload_t>
160 std::string to_string_with_payload(
164 void serialize_ptr(
endianness_t endianness,
void* start,
void* end)
const;
169 inline void set_header_lengths()
172 _header.set_length(get_packet_len());
176 std::vector<uint8_t> _payload;
177 boost::optional<uint64_t> _timestamp;
178 std::vector<uint64_t> _mdata;