10 #include <boost/optional.hpp> 
   14 namespace uhd { 
namespace utils { 
namespace chdr {
 
   27     template <
typename payload_t>
 
   31         boost::optional<uint64_t> timestamp = boost::none,
 
   32         std::vector<uint64_t> metadata      = {});
 
   40         std::vector<uint8_t> payload_data,
 
   41         boost::optional<uint64_t> timestamp = boost::none,
 
   42         std::vector<uint64_t> mdata         = {});
 
   60     boost::optional<uint64_t> get_timestamp() 
const;
 
   66     void set_timestamp(boost::optional<uint64_t> timestamp);
 
   72     const std::vector<uint64_t>& get_metadata() 
const;
 
   78     void set_metadata(std::vector<uint64_t> metadata);
 
   85     std::vector<uint8_t> serialize_to_byte_vector(
 
   94     template <
typename OutputIterator>
 
   95     void serialize(OutputIterator first,
 
  107     template <
typename InputIterator>
 
  117     size_t get_packet_len() 
const;
 
  123     const std::vector<uint8_t>& get_payload_bytes() 
const;
 
  129     void set_payload_bytes(std::vector<uint8_t> bytes);
 
  136     template <
typename payload_t>
 
  145     template <
typename payload_t>
 
  150     const std::string to_string() 
const;
 
  153     template <
typename payload_t>
 
  154     const std::string to_string_with_payload(
 
  158     void serialize_ptr(
endianness_t endianness, 
void* start, 
void* end) 
const;
 
  163     inline void set_header_lengths()
 
  166         _header.set_length(get_packet_len());
 
  170     std::vector<uint8_t> _payload;
 
  171     boost::optional<uint64_t> _timestamp;
 
  172     std::vector<uint64_t> _mdata;