Intermittent update to EDoc in gh-pages

This commit is contained in:
Scott Lystig Fritchie 2015-12-08 21:38:34 +09:00
parent 04233dd328
commit de3764b2bc
33 changed files with 1326 additions and 20 deletions

View file

@ -45,6 +45,6 @@
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -37,6 +37,6 @@
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -59,6 +59,6 @@ could add new entries to this ETS table.</p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -284,6 +284,6 @@ that the caller has checked basic projection data structure contents.</p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -86,6 +86,6 @@ in sync. In theory, that's lower overhead than the procedure used here.</p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -166,6 +166,6 @@ list.</p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

82
edoc/machi_cinfo.html Normal file
View file

@ -0,0 +1,82 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module machi_cinfo</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
</head>
<body bgcolor="white">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<hr>
<h1>Module machi_cinfo</h1>
<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>cluster_info callback module for machi specific information
gathering.
<h2><a name="description">Description</a></h2>cluster_info callback module for machi specific information
gathering.
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#chain_manager-1">chain_manager/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#cluster_info_generator_funs-0">cluster_info_generator_funs/0</a></td><td></td></tr>
<tr><td valign="top"><a href="#cluster_info_init-0">cluster_info_init/0</a></td><td></td></tr>
<tr><td valign="top"><a href="#dump-0">dump/0</a></td><td></td></tr>
<tr><td valign="top"><a href="#fitness-1">fitness/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#flu1-1">flu1/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#private_projection-1">private_projection/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#public_projection-1">public_projection/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#register-0">register/0</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="chain_manager-1">chain_manager/1</a></h3>
<div class="spec">
<p><tt>chain_manager(FluName::atom()) -&gt; term()</tt><br></p>
</div>
<h3 class="function"><a name="cluster_info_generator_funs-0">cluster_info_generator_funs/0</a></h3>
<div class="spec">
<p><tt>cluster_info_generator_funs() -&gt; [{string(), fun((pid()) -&gt; ok)}]</tt><br></p>
</div>
<h3 class="function"><a name="cluster_info_init-0">cluster_info_init/0</a></h3>
<div class="spec">
<p><tt>cluster_info_init() -&gt; ok</tt><br></p>
</div>
<h3 class="function"><a name="dump-0">dump/0</a></h3>
<div class="spec">
<p><tt>dump() -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="fitness-1">fitness/1</a></h3>
<div class="spec">
<p><tt>fitness(FluName::atom()) -&gt; term()</tt><br></p>
</div>
<h3 class="function"><a name="flu1-1">flu1/1</a></h3>
<div class="spec">
<p><tt>flu1(FluName::atom()) -&gt; [{atom(), term()}]</tt><br></p>
</div>
<h3 class="function"><a name="private_projection-1">private_projection/1</a></h3>
<div class="spec">
<p><tt>private_projection(FluName::atom()) -&gt; [{atom(), term()}]</tt><br></p>
</div>
<h3 class="function"><a name="public_projection-1">public_projection/1</a></h3>
<div class="spec">
<p><tt>public_projection(FluName::atom()) -&gt; [{atom(), term()}]</tt><br></p>
</div>
<h3 class="function"><a name="register-0">register/0</a></h3>
<div class="spec">
<p><tt>register() -&gt; ok</tt><br></p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

44
edoc/machi_config.html Normal file
View file

@ -0,0 +1,44 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module machi_config</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
</head>
<body bgcolor="white">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<hr>
<h1>Module machi_config</h1>
<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Configuration consulting utilities.
<h2><a name="description">Description</a></h2>Configuration consulting utilities. Some conventions:
- The function name should match with exact configuration
name in <code>app.config</code> or <code>advanced.config</code> of <code>machi</code> section.
- The default value of that configuration is expected to be in
cuttlefish schema file. Otherwise some macro in headers may
be chosen.
- Documentation of the configuration is supposed to be written
in cuttlefish schema file, rather than @doc section of the function.
- spec of the function should be written.
- Returning <code>undefined</code> is strongly discouraged. Return some default
value instead.
- <code>application:get_env/3</code> is recommended. See <code>max_file_size/0</code> for
example.
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#max_file_size-0">max_file_size/0</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="max_file_size-0">max_file_size/0</a></h3>
<div class="spec">
<p><tt>max_file_size() -&gt; pos_integer()</tt><br></p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -258,6 +258,6 @@ function name.)</p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

186
edoc/machi_csum_table.html Normal file
View file

@ -0,0 +1,186 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module machi_csum_table</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
</head>
<body bgcolor="white">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<hr>
<h1>Module machi_csum_table</h1>
<ul class="index"><li><a href="#types">Data Types</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
<h2><a name="types">Data Types</a></h2>
<h3 class="typedecl"><a name="type-byte_sequence">byte_sequence()</a></h3>
<p><tt>byte_sequence() = {Offset::non_neg_integer(), Size::pos_integer() | infinity}</tt></p>
<h3 class="typedecl"><a name="type-table">table()</a></h3>
<p><tt>table() = #machi_csum_table{}</tt></p>
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#all-1">all/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#all_trimmed-2">all_trimmed/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#all_trimmed-3">all_trimmed/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#any_trimmed-3">any_trimmed/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#calc_unwritten_bytes-1">calc_unwritten_bytes/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#close-1">close/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#decode_csum_file_entry-1">decode_csum_file_entry/1</a></td><td>Decode a single <code>binary()</code> blob into an
<code>{Offset,Size,TaggedCSum}</code> tuple.</td></tr>
<tr><td valign="top"><a href="#delete-1">delete/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#encode_csum_file_entry-3">encode_csum_file_entry/3</a></td><td>Encode <code>Offset + Size + TaggedCSum</code> into an <code>iolist()</code> type for
internal storage by the FLU.</td></tr>
<tr><td valign="top"><a href="#encode_csum_file_entry_bin-3">encode_csum_file_entry_bin/3</a></td><td>Encode <code>Offset + Size + TaggedCSum</code> into an <code>binary()</code> type for
internal storage by the FLU.</td></tr>
<tr><td valign="top"><a href="#find-3">find/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#find_leftneighbor-2">find_leftneighbor/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#find_rightneighbor-2">find_rightneighbor/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#foldl_chunks-3">foldl_chunks/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#open-2">open/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#split_checksum_list_blob_decode-1">split_checksum_list_blob_decode/1</a></td><td>Split a <code>binary()</code> blob of <code>checksum_list</code> data into a list of
<code>{Offset,Size,TaggedCSum}</code> tuples.</td></tr>
<tr><td valign="top"><a href="#sync-1">sync/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#trim-3">trim/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#trim-5">trim/5</a></td><td></td></tr>
<tr><td valign="top"><a href="#write-4">write/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#write-6">write/6</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="all-1">all/1</a></h3>
<div class="spec">
<p><tt>all(Machi_csum_table) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="all_trimmed-2">all_trimmed/2</a></h3>
<div class="spec">
<p><tt>all_trimmed(Machi_csum_table::<a href="#type-table">table()</a>, Pos::non_neg_integer()) -&gt; boolean()</tt><br></p>
</div>
<h3 class="function"><a name="all_trimmed-3">all_trimmed/3</a></h3>
<div class="spec">
<p><tt>all_trimmed(Machi_csum_table::<a href="#type-table">table()</a>, Left::non_neg_integer(), Right::non_neg_integer()) -&gt; boolean()</tt><br></p>
</div>
<h3 class="function"><a name="any_trimmed-3">any_trimmed/3</a></h3>
<div class="spec">
<p><tt>any_trimmed(CsumT::<a href="#type-table">table()</a>, Offset::pos_integer(), Size::<a href="machi_dt.html#type-chunk_size">machi_dt:chunk_size()</a>) -&gt; boolean()</tt><br></p>
</div>
<h3 class="function"><a name="calc_unwritten_bytes-1">calc_unwritten_bytes/1</a></h3>
<div class="spec">
<p><tt>calc_unwritten_bytes(Machi_csum_table::<a href="#type-table">table()</a>) -&gt; [<a href="#type-byte_sequence">byte_sequence()</a>]</tt><br></p>
</div>
<h3 class="function"><a name="close-1">close/1</a></h3>
<div class="spec">
<p><tt>close(Machi_csum_table::<a href="#type-table">table()</a>) -&gt; ok</tt><br></p>
</div>
<h3 class="function"><a name="decode_csum_file_entry-1">decode_csum_file_entry/1</a></h3>
<div class="spec">
<p><tt>decode_csum_file_entry(Else::binary()) -&gt; error | {<a href="machi_dt.html#type-file_offset">machi_dt:file_offset()</a>, <a href="machi_dt.html#type-chunk_size">machi_dt:chunk_size()</a>, <a href="machi_dt.html#type-chunk_s">machi_dt:chunk_s()</a>}</tt><br></p>
</div><p><p>Decode a single <code>binary()</code> blob into an
<code>{Offset,Size,TaggedCSum}</code> tuple.</p>
<p>The internal encoding (which is currently exposed to the outside world
via this function and related ones) is:</p>
<ul>
<li> 1 byte: record length
</li>
<li> 8 bytes (unsigned big-endian): byte offset
</li>
<li> 4 bytes (unsigned big-endian): chunk size
</li>
<li> all remaining bytes: tagged checksum (1st byte = type tag)
</li>
</ul>
See <code>machi.hrl</code> for the tagged checksum types, e.g.,
<code>?CSUM_TAG_NONE</code>.</p>
<h3 class="function"><a name="delete-1">delete/1</a></h3>
<div class="spec">
<p><tt>delete(Machi_csum_table::<a href="#type-table">table()</a>) -&gt; ok</tt><br></p>
</div>
<h3 class="function"><a name="encode_csum_file_entry-3">encode_csum_file_entry/3</a></h3>
<div class="spec">
<p><tt>encode_csum_file_entry(Offset::<a href="machi_dt.html#type-file_offset">machi_dt:file_offset()</a>, Size::<a href="machi_dt.html#type-chunk_size">machi_dt:chunk_size()</a>, TaggedCSum::<a href="machi_dt.html#type-chunk_s">machi_dt:chunk_s()</a>) -&gt; iolist()</tt><br></p>
</div><p>Encode <code>Offset + Size + TaggedCSum</code> into an <code>iolist()</code> type for
internal storage by the FLU.</p>
<h3 class="function"><a name="encode_csum_file_entry_bin-3">encode_csum_file_entry_bin/3</a></h3>
<div class="spec">
<p><tt>encode_csum_file_entry_bin(Offset::<a href="machi_dt.html#type-file_offset">machi_dt:file_offset()</a>, Size::<a href="machi_dt.html#type-chunk_size">machi_dt:chunk_size()</a>, TaggedCSum::<a href="machi_dt.html#type-chunk_s">machi_dt:chunk_s()</a>) -&gt; binary()</tt><br></p>
</div><p>Encode <code>Offset + Size + TaggedCSum</code> into an <code>binary()</code> type for
internal storage by the FLU.</p>
<h3 class="function"><a name="find-3">find/3</a></h3>
<div class="spec">
<p><tt>find(Machi_csum_table::<a href="#type-table">table()</a>, Offset::<a href="machi_dt.html#type-file_offset">machi_dt:file_offset()</a>, Size::<a href="machi_dt.html#type-file_size">machi_dt:file_size()</a>) -&gt; [{<a href="machi_dt.html#type-file_offset">machi_dt:file_offset()</a>, <a href="machi_dt.html#type-file_size">machi_dt:file_size()</a>, <a href="machi_dt.html#type-chunk_csum">machi_dt:chunk_csum()</a> | trimmed}]</tt><br></p>
</div>
<h3 class="function"><a name="find_leftneighbor-2">find_leftneighbor/2</a></h3>
<div class="spec">
<p><tt>find_leftneighbor(CsumT::<a href="#type-table">table()</a>, Offset::non_neg_integer()) -&gt; undefined | {non_neg_integer(), <a href="machi_dt.html#type-chunk_size">machi_dt:chunk_size()</a>, trimmed | <a href="machi_dt.html#type-chunk_csum">machi_dt:chunk_csum()</a>}</tt><br></p>
</div>
<h3 class="function"><a name="find_rightneighbor-2">find_rightneighbor/2</a></h3>
<div class="spec">
<p><tt>find_rightneighbor(CsumT::<a href="#type-table">table()</a>, Offset::non_neg_integer()) -&gt; undefined | {non_neg_integer(), <a href="machi_dt.html#type-chunk_size">machi_dt:chunk_size()</a>, trimmed | <a href="machi_dt.html#type-chunk_csum">machi_dt:chunk_csum()</a>}</tt><br></p>
</div>
<h3 class="function"><a name="foldl_chunks-3">foldl_chunks/3</a></h3>
<div class="spec">
<p><tt>foldl_chunks(Fun::fun(({non_neg_integer(), non_neg_integer(), term()}, Acc0::term()) -&gt; Acc::term()), Acc0::term(), Machi_csum_table::<a href="#type-table">table()</a>) -&gt; Acc::term()</tt><br></p>
</div>
<h3 class="function"><a name="open-2">open/2</a></h3>
<div class="spec">
<p><tt>open(CSumFilename::string(), Opts::<a href="proplists.html#type-proplist">proplists:proplist()</a>) -&gt; {ok, <a href="#type-table">table()</a>} | {error, <a href="file.html#type-posix">file:posix()</a>}</tt><br></p>
</div>
<h3 class="function"><a name="split_checksum_list_blob_decode-1">split_checksum_list_blob_decode/1</a></h3>
<div class="spec">
<p><tt>split_checksum_list_blob_decode(Bin::binary()) -&gt; {[{<a href="machi_dt.html#type-file_offset">machi_dt:file_offset()</a>, <a href="machi_dt.html#type-chunk_size">machi_dt:chunk_size()</a>, <a href="machi_dt.html#type-chunk_s">machi_dt:chunk_s()</a>}], TrailingJunk::binary()}</tt><br></p>
</div><p>Split a <code>binary()</code> blob of <code>checksum_list</code> data into a list of
<code>{Offset,Size,TaggedCSum}</code> tuples.</p>
<h3 class="function"><a name="sync-1">sync/1</a></h3>
<div class="spec">
<p><tt>sync(Machi_csum_table::<a href="#type-table">table()</a>) -&gt; ok | {error, <a href="file.html#type-posix">file:posix()</a>}</tt><br></p>
</div>
<h3 class="function"><a name="trim-3">trim/3</a></h3>
<div class="spec">
<p><tt>trim(Machi_csum_table::<a href="#type-table">table()</a>, Offset::<a href="machi_dt.html#type-file_offset">machi_dt:file_offset()</a>, Size::<a href="machi_dt.html#type-file_size">machi_dt:file_size()</a>) -&gt; ok | {error, <a href="file.html#type-posix">file:posix()</a>}</tt><br></p>
</div>
<h3 class="function"><a name="trim-5">trim/5</a></h3>
<div class="spec">
<p><tt>trim(CsumT, Offset, Size, LeftUpdate, RightUpdate) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="write-4">write/4</a></h3>
<div class="spec">
<p><tt>write(CsumT::<a href="#type-table">table()</a>, Offset::<a href="machi_dt.html#type-file_offset">machi_dt:file_offset()</a>, Size::<a href="machi_dt.html#type-file_size">machi_dt:file_size()</a>, CSum::<a href="machi_dt.html#type-chunk_csum">machi_dt:chunk_csum()</a> | trimmed) -&gt; ok | {error, trimmed | <a href="file.html#type-posix">file:posix()</a>}</tt><br></p>
</div>
<h3 class="function"><a name="write-6">write/6</a></h3>
<div class="spec">
<p><tt>write(Machi_csum_table, Offset, Size, CSum, LeftUpdate, RightUpdate) -&gt; any()</tt></p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -105,6 +105,6 @@
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

118
edoc/machi_file_proxy.html Normal file
View file

@ -0,0 +1,118 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module machi_file_proxy</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
</head>
<body bgcolor="white">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<hr>
<h1>Module machi_file_proxy</h1>
<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>This is a proxy process which mediates access to Machi FLU
controlled files.
<p><b>Behaviours:</b> <a href="gen_server.html"><tt>gen_server</tt></a>.</p>
<h2><a name="description">Description</a></h2><p>This is a proxy process which mediates access to Machi FLU
controlled files. In particular, it manages the "write-once register"
conceit at the heart of Machi's design.</p>
<p>Read, write and append requests for a single file will be managed
through this proxy. Clients can also request syncs for specific
types of filehandles.</p>
As operations are requested, the proxy keeps track of how many
operations it has performed (and how many errors were generated.)
After a sufficient number of inactivity, the server terminates
itself.
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#append-2">append/2</a></td><td>Append data.</td></tr>
<tr><td valign="top"><a href="#append-4">append/4</a></td><td>Append data to file, supplying client metadata and (if desired) a
reservation for additional space.</td></tr>
<tr><td valign="top"><a href="#read-3">read/3</a></td><td>Read file at offset for length.</td></tr>
<tr><td valign="top"><a href="#read-4">read/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#start_link-3">start_link/3</a></td><td>Start a new instance of the file proxy service.</td></tr>
<tr><td valign="top"><a href="#stop-1">stop/1</a></td><td>Request to stop an instance of the file proxy service.</td></tr>
<tr><td valign="top"><a href="#sync-1">sync/1</a></td><td>Force a sync of all filehandles.</td></tr>
<tr><td valign="top"><a href="#sync-2">sync/2</a></td><td>Force a sync of a specific filehandle type.</td></tr>
<tr><td valign="top"><a href="#trim-4">trim/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#write-3">write/3</a></td><td>Write data at offset.</td></tr>
<tr><td valign="top"><a href="#write-4">write/4</a></td><td>Write data at offset, including the client metadata.</td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="append-2">append/2</a></h3>
<div class="spec">
<p><tt>append(Pid::pid(), Data::binary()) -&gt; {ok, File::string(), Offset::non_neg_integer()} | {error, term()}</tt><br></p>
</div><p>Append data</p>
<h3 class="function"><a name="append-4">append/4</a></h3>
<div class="spec">
<p><tt>append(Pid::pid(), ClientMeta::<a href="proplists.html#type-proplist">proplists:proplist()</a>, Extra::non_neg_integer(), Data::binary()) -&gt; {ok, File::string(), Offset::non_neg_integer()} | {error, term()}</tt><br></p>
</div><p>Append data to file, supplying client metadata and (if desired) a
reservation for additional space. ClientMeta is a proplist and expects the
same keys as write/4.</p>
<h3 class="function"><a name="read-3">read/3</a></h3>
<div class="spec">
<p><tt>read(Pid::pid(), Offset::non_neg_integer(), Length::non_neg_integer()) -&gt; {ok, [{Filename::string(), Offset::non_neg_integer(), Data::binary(), Checksum::binary()}]} | {error, Reason::term()}</tt><br></p>
</div><p>Read file at offset for length. This returns a sequence of all
written and trimmed (optional) bytes that overlaps with requested
offset and length. Borders are not aligned.</p>
<h3 class="function"><a name="read-4">read/4</a></h3>
<div class="spec">
<p><tt>read(Pid::pid(), Offset::non_neg_integer(), Length::non_neg_integer(), Opts::[{no_checksum | no_chunk | needs_trimmed, boolean()}]) -&gt; {ok, [{Filename::string(), Offset::non_neg_integer(), Data::binary(), Checksum::binary()}]} | {error, Reason::term()}</tt><br></p>
</div>
<h3 class="function"><a name="start_link-3">start_link/3</a></h3>
<div class="spec">
<p><tt>start_link(FluName::atom(), Filename::string(), DataDir::string()) -&gt; any()</tt><br></p>
</div><p>Start a new instance of the file proxy service. Takes the filename
and data directory as arguments. This function is typically called by the
<code>machi_file_proxy_sup:start_proxy/2</code> function.</p>
<h3 class="function"><a name="stop-1">stop/1</a></h3>
<div class="spec">
<p><tt>stop(Pid::pid()) -&gt; ok</tt><br></p>
</div><p>Request to stop an instance of the file proxy service.</p>
<h3 class="function"><a name="sync-1">sync/1</a></h3>
<div class="spec">
<p><tt>sync(Pid::pid()) -&gt; ok | {error, term()}</tt><br></p>
</div><p>Force a sync of all filehandles</p>
<h3 class="function"><a name="sync-2">sync/2</a></h3>
<div class="spec">
<p><tt>sync(Pid::pid(), Type::all | data | csum) -&gt; ok | {error, term()}</tt><br></p>
</div><p>Force a sync of a specific filehandle type. Valid types are <code>all</code>, <code>csum</code> and <code>data</code>.</p>
<h3 class="function"><a name="trim-4">trim/4</a></h3>
<div class="spec">
<p><tt>trim(Pid, Offset, Size, TriggerGC) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="write-3">write/3</a></h3>
<div class="spec">
<p><tt>write(Pid::pid(), Offset::non_neg_integer(), Data::binary()) -&gt; ok | {error, term()}</tt><br></p>
</div><p>Write data at offset</p>
<h3 class="function"><a name="write-4">write/4</a></h3>
<div class="spec">
<p><tt>write(Pid::pid(), Offset::non_neg_integer(), ClientMeta::<a href="proplists.html#type-proplist">proplists:proplist()</a>, Data::binary()) -&gt; ok | {error, term()}</tt><br></p>
</div><p>Write data at offset, including the client metadata. ClientMeta is a proplist
that expects the following keys and values:
<ul>
<li><code>client_csum_tag</code> - the type of checksum from the client as defined in the machi.hrl file</li>
<li><code>client_csum</code> - the checksum value from the client</li>
</ul></p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -0,0 +1,51 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module machi_file_proxy_sup</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
</head>
<body bgcolor="white">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<hr>
<h1>Module machi_file_proxy_sup</h1>
<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>This is the main supervisor for the file proxies.
<p><b>Behaviours:</b> <a href="supervisor.html"><tt>supervisor</tt></a>.</p>
<h2><a name="description">Description</a></h2>This is the main supervisor for the file proxies.
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#child_spec-1">child_spec/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#init-1">init/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#start_link-1">start_link/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#start_proxy-3">start_proxy/3</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="child_spec-1">child_spec/1</a></h3>
<div class="spec">
<p><tt>child_spec(FluName) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="init-1">init/1</a></h3>
<div class="spec">
<p><tt>init(X1) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start_link-1">start_link/1</a></h3>
<div class="spec">
<p><tt>start_link(FluName) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start_proxy-3">start_proxy/3</a></h3>
<div class="spec">
<p><tt>start_proxy(FluName, DataDir, Filename) -&gt; any()</tt></p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

120
edoc/machi_fitness.html Normal file
View file

@ -0,0 +1,120 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module machi_fitness</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
</head>
<body bgcolor="white">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<hr>
<h1>Module machi_fitness</h1>
<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
<p><b>Behaviours:</b> <a href="gen_server.html"><tt>gen_server</tt></a>.</p>
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#add_admin_down-3">add_admin_down/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#code_change-3">code_change/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#delete_admin_down-2">delete_admin_down/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#format_status-2">format_status/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#get_unfit_list-1">get_unfit_list/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#handle_call-3">handle_call/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#handle_cast-2">handle_cast/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#handle_info-2">handle_info/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#init-1">init/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#send_fitness_update_spam-3">send_fitness_update_spam/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#send_spam_to_everyone-1">send_spam_to_everyone/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#start_link-1">start_link/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#terminate-2">terminate/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#trigger_early_adjustment-2">trigger_early_adjustment/2</a></td><td>For testing purposes, we don't want a test to wait for
wall-clock time to elapse before the fitness server makes a
down-&gt;up status decision.</td></tr>
<tr><td valign="top"><a href="#update_local_down_list-3">update_local_down_list/3</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="add_admin_down-3">add_admin_down/3</a></h3>
<div class="spec">
<p><tt>add_admin_down(PidSpec, DownFLU, DownProps) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="code_change-3">code_change/3</a></h3>
<div class="spec">
<p><tt>code_change(OldVsn, S, Extra) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="delete_admin_down-2">delete_admin_down/2</a></h3>
<div class="spec">
<p><tt>delete_admin_down(PidSpec, DownFLU) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="format_status-2">format_status/2</a></h3>
<div class="spec">
<p><tt>format_status(Opt, X2) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="get_unfit_list-1">get_unfit_list/1</a></h3>
<div class="spec">
<p><tt>get_unfit_list(PidSpec) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="handle_call-3">handle_call/3</a></h3>
<div class="spec">
<p><tt>handle_call(Request, From, State) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="handle_cast-2">handle_cast/2</a></h3>
<div class="spec">
<p><tt>handle_cast(Msg, S) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="handle_info-2">handle_info/2</a></h3>
<div class="spec">
<p><tt>handle_info(Info, State) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="init-1">init/1</a></h3>
<div class="spec">
<p><tt>init(Args) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="send_fitness_update_spam-3">send_fitness_update_spam/3</a></h3>
<div class="spec">
<p><tt>send_fitness_update_spam(Pid, FromName, Dict) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="send_spam_to_everyone-1">send_spam_to_everyone/1</a></h3>
<div class="spec">
<p><tt>send_spam_to_everyone(Pid) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start_link-1">start_link/1</a></h3>
<div class="spec">
<p><tt>start_link(Args) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="terminate-2">terminate/2</a></h3>
<div class="spec">
<p><tt>terminate(Reason, S) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="trigger_early_adjustment-2">trigger_early_adjustment/2</a></h3>
<div class="spec">
<p><tt>trigger_early_adjustment(Pid, FLU) -&gt; any()</tt></p>
</div><p>For testing purposes, we don't want a test to wait for
wall-clock time to elapse before the fitness server makes a
down-&gt;up status decision.</p>
<h3 class="function"><a name="update_local_down_list-3">update_local_down_list/3</a></h3>
<div class="spec">
<p><tt>update_local_down_list(PidSpec, Down, MembersDict) -&gt; any()</tt></p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -109,6 +109,6 @@ as a sequencer + file server + chain manager group of processes.</p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -335,6 +335,6 @@ blob.</p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -0,0 +1,119 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module machi_flu_filename_mgr</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
</head>
<body bgcolor="white">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<hr>
<h1>Module machi_flu_filename_mgr</h1>
<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>This process is responsible for managing filenames assigned to
prefixes.
<h2><a name="description">Description</a></h2><p>This process is responsible for managing filenames assigned to
prefixes. It's started out of <code>machi_flu_psup</code>.</p>
<p>Supported operations include finding the "current" filename assigned to
a prefix. Incrementing the sequence number and returning a new file name
and listing all data files assigned to a given prefix.</p>
<p>All prefixes should have the form of <code>{prefix, P}</code>. Single filename
return values have the form of <code>{file, F}</code>.</p>
<h2>Finding the current file associated with a sequence</h2><p>
First it looks up the sequence number from the prefix name. If
no sequence file is found, it uses 0 as the sequence number and searches
for a matching file with the prefix and 0 as the sequence number.
If no file is found, the it generates a new filename by incorporating
the given prefix, a randomly generated (v4) UUID and 0 as the
sequence number.</p>
If the sequence number is &gt; 0, then the process scans the filesystem
looking for a filename which matches the prefix and given sequence number and
returns that.
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#child_spec-2">child_spec/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#code_change-3">code_change/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#find_or_make_filename_from_prefix-3">find_or_make_filename_from_prefix/3</a></td><td>Find the latest available or make a filename from a prefix.</td></tr>
<tr><td valign="top"><a href="#handle_call-3">handle_call/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#handle_cast-2">handle_cast/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#handle_info-2">handle_info/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#increment_prefix_sequence-2">increment_prefix_sequence/2</a></td><td>Increment the sequence counter for a given prefix.</td></tr>
<tr><td valign="top"><a href="#init-1">init/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#list_files_by_prefix-2">list_files_by_prefix/2</a></td><td>Given a prefix in the form of <code>{prefix, P}</code> return
all the data files associated with that prefix.</td></tr>
<tr><td valign="top"><a href="#start_link-2">start_link/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#terminate-2">terminate/2</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="child_spec-2">child_spec/2</a></h3>
<div class="spec">
<p><tt>child_spec(FluName, DataDir) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="code_change-3">code_change/3</a></h3>
<div class="spec">
<p><tt>code_change(OldVsn, State, Extra) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="find_or_make_filename_from_prefix-3">find_or_make_filename_from_prefix/3</a></h3>
<div class="spec">
<p><tt>find_or_make_filename_from_prefix(FluName::atom(), EpochId::<a href="#type-pv1_epoch_n">pv1_epoch_n()</a>, Prefix::{prefix, string()}) -&gt; {file, Filename::string()} | {error, Reason::term()} | timeout</tt><br></p>
</div><p>Find the latest available or make a filename from a prefix. A prefix
should be in the form of a tagged tuple <code>{prefix, P}</code>. Returns a tagged
tuple in the form of <code>{file, F}</code> or an <code>{error, Reason}</code></p>
<h3 class="function"><a name="handle_call-3">handle_call/3</a></h3>
<div class="spec">
<p><tt>handle_call(Req, From, S) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="handle_cast-2">handle_cast/2</a></h3>
<div class="spec">
<p><tt>handle_cast(Req, State) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="handle_info-2">handle_info/2</a></h3>
<div class="spec">
<p><tt>handle_info(Info, State) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="increment_prefix_sequence-2">increment_prefix_sequence/2</a></h3>
<div class="spec">
<p><tt>increment_prefix_sequence(FluName::atom(), Prefix::{prefix, string()}) -&gt; ok | {error, Reason::term()} | timeout</tt><br></p>
</div><p>Increment the sequence counter for a given prefix. Prefix should
be in the form of <code>{prefix, P}</code>.</p>
<h3 class="function"><a name="init-1">init/1</a></h3>
<div class="spec">
<p><tt>init(X1) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="list_files_by_prefix-2">list_files_by_prefix/2</a></h3>
<div class="spec">
<p><tt>list_files_by_prefix(FluName::atom(), Prefix::{prefix, string()}) -&gt; [<a href="file.html#type-name">file:name()</a>] | timeout | {error, Reason::term()}</tt><br></p>
</div><p>Given a prefix in the form of <code>{prefix, P}</code> return
all the data files associated with that prefix. Returns
a list.</p>
<h3 class="function"><a name="start_link-2">start_link/2</a></h3>
<div class="spec">
<p><tt>start_link(FluName, DataDir) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="terminate-2">terminate/2</a></h3>
<div class="spec">
<p><tt>terminate(Reason, State) -&gt; any()</tt></p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -0,0 +1,123 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module machi_flu_metadata_mgr</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
</head>
<body bgcolor="white">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<hr>
<h1>Module machi_flu_metadata_mgr</h1>
<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>This is a metadata service for the machi FLU which currently
tracks the mappings between filenames and file proxies.
<p><b>Behaviours:</b> <a href="gen_server.html"><tt>gen_server</tt></a>.</p>
<h2><a name="description">Description</a></h2><p>This is a metadata service for the machi FLU which currently
tracks the mappings between filenames and file proxies.</p>
<p>The service takes a given hash space and spreads it out over a
pool of N processes which are responsible for 1/Nth the hash
space. When a user requests an operation on a particular file
the filename is hashed into the hash space and the request
forwarded to a particular manager responsible for that slice
of the hash space.</p>
The current hash implementation is <code>erlang:phash2/1</code> which has
a range between 0..2^27-1 or 134,217,727.
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#build_metadata_mgr_name-2">build_metadata_mgr_name/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#child_spec-4">child_spec/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#code_change-3">code_change/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#handle_call-3">handle_call/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#handle_cast-2">handle_cast/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#handle_info-2">handle_info/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#init-1">init/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#lookup_manager_pid-2">lookup_manager_pid/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#lookup_proxy_pid-2">lookup_proxy_pid/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#start_link-4">start_link/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#start_proxy_pid-2">start_proxy_pid/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#stop_proxy_pid-2">stop_proxy_pid/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#terminate-2">terminate/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#trim_file-2">trim_file/2</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="build_metadata_mgr_name-2">build_metadata_mgr_name/2</a></h3>
<div class="spec">
<p><tt>build_metadata_mgr_name(FluName, N) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="child_spec-4">child_spec/4</a></h3>
<div class="spec">
<p><tt>child_spec(FluName, C, DataDir, N) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="code_change-3">code_change/3</a></h3>
<div class="spec">
<p><tt>code_change(OldVsn, State, Extra) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="handle_call-3">handle_call/3</a></h3>
<div class="spec">
<p><tt>handle_call(Req, From, State) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="handle_cast-2">handle_cast/2</a></h3>
<div class="spec">
<p><tt>handle_cast(Req, State) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="handle_info-2">handle_info/2</a></h3>
<div class="spec">
<p><tt>handle_info(Info, State) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="init-1">init/1</a></h3>
<div class="spec">
<p><tt>init(X1) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="lookup_manager_pid-2">lookup_manager_pid/2</a></h3>
<div class="spec">
<p><tt>lookup_manager_pid(FluName, X2) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="lookup_proxy_pid-2">lookup_proxy_pid/2</a></h3>
<div class="spec">
<p><tt>lookup_proxy_pid(FluName, X2) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start_link-4">start_link/4</a></h3>
<div class="spec">
<p><tt>start_link(FluName, Name, DataDir, Num) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start_proxy_pid-2">start_proxy_pid/2</a></h3>
<div class="spec">
<p><tt>start_proxy_pid(FluName, X2) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="stop_proxy_pid-2">stop_proxy_pid/2</a></h3>
<div class="spec">
<p><tt>stop_proxy_pid(FluName, X2) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="terminate-2">terminate/2</a></h3>
<div class="spec">
<p><tt>terminate(Reason, State) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="trim_file-2">trim_file/2</a></h3>
<div class="spec">
<p><tt>trim_file(FluName, X2) -&gt; any()</tt></p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -0,0 +1,49 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module machi_flu_metadata_mgr_sup</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
</head>
<body bgcolor="white">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<hr>
<h1>Module machi_flu_metadata_mgr_sup</h1>
<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>This is the supervisor for the collection of metadata
managers.
<p><b>Behaviours:</b> <a href="supervisor.html"><tt>supervisor</tt></a>.</p>
<h2><a name="description">Description</a></h2>This is the supervisor for the collection of metadata
managers. It's started out of <code>machi_flu_psup</code>. It reads an
application environment variable named <code>metadata_manager_count</code>
with a default of 10 if it is not set.
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#child_spec-3">child_spec/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#init-1">init/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#start_link-3">start_link/3</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="child_spec-3">child_spec/3</a></h3>
<div class="spec">
<p><tt>child_spec(FluName, DataDir, N) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="init-1">init/1</a></h3>
<div class="spec">
<p><tt>init(X1) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start_link-3">start_link/3</a></h3>
<div class="spec">
<p><tt>start_link(FluName, DataDir, N) -&gt; any()</tt></p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -131,6 +131,6 @@ at this time.</p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -48,6 +48,6 @@ servers.</p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -0,0 +1,229 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module machi_lifecycle_mgr</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
</head>
<body bgcolor="white">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<hr>
<h1>Module machi_lifecycle_mgr</h1>
<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Lifecycle manager for Machi FLUs and chains.
<p><b>Behaviours:</b> <a href="gen_server.html"><tt>gen_server</tt></a>.</p>
<h2><a name="description">Description</a></h2><p>Lifecycle manager for Machi FLUs and chains.</p>
<p>Over the lifetime of a Machi cluster, both the number and types of
FLUs and chains may change. The lifecycle manager is responsible
for implementing the lifecycle changes as expressed by "policy".
In our case, "policy" is created by an external administrative
entity that creates and deletes configuration files that define
FLUs and chains relative to this local machine.</p>
<p>The "master configuration" for deciding which FLUs should be
running on this machine was inspired by BSD UNIX's <code>init(8)</code> and the
"rc.d" scheme. FLU definitions are found in a single directory,
with one file per FLU. Chains are defined similarly, with one
definition file per chain.</p>
<p>If a definition file for a FLU (or chain) exists, then that
FLU/chain ought to be configured into being and running. If a
definition file for a FLU/chain is removed, then that FLU/chain
should be stopped gracefully. However, deleting of a file destroys
information that is stored inside of that file. Therefore, we will
<b>not allow arbitrary unlinking of lifecycle config files</b>. If
the administrator deletes these config files using <code>unlink(8)</code>
directly, then "the warranty has been broken".</p>
<p>We will rely on using an administrative command to inform the
running system to stop and/or delete lifecycle resources. If the
Machi application is not running, sorry, please start Machi first.</p>
<h3><a name="Wheel_reinvention">Wheel reinvention</a></h3>
<p>There's a whole mess of configuration management research &amp;
libraries out there. I hope to ignore them all by doing something
quick &amp; dirty &amp; good enough here. If I fail, then I'll go
pay attention to That Other Stuff.</p>
<h3><a name="A_note_about_policy">A note about policy</a></h3>
<p>It is outside of the scope of this local lifecycle manager to make
decisions about policy or to distribute policy info/files/whatever
to other machines. This is our machine. There are many like it,
but this one is ours.</p>
<h3><a name="Machi_Application_Variables">Machi Application Variables</a></h3>
<p>All OTP application environment variables below are defined in the
<code>machi</code> application.</p>
<ul>
<li> <tt>flu_config_dir</tt>: Stores the <code>rc.d-</code>like config files for
FLU runtime policy.
</li>
<li> <tt>flu_data_dir</tt>: Stores the file data and metadata for
all FLUs.
</li>
<li> <tt>chain_config_dir</tt>: Stores the <code>rc.d</code>-like config files for
chain runtime policy.
</li>
</ul>
<h3><a name="The_FLU_Lifecycle">The FLU Lifecycle</a></h3>
<p>FLUs on the local machine may be started and stopped, as defined by
administrative policy. In order to do any useful work, however, a
running FLU must also be configured to be a member of a replication
chain. Thus, as a practical matter, both a FLU and the chain that
the FLU participates in must both be managed by this manager.</p>
<p>When a new <code>rc.d</code>-style config file is written to the FLU
definition directory, a Machi server process will discover the file
within a certain period of time, e.g. 15 seconds. The FLU will be
started with the file's specified parameters. A FLU should be
defined and started before configuring its chain membership.</p>
<p>Usually a FLU is removed implicitly by removing that FLU from the a
newer definition file for the chain, or by deleting the entire
chain definition. If a FLU has been started but never been a chain
member, then the FLU can be stopped &amp; removed explicitly.</p>
<p>When a FLU has been removed by policy, the FLU's data files are set
aside into a temporary area. An additional policy command may be
used to permanently delete such FLUs' data files, i.e. to reclaim
disk space.</p>
<p>Resources for the FLU are defined in <code>machi_projection.hrl</code>
in the <code>p_srvr{}</code> record. The major elements of this record are:</p>
<ul>
<li> <tt>name :: atom()</tt>: The name of the FLU. This name
should be unique over the lifetime of the administrative
domain and thus managed by outside policy. This name must be
the same as the name of the <code>rc.d</code>-style config file that
defines the FLU.
</li>
<li> <tt>address :: string()</tt>: The DNS hostname or IP address
used by other servers to communicate with this FLU.
</li>
<li> <tt>port :: non_neg_integer() </tt>: The TCP port number that
the FLU listens to for incoming Protocol Buffers-serialized
communication.
</li>
<li> <tt>props :: property_list()</tt>: A general-purpose property
list. Its use is currently fluid &amp; not well-defined yet.
</li>
</ul>
<h3><a name="The_Chain_Lifecycle">The Chain Lifecycle</a></h3>
<p>If a FLU on the local machine is expected to participate in a
replication chain, then an <code>rc.d</code>-style chain definition file must
also be present on each machine that runs a FLU in the chain.</p>
<p>Machi's chains are self-managing, via Humming Consensus; see the
<a href="https://github.com/basho/machi/tree/master/doc/" target="_top"><tt>https://github.com/basho/machi/tree/master/doc/</tt></a> directory for
much more detail about Humming Consensus. After FLUs have received
their initial chain configuration for Humming Consensus, the FLUs
will manage each other (and the chain) themselves.</p>
<p>However, Humming Consensus does not handle three chain management
problems: 1. specifying the very first chain configuration,
2. altering the membership of the chain (adding/removing FLUs from
the chain), or 3. stopping the chain permanently.</p>
<p>FLUs in a new chain should have definition files created on each
FLU's respective machine prior to defining their chain. Similarly,
on each machine that hosts a chain member, a chain definition file
created. External policy is responsible for creating each of these
files.</p>
<p>Resources for the chain are defined in <code>machi_projection.hrl</code>
in the <code>chain_def_v1{}</code> record. The major elements of this record are:</p>
<ul>
<li> <tt>name :: atom()</tt>: The name of the chain. This name
should be unique over the lifetime of the administrative
domain and thus managed by outside policy. This name must be
the same as the name of the <code>rc.d</code>-style config file that
defines the chain.
</li>
<li> <tt>mode :: 'ap_mode' | 'cp_mode'</tt>: This is the consistency
to be used for managing the chain's replicated data: eventual
consistency and strong consistency, respectively.
</li>
<li> <tt>full :: [#p_srvr{}] </tt>: A list of <code>#p_srvr{}</code> records
to define the full-service members of the chain.
</li>
<li> <tt>witnesses :: [#p_srvr{}] </tt>: A list of <code>#p_srvr{}</code> records
to define the witness-only members of the chain. Witness servers
may only be used with strong consistency mode.
</li>
<li> <tt>props :: property_list()</tt>: A general-purpose property
list. Its use is currently fluid &amp; not well-defined yet.
</li>
</ul>
<h3><a name="Conflicts_with_TCP_ports,_FLU_&amp;_chain_names,_etc">Conflicts with TCP ports, FLU &amp; chain names, etc</a></h3>
This manager is not responsible for managing conflicts in resource
namespaces, e.g., TCP port numbers, FLU names, chain names, etc.
Managing these namespaces is external policy's responsibility.
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#code_change-3">code_change/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#handle_call-3">handle_call/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#handle_cast-2">handle_cast/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#handle_info-2">handle_info/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#init-1">init/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#start_link-0">start_link/0</a></td><td></td></tr>
<tr><td valign="top"><a href="#terminate-2">terminate/2</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="code_change-3">code_change/3</a></h3>
<div class="spec">
<p><tt>code_change(OldVsn, State, Extra) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="handle_call-3">handle_call/3</a></h3>
<div class="spec">
<p><tt>handle_call(Request, From, State) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="handle_cast-2">handle_cast/2</a></h3>
<div class="spec">
<p><tt>handle_cast(Msg, State) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="handle_info-2">handle_info/2</a></h3>
<div class="spec">
<p><tt>handle_info(Info, State) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="init-1">init/1</a></h3>
<div class="spec">
<p><tt>init(X1) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="start_link-0">start_link/0</a></h3>
<div class="spec">
<p><tt>start_link() -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="terminate-2">terminate/2</a></h3>
<div class="spec">
<p><tt>terminate(Reason, State) -&gt; any()</tt></p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -0,0 +1,69 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module machi_merkle_tree</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
</head>
<body bgcolor="white">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<hr>
<h1>Module machi_merkle_tree</h1>
<ul class="index"><li><a href="#description">Description</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>Creates a Merkle tree per file based on the checksum data for
a given data file.
<h2><a name="description">Description</a></h2><p>Creates a Merkle tree per file based on the checksum data for
a given data file.</p>
<p>The <code>naive</code> implementation representation is:</p>
<p><code>&lt;&lt;Length:64, Offset:32, 0&gt;&gt;</code> for unwritten bytes
<code>&lt;&lt;Length:64, Offset:32, 1&gt;&gt;</code> for trimmed bytes
<code>&lt;&lt;Length:64, Offset:32, Csum/binary&gt;&gt;</code> for written bytes</p>
The tree feeds these leaf nodes into hashes representing chunks of a minimum
size of at least 1024 KB (1 MB), but if the file size is larger, we will try
to get about 100 chunks for the first rollup "Level 1." We aim for around 10
hashes at level 2, and then 2 hashes level 3 and finally the root.
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#diff-2">diff/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#filename-1">filename/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#open-2">open/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#open-3">open/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#tree-1">tree/1</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="diff-2">diff/2</a></h3>
<div class="spec">
<p><tt>diff(Mt, X2) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="filename-1">filename/1</a></h3>
<div class="spec">
<p><tt>filename(Mt) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="open-2">open/2</a></h3>
<div class="spec">
<p><tt>open(Filename, DataDir) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="open-3">open/3</a></h3>
<div class="spec">
<p><tt>open(Filename, DataDir, Type) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="tree-1">tree/1</a></h3>
<div class="spec">
<p><tt>tree(Mt) -&gt; any()</tt></p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -199,6 +199,6 @@
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -0,0 +1,55 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module machi_pb_translate</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
</head>
<body bgcolor="white">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<hr>
<h1>Module machi_pb_translate</h1>
<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#conv_to_csum_tag-1">conv_to_csum_tag/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#from_pb_request-1">from_pb_request/1</a></td><td>Adapt impedence mismatches between Erlang and Protocol Buffers.</td></tr>
<tr><td valign="top"><a href="#from_pb_response-1">from_pb_response/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#to_pb_request-2">to_pb_request/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#to_pb_response-3">to_pb_response/3</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="conv_to_csum_tag-1">conv_to_csum_tag/1</a></h3>
<div class="spec">
<p><tt>conv_to_csum_tag(Type) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="from_pb_request-1">from_pb_request/1</a></h3>
<div class="spec">
<p><tt>from_pb_request(Mpb_ll_request) -&gt; any()</tt></p>
</div><p>Adapt impedence mismatches between Erlang and Protocol Buffers.</p>
<h3 class="function"><a name="from_pb_response-1">from_pb_response/1</a></h3>
<div class="spec">
<p><tt>from_pb_response(Mpb_ll_response) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="to_pb_request-2">to_pb_request/2</a></h3>
<div class="spec">
<p><tt>to_pb_request(ReqID, X2) -&gt; any()</tt></p>
</div>
<h3 class="function"><a name="to_pb_response-3">to_pb_response/3</a></h3>
<div class="spec">
<p><tt>to_pb_response(ReqID, X2, X) -&gt; any()</tt></p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

61
edoc/machi_plist.html Normal file
View file

@ -0,0 +1,61 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module machi_plist</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
</head>
<body bgcolor="white">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<hr>
<h1>Module machi_plist</h1>
<ul class="index"><li><a href="#types">Data Types</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
<h2><a name="types">Data Types</a></h2>
<h3 class="typedecl"><a name="type-plist">plist()</a></h3>
<p><tt>plist() = #machi_plist{}</tt></p>
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#add-2">add/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#all-1">all/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#close-1">close/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#find-2">find/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#open-2">open/2</a></td><td>persistent list of binaries.</td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="add-2">add/2</a></h3>
<div class="spec">
<p><tt>add(Plist::<a href="#type-plist">plist()</a>, Name::string()) -&gt; {ok, <a href="#type-plist">plist()</a>} | {error, <a href="file.html#type-posix">file:posix()</a>}</tt><br></p>
</div>
<h3 class="function"><a name="all-1">all/1</a></h3>
<div class="spec">
<p><tt>all(Machi_plist::<a href="#type-plist">plist()</a>) -&gt; [<a href="file.html#type-filename">file:filename()</a>]</tt><br></p>
</div>
<h3 class="function"><a name="close-1">close/1</a></h3>
<div class="spec">
<p><tt>close(Machi_plist::<a href="#type-plist">plist()</a>) -&gt; ok</tt><br></p>
</div>
<h3 class="function"><a name="find-2">find/2</a></h3>
<div class="spec">
<p><tt>find(Machi_plist::<a href="#type-plist">plist()</a>, Name::string()) -&gt; boolean()</tt><br></p>
</div>
<h3 class="function"><a name="open-2">open/2</a></h3>
<div class="spec">
<p><tt>open(Filename::<a href="file.html#type-filename_all">file:filename_all()</a>, Opt::<a href="proplists.html#type-proplist">proplists:proplist()</a>) -&gt; {ok, <a href="#type-plist">plist()</a>} | {error, <a href="file.html#type-posix">file:posix()</a>}</tt><br></p>
</div><p>persistent list of binaries</p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -101,6 +101,6 @@ correctly.</p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -176,6 +176,6 @@ client access protocol (on the "server side" of the TCP connection).</p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -318,6 +318,6 @@ TCP communication problems with the remote server.</p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -37,6 +37,6 @@
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -283,6 +283,6 @@
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -255,6 +255,6 @@
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>

View file

@ -180,6 +180,6 @@ the code, is a reminder signal of unfinished work.</p>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc, Dec 8 2015, 21:33:07.</i></p>
<p><i>Generated by EDoc, Dec 8 2015, 21:37:38.</i></p>
</body>
</html>