43 std::queue<E> m_output_queue;
44 std::size_t m_current_num_bytes;
52 output_queue() noexcept : m_output_queue(), m_current_num_bytes(0u) { }
55 std::optional<E> get_next_element() {
56 if (m_output_queue.empty()) {
57 return std::optional<E> { };
59 E elem = m_output_queue.front();
61 m_current_num_bytes -= elem.size();
62 return std::optional<E> {elem};
65 void add_element(
const E& element) {
66 m_output_queue.push(element);
67 m_current_num_bytes += element.size();
74 void clear()
noexcept {
75 std::queue<E>().swap(m_output_queue);
76 m_current_num_bytes = 0u;