Browse Source

kvs_stream

221V 5 years ago
parent
commit
ebe8177282
2 changed files with 176 additions and 3 deletions
  1. 3 3
      man/kvs_stream.htm
  2. 173 0
      man/ua/kvs_stream.htm

+ 3 - 3
man/kvs_stream.htm

@@ -50,7 +50,7 @@
       and use it in your applications without importing <b>synrc/kvs</b> dependency,
       as this module is self-containing.
       The possible applications are: public and private feeds, FIFO queues,
-   unread messages, chat applications, blockchain, etc.<br><br>
+   unread messages, chat applications, blockchain etc.<br><br>
     </section>
     <section>
 
@@ -138,12 +138,12 @@
 <h4>next(#reader{}) -> #reader{}.</h4>
 
 <p>Moves cursor to next. Consume data down from top.
-   Reutrn error if lists is empty, otherwise next element or last.</p>
+   Return error if list is empty, otherwise next element or last.</p>
 
 <h4>prev(#reader{}) -> #reader{}.</h4>
 
 <p>Moves cursor to prev. Consume data up from bottom.
-   Reutrn error if lists is empty, otherwise next element or last.</p>
+   Return error if list is empty, otherwise next element or last.</p>
 
 <h4>drop(#reader{}) -> #reader{}.</h4>
 

+ 173 - 0
man/ua/kvs_stream.htm

@@ -0,0 +1,173 @@
+<!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> &mdash; створює та повертає курсор запису до бази даних.</li>
+            <li><b><a href="#reader">reader/1</a></b> &mdash; створює та повертає курсор зчитування до бази даних.</li>
+            <li><b><a href="#save">save/1</a></b> &mdash; зберігає курсор до бази даних.</li>
+            <li><b><a href="#load">load_reader/1</a></b> &mdash; підзавантажує збережений курсор зчитування.</li>
+            <li><b><a href="#load">load_writer/1</a></b> &mdash; підзавантажує збережений курсор запису.</li>
+            <li><b><a href="#top">top/1</a></b> &mdash; повертає початок (вершину) ланцюжка.</li>
+            <li><b><a href="#bot">bot/1</a></b> &mdash; повертає закінчення (основу) ланцюжка.</li>
+            <li><b><a href="#next">next/1</a></b> &mdash; переміщає курсор зчитування на наступний елемент.</li>
+            <li><b><a href="#prev">prev/1</a></b> &mdash; переміщає курсор зчитування на попередній елемент.</li>
+            <li><b><a href="#take">take/1</a></b> &mdash; повертає N елементів з курсору зчитування.</li>
+            <li><b><a href="#drop">drop/1</a></b> &mdash; пропускає N елементів з курсору зчитування.</li>
+            <li><b><a href="#add">add/1</a></b> &mdash; додає елемент до списку.</li>
+            <li><b><a href="#append">append/2</a></b> &mdash; додає елемент в канал.</li>
+            <li><b><a href="#append">cut/2</a></b> &mdash; очищає канал до заданої мітки 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&mdash;2019 &copy; Synrc Research Center
+</footer>
+
+</body>
+</html>