14 virtual bool parse(uint8_t* buf,
size_t buf_len, std::vector<std::unique_ptr<PFPacket>>& results,
size_t& used)
16 std::unique_ptr<T> packet = std::make_unique<T>();
17 uint32_t serial_size = packet->get_size();
18 uint8_t* orig_buf = buf;
22 while (buf_len >= serial_size)
24 int start = packet->find_packet_start(buf, buf_len);
27 ROS_DEBUG(
"No magic number found. Invalid packet.");
32 if (buf_len < serial_size)
36 if (!packet->parse_buf(buf, buf_len, remainder, p_size))
39 results.push_back(std::move(packet));
44 used = buf - orig_buf;
45 packet = std::make_unique<T>();
49 ROS_DEBUG(
"Received data smaller than header size");
virtual bool parse(uint8_t *buf, size_t buf_len, std::vector< std::unique_ptr< PFPacket >> &results, size_t &used)