Мне нужна реализация циклического буфера, которая поддерживает чтение с возможностью поиска. Мой вариант использования:
В моем коде я собираю сообщения журнала. В конце концов, пользователь может посетить страницу, которая показывает его красиво отформатированным. Чтобы сообщения не заполняли оперативную память, мне нужна структура FIFO фиксированного размера. Если пользователь долго не посещает страницу, сообщения удаляются. Это нормально.
Пока пользователь остается на странице, к странице должны добавляться новые сообщения журнала. С помощью JavaScript пользователь может определить, сколько сообщений следует хранить. Это полностью не зависит от размера буфера в моем приложении. Поэтому мне нужен читатель структуры данных, который я могу использовать для перебора любых новых элементов.
Если пользователь перезагружает страницу или загружает ее в первый раз, мне нужно установить считыватель на самый старый элемент в FIFO.
По мере добавления сообщений ридер должен обновляться. Если браузеру не удается получить новые сообщения достаточно быстро, читатель должен в конечном итоге указать на самое старое сообщение в FIFO. Это означает, что пользователь может пропустить пару сообщений. Это не идеально, но это должно быть необычным случаем. Если бы читатель мог сказать мне «пропустил 5 сообщений», это было бы прекрасно, но я могу жить и без этого.
Знаете ли вы существующую реализацию, которая предлагает это?