diff --git a/src/utils/ring_buffer/ring_buffer.h b/src/utils/ring_buffer/ring_buffer.h index 068ca21..e3f0f2a 100644 --- a/src/utils/ring_buffer/ring_buffer.h +++ b/src/utils/ring_buffer/ring_buffer.h @@ -122,6 +122,24 @@ namespace SmoothUIToolKit return true; } + bool peekAllWithBreak(std::function valueCallback) + { + if (isEmpty()) + return false; + + size_t peek_index = _data.r_index; + bool stop_peeking = false; + while (peek_index != _data.w_index) + { + valueCallback(_data.buffer[peek_index], stop_peeking); + peek_index = (peek_index + 1) % _data.capacity; + + if (stop_peeking) + break; + } + return true; + } + size_t valueNum() { if (isFull())