ВСТУП
Модуль STREAM пропонує інтерфейс фолдів, акумуляторів за персистентного зберігання ланцюжків даних.
- writer/1 — створює та повертає курсор запису до бази даних.
- reader/1 — створює та повертає курсор зчитування до бази даних.
- save/1 — зберігає курсор до бази даних.
- load_reader/1 — підзавантажує збережений курсор зчитування.
- load_writer/1 — підзавантажує збережений курсор запису.
- top/1 — повертає початок (вершину) ланцюжка.
- bot/1 — повертає закінчення (основу) ланцюжка.
- next/1 — переміщає курсор зчитування на наступний елемент.
- prev/1 — переміщає курсор зчитування на попередній елемент.
- take/1 — повертає N елементів з курсору зчитування.
- drop/1 — пропускає N елементів з курсору зчитування.
- add/1 — додає елемент до списку.
- append/2 — додає елемент в канал.
- cut/2 — очищає канал до заданої мітки timestamp.
Ви може взяти kvs_stream
і використовувати у своїх додатках без імпортування залежності synrc/kvs,
оскільки даний модуль є самодостатнім.
Додатками можуть бути: публічні та приватні канали/стрічки новин, FIFO черги,
непрочитані повідомлення, чат, блокчейн etc.
WRITER
Курсор запису передставляє собою додавання деяких кешованих значень до списку-ланцюжка. Наприклад, розмір ланцюжка, перший елемент ланцюжка, кешоване значення попереднього записаного повідомлення, та поле для передачі аргументів stream функціям, таким, як add.
Щоб додати дані до бази даних, спочатку потрібно створити курсор запису, встановити запис з мета-інформацією в поле аргументів, та викликати функцію save.
writer(term()) -> #writer{}.
Створює курсор запису.
add(#writer{}) -> #writer{}.
Додає елемент до списку, на який вказує курсор запису.
load_writer(#writer{}) -> #writer{}.
Підзавантажує курсор запису.
save(#writer{}) -> #writer{}.
Переміщує курсор запису до бази даних.
READER
reader(integer()) -> #reader{}.
Створює курсор зчитування.
load_reader(#reader{}) -> #reader{}.
Підзавантажує курсор зчитування з бази даних.
save(#reader{}) -> #reader{}.
Переміщує курсор зчитування до бази даних.
top(#reader{}) -> #reader{}.
Переміщає курсор в початок (вершину) списку.
bot(#reader{}) -> #reader{}.
Переміщає курсор в закінчення (основу) списку.
ITER
next(#reader{}) -> #reader{}.
Переміщає курсор на наступний елемент. Споживає дані з вершини. Повертає помилку, якщо список є пустим, в іншому випадку — наступний чи останній елемент.
prev(#reader{}) -> #reader{}.
Переміщає курсор на попередній елемент. Споживає дані з основи. Повертає помилку, якщо список є пустим, в іншому випадку — наступний чи останній елемент.
drop(#reader{}) -> #reader{}.
Пропускає N елементів, розпочинаючи з курсора.
take(#reader{}) -> #reader{}.
Пробує споживати N записів зі stream, використовуючи його поточне значення та напрям. Повертає споживані дані. Зазвичай ви шукаєте певну позицію, і далі споживаєте деякі дані.