Ну типа это небольшой кеш.
Есть продюсер, к нему подключены несколько консьюмеров. Каждый консьюмер периодически отваливается от продюсера. При переподключении ему иногда нужно получить пару событий, которые он профукал пока был оффлайн. Это чем-то похоже на телеграмовский getUpdates(my_last_updateid) только вместо id тут время в секундах: клиент при переключении говорит серверу «у меня последний ивент с timestamp ххх, давай мне события, которые были после ххх». А, ну и от наивного подхода это отличается тем, что для одного продюсера надо поддерживать несколько консьюмеров.
На коленке
Data::RingBuffer::Time, в который ещё надо пару правок внести (возможно использовать time::hires, хотя для моей задачи гранулярности в секунду более чем достаточно).
А у самого
Data::RingBuffer правильно работает закольцованность (в отличие от
RingBuffer, у которого нарушен fifo). На сране ещё валяется Tie::Scalar::RingBuffer, но он тоже не подходит, потому что это простой итератор.