123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="description" content="" />
- <meta name="author" content="Maxim Sokhatsky" />
- <title>STREAM</title>
- <link rel="stylesheet" href="https://synrc.space/synrc.css" />
- </head>
- <body>
- <nav>
- <a href='https://n2o.dev'>DEV</a>
- <a href='https://kvs.n2o.space'>KVS</a>
- <a href='#' style="background:#ededed;">STREAM</a>
- </nav>
- <header>
- <a href="../../index.html"><img src="https://n2o.space/img/Synrc Neo.svg"></a>
- <h1>STREAM</h1>
- </header>
- <main>
- <section>
- <h3>ВСТУП</h3>
- <p>Модуль STREAM пропонує інтерфейс фолдів, акумуляторів за персистентного зберігання ланцюжків даних.
- </p>
- <p><blockquote><p><ul>
- <li><b><a href="#writer">writer/1</a></b> — створює та повертає курсор запису до бази даних.</li>
- <li><b><a href="#reader">reader/1</a></b> — створює та повертає курсор зчитування до бази даних.</li>
- <li><b><a href="#save">save/1</a></b> — зберігає курсор до бази даних.</li>
- <li><b><a href="#load">load_reader/1</a></b> — підзавантажує збережений курсор зчитування.</li>
- <li><b><a href="#load">load_writer/1</a></b> — підзавантажує збережений курсор запису.</li>
- <li><b><a href="#top">top/1</a></b> — повертає початок (вершину) ланцюжка.</li>
- <li><b><a href="#bot">bot/1</a></b> — повертає закінчення (основу) ланцюжка.</li>
- <li><b><a href="#next">next/1</a></b> — переміщає курсор зчитування на наступний елемент.</li>
- <li><b><a href="#prev">prev/1</a></b> — переміщає курсор зчитування на попередній елемент.</li>
- <li><b><a href="#take">take/1</a></b> — повертає N елементів з курсору зчитування.</li>
- <li><b><a href="#drop">drop/1</a></b> — пропускає N елементів з курсору зчитування.</li>
- <li><b><a href="#add">add/1</a></b> — додає елемент до списку.</li>
- <li><b><a href="#append">append/2</a></b> — додає елемент в канал.</li>
- <li><b><a href="#append">cut/2</a></b> — очищає канал до заданої мітки timestamp.</li>
- </ul></p></blockquote></p>
- <p>
- Ви може взяти <a style="margin-bottom:30px;"
- href="https://raw.githubusercontent.com/synrc/kvs/master/src/kvs_stream.erl">kvs_stream</a>
- і використовувати у своїх додатках без імпортування залежності <b>synrc/kvs</b>,
- оскільки даний модуль є самодостатнім.
- Додатками можуть бути: публічні та приватні канали/стрічки новин, FIFO черги,
- непрочитані повідомлення, чат, блокчейн etc.<br><br>
- </section>
- <section>
- <h3>WRITER</h3>
- <p>Курсор запису передставляє собою додавання деяких кешованих значень до списку-ланцюжка.
- Наприклад, розмір ланцюжка, перший елемент ланцюжка, кешоване значення
- попереднього записаного повідомлення, та поле для передачі аргументів stream функціям, таким, як add.</p>
- <figure><code>
- -record(writer, { id = [] :: term(),
- count = 0 :: integer(),
- cache = [] :: [] | tuple(),
- args = [] :: term(),
- first = [] :: [] | tuple() } ).
- </code></figure>
- <p>Щоб додати дані до бази даних, спочатку потрібно створити курсор запису,
- встановити запис з мета-інформацією в поле аргументів, та викликати функцію save.</p>
- <h4>writer(term()) -> #writer{}.</h4>
- <p>Створює курсор запису.</p>
- <h4>add(#writer{}) -> #writer{}.</h4>
- <p>Додає елемент до списку, на який вказує курсор запису.</p>
- <h4>load_writer(#writer{}) -> #writer{}.</h4>
- <p>Підзавантажує курсор запису.</p>
- <h4>save(#writer{}) -> #writer{}.</h4>
- <p>Переміщує курсор запису до бази даних.</p>
- </section>
- <section>
- <h3>READER</h3>
- <figure><figcaption>Курсор зчитування</figcaption><code>
- -record(reader, { id = [] :: integer(),
- pos = 0 :: [] | integer(),
- cache = [] :: [] | integer(),
- args = [] :: term(),
- feed = [] :: term(),
- dir = 0 :: 0 | 1 } ).
- </code></figure>
- <h4>reader(integer()) -> #reader{}.</h4>
- <p>Створює курсор зчитування.</p>
- <h4>load_reader(#reader{}) -> #reader{}.</h4>
- <p>Підзавантажує курсор зчитування з бази даних.</p>
- <h4>save(#reader{}) -> #reader{}.</h4>
- <p>Переміщує курсор зчитування до бази даних.</p>
- <h4>top(#reader{}) -> #reader{}.</h4>
- <p>Переміщає курсор в початок (вершину) списку.</p>
- <h4>bot(#reader{}) -> #reader{}.</h4>
- <p>Переміщає курсор в закінчення (основу) списку.</p>
- </section>
- <section>
- <h3>ITER</h3>
- <figure><figcaption>KVS Stream Iterator</figcaption><code>
- -record(iter, { id = [] :: [] | integer(),
- next = [] :: [] | integer(),
- prev = [] :: [] | integer() } ).
- </code></figure>
- <h4>next(#reader{}) -> #reader{}.</h4>
- <p>Переміщає курсор на наступний елемент. Споживає дані з вершини.
- Повертає помилку, якщо список є пустим, в іншому випадку — наступний чи останній елемент.</p>
- <h4>prev(#reader{}) -> #reader{}.</h4>
- <p>Переміщає курсор на попередній елемент. Споживає дані з основи.
- Повертає помилку, якщо список є пустим, в іншому випадку — наступний чи останній елемент.</p>
- <h4>drop(#reader{}) -> #reader{}.</h4>
- <p>Пропускає N елементів, розпочинаючи з курсора.</p>
- <h4>take(#reader{}) -> #reader{}.</h4>
- <p>Пробує споживати N записів зі stream, використовуючи його поточне значення та напрям.
- Повертає споживані дані. Зазвичай ви шукаєте певну позицію, і далі споживаєте деякі дані.</p>
- </section>
- <section>
- <p>Цей модуль може бути пов'язаним з:
- <a href="kvs.htm"><b>kvs</b></a>,
- <a href="kvs_st.htm"><b>kvs_st</b></a>.
- </p>
- </section>
- </main>
- <footer>
- 2005—2019 © Synrc Research Center
- </footer>
- </body>
- </html>
|