diff --git a/edoc/edoc-info b/edoc/edoc-info index f075620..14345bb 100644 --- a/edoc/edoc-info +++ b/edoc/edoc-info @@ -1,8 +1,9 @@ %% encoding: UTF-8 {application,machi}. {packages,[]}. -{modules,[machi_admin_util,machi_app,machi_chain_manager1,machi_chain_repair, - machi_chash,machi_cr_client,machi_flu1,machi_flu1_client, - machi_flu_psup,machi_flu_sup,machi_projection, +{modules,[machi_admin_util,machi_app,machi_basho_bench_driver, + machi_chain_manager1,machi_chain_repair,machi_chash,machi_cr_client, + machi_dt,machi_flu1,machi_flu1_client,machi_flu_psup,machi_flu_sup, + machi_pb_high_client,machi_pb_server,machi_pb_wrap,machi_projection, machi_projection_store,machi_proxy_flu1_client,machi_sequencer, machi_sup,machi_util,machi_yessir_client]}. diff --git a/edoc/machi_admin_util.html b/edoc/machi_admin_util.html index 82383ae..913907a 100644 --- a/edoc/machi_admin_util.html +++ b/edoc/machi_admin_util.html @@ -10,20 +10,10 @@

Module machi_admin_util

-Machi chain replication administration utilities. +Machi chain replication administration utilities.

Description

Machi chain replication administration utilities. -

Data Types

- -

inet_host()

-

inet_host() = inet:ip_address() | inet:hostname()

- - -

inet_port()

-

inet_port() = inet:port_number()

- -

Function Index

@@ -35,26 +25,26 @@

verify_file_checksums_local/3

-

verify_file_checksums_local(Sock1::port(), EpochID::machi_flu1_client:epoch_id(), Path::binary() | list()) -> {ok, [tuple()]} | {error, term()}

+

verify_file_checksums_local(Sock1::port(), EpochID::machi_dt:epoch_id(), Path::binary() | list()) -> {ok, [tuple()]} | {error, term()}

verify_file_checksums_local/4

-

verify_file_checksums_local(Host::inet_host(), TcpPort::inet_port(), EpochID::machi_flu1_client:epoch_id(), Path::binary() | list()) -> {ok, [tuple()]} | {error, term()}

+

verify_file_checksums_local(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), EpochID::machi_dt:epoch_id(), Path::binary() | list()) -> {ok, [tuple()]} | {error, term()}

verify_file_checksums_remote/3

-

verify_file_checksums_remote(Sock1::port(), EpochID::machi_flu1_client:epoch_id(), File::binary() | list()) -> {ok, [tuple()]} | {error, term()}

+

verify_file_checksums_remote(Sock1::port(), EpochID::machi_dt:epoch_id(), File::binary() | list()) -> {ok, [tuple()]} | {error, term()}

verify_file_checksums_remote/4

-

verify_file_checksums_remote(Host::inet_host(), TcpPort::inet_port(), EpochID::machi_flu1_client:epoch_id(), File::binary() | list()) -> {ok, [tuple()]} | {error, term()}

+

verify_file_checksums_remote(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), EpochID::machi_dt:epoch_id(), File::binary() | list()) -> {ok, [tuple()]} | {error, term()}


verify_file_checksums_local/3
verify_file_checksums_local/4
Overviewerlang logo
-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_app.html b/edoc/machi_app.html index fd6cb85..1d7d77d 100644 --- a/edoc/machi_app.html +++ b/edoc/machi_app.html @@ -37,6 +37,6 @@
-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_basho_bench_driver.html b/edoc/machi_basho_bench_driver.html new file mode 100644 index 0000000..99644be --- /dev/null +++ b/edoc/machi_basho_bench_driver.html @@ -0,0 +1,64 @@ + + + + +Module machi_basho_bench_driver + + + + +
+ +

Module machi_basho_bench_driver

+A simple basho_bench driver for Machi. + + +

Description

A simple basho_bench driver for Machi

+ +

Basho_bench was originally developed to stress test key-value + stores (as was YCSB and several other mechmarking tools). A person + can consider the UNIX file system to be a key-value store and thus + use basho_bench to measure its performance under a certain + workload. Machi is a bit different than most KV stores in that the + client has no direct control over the keys -- Machi servers always + assign the keys. The schemes typically used by basho_bench & YCSB +to use/mimic key naming conventions used internally ... are +difficult to adapt to Machi.

+ +

So, we'll try to manage key reading by using a common ETS table +that is populated with:

+ +

1. Key: non_neg_integer()` + 2. Value: The `{File,Offset,Size}` for a chunk previously written. + + At startup time, basho_bench can use the `list_files and + checksum_list API operations to fetch all of the + {File,Offset,Size}` tuples that currently reside in the cluster. + Also, optionally (?), each new `append operation by the b_b driver +could add new entries to this ETS table.

+ + Now we can use various integer-centric key generators that are + already bundled with basho_bench. + +

Function Index

+ + +
new/1
run/4
+ +

Function Details

+ +

new/1

+
+

new(Id) -> any()

+
+ +

run/4

+
+

run(X1, KeyGen, ValueGen, M) -> any()

+
+
+ + +

Generated by EDoc, Jun 25 2015, 16:39:10.

+ + diff --git a/edoc/machi_chain_manager1.html b/edoc/machi_chain_manager1.html index d7041c3..5a3de77 100644 --- a/edoc/machi_chain_manager1.html +++ b/edoc/machi_chain_manager1.html @@ -93,7 +93,7 @@ distributed state of a single Machi Chain Replication chain.

inner_projection_exists/1

-

inner_projection_exists(P) -> any()

+

inner_projection_exists(Projection_v1) -> any()

inner_projection_or_self/1

@@ -174,6 +174,6 @@ distributed state of a single Machi Chain Replication chain.


-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_chain_repair.html b/edoc/machi_chain_repair.html index 0c73485..0e0e5c8 100644 --- a/edoc/machi_chain_repair.html +++ b/edoc/machi_chain_repair.html @@ -86,6 +86,6 @@ in sync. In theory, that's lower overhead than the procedure used here.


-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_chash.html b/edoc/machi_chash.html index 37a1a85..bb61e53 100644 --- a/edoc/machi_chash.html +++ b/edoc/machi_chash.html @@ -166,6 +166,6 @@ list.


-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_cr_client.html b/edoc/machi_cr_client.html index dcca7e3..a1cb16f 100644 --- a/edoc/machi_cr_client.html +++ b/edoc/machi_cr_client.html @@ -121,6 +121,10 @@ function name.)

& reliable communication proxy with the fickle & flaky remote Machi server. terminate/2 +write_chunk/4Write a chunk of data (that has already been + allocated/sequenced by an earlier append_chunk_extra() call) to + File at Offset. +write_chunk/5Read a chunk of data of size Size from File at Offset.

Function Details

@@ -221,9 +225,21 @@ function name.)

terminate(Reason, State) -> any()

+ +

write_chunk/4

+
+

write_chunk(PidSpec, File, Offset, Chunk) -> any()

+

Write a chunk of data (that has already been + allocated/sequenced by an earlier append_chunk_extra() call) to + File at Offset.

+ +

write_chunk/5

+
+

write_chunk(PidSpec, File, Offset, Chunk, Timeout) -> any()

+

Read a chunk of data of size Size from File at Offset.


-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_dt.html b/edoc/machi_dt.html new file mode 100644 index 0000000..12a129f --- /dev/null +++ b/edoc/machi_dt.html @@ -0,0 +1,106 @@ + + + + +Module machi_dt + + + + +
+ +

Module machi_dt

+ + + +

Data Types

+ +

chunk()

+

chunk() = chunk_bin() | {chunk_csum(), chunk_bin()}

+ + +

chunk_bin()

+

chunk_bin() = binary() | iolist()

+

client can use either

+ +

chunk_csum()

+

chunk_csum() = binary()

+

1 byte tag, N-1 bytes checksum

+ +

chunk_pos()

+

chunk_pos() = {file_offset(), chunk_size(), file_name_s()}

+ + +

chunk_s()

+

chunk_s() = binary()

+

server always uses binary()

+ +

chunk_size()

+

chunk_size() = non_neg_integer()

+ + +

chunk_summary()

+

chunk_summary() = {file_offset(), chunk_size(), binary()}

+ + +

epoch_csum()

+

epoch_csum() = binary()

+ + +

epoch_id()

+

epoch_id() = {epoch_num(), epoch_csum()}

+ + +

epoch_num()

+

epoch_num() = -1 | non_neg_integer()

+ + +

error_general()

+

error_general() = bad_arg | wedged | bad_checksum

+ + +

file_info()

+

file_info() = {file_size(), file_name_s()}

+ + +

file_name()

+

file_name() = binary() | list()

+ + +

file_name_s()

+

file_name_s() = binary()

+

server reply

+ +

file_offset()

+

file_offset() = non_neg_integer()

+ + +

file_prefix()

+

file_prefix() = binary() | list()

+ + +

file_size()

+

file_size() = non_neg_integer()

+ + +

inet_host()

+

inet_host() = inet:ip_address() | inet:hostname()

+ + +

inet_port()

+

inet_port() = inet:port_number()

+ + +

projection()

+

projection() = #projection_v1{}

+ + +

projection_type()

+

projection_type() = public | private

+ +
+ + +

Generated by EDoc, Jun 25 2015, 16:39:10.

+ + diff --git a/edoc/machi_flu1.html b/edoc/machi_flu1.html index 40303ca..5feaa3e 100644 --- a/edoc/machi_flu1.html +++ b/edoc/machi_flu1.html @@ -101,6 +101,6 @@ replication/chain repair.


-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_flu1_client.html b/edoc/machi_flu1_client.html index 26a21c2..dbc94bb 100644 --- a/edoc/machi_flu1_client.html +++ b/edoc/machi_flu1_client.html @@ -43,86 +43,10 @@ etc.

services are accessed using the same single TCP port.

Data Types

-

chunk()

-

chunk() = binary() | iolist()

-

client can use either

- -

chunk_csum()

-

chunk_csum() = {file_offset(), chunk_size(), binary()}

- - -

chunk_pos()

-

chunk_pos() = {file_offset(), chunk_size(), file_name_s()}

- - -

chunk_s()

-

chunk_s() = binary()

-

server always uses binary()

- -

chunk_size()

-

chunk_size() = non_neg_integer()

- - -

epoch_csum()

-

epoch_csum() = binary()

- - -

epoch_id()

-

epoch_id() = {epoch_num(), epoch_csum()}

- - -

epoch_num()

-

epoch_num() = -1 | non_neg_integer()

- - -

error_general()

-

error_general() = bad_arg | wedged

- - -

file_info()

-

file_info() = {file_size(), file_name_s()}

- - -

file_name()

-

file_name() = binary() | list()

- - -

file_name_s()

-

file_name_s() = binary()

-

server reply

- -

file_offset()

-

file_offset() = non_neg_integer()

- - -

file_prefix()

-

file_prefix() = binary() | list()

- - -

file_size()

-

file_size() = non_neg_integer()

- - -

inet_host()

-

inet_host() = inet:ip_address() | inet:hostname()

- - -

inet_port()

-

inet_port() = inet:port_number()

- -

port_wrap()

port_wrap() = {w, atom(), term()}

-

projection()

-

projection() = #projection_v1{}

- - -

projection_type()

-

projection_type() = public | private

- -

Function Index

@@ -174,19 +98,19 @@ etc.

append_chunk/4

-

append_chunk(Sock::port_wrap(), EpochID::epoch_id(), Prefix::file_prefix(), Chunk::chunk()) -> {ok, chunk_pos()} | {error, error_general()} | {error, term()}

+

append_chunk(Sock::port_wrap(), EpochID::machi_dt:epoch_id(), Prefix::machi_dt:file_prefix(), Chunk::machi_dt:chunk()) -> {ok, machi_dt:chunk_pos()} | {error, machi_dt:error_general()} | {error, term()}

Append a chunk (binary- or iolist-style) of data to a file with Prefix.

append_chunk/5

-

append_chunk(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id(), Prefix::file_prefix(), Chunk::chunk()) -> {ok, chunk_pos()} | {error, error_general()} | {error, term()}

+

append_chunk(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), EpochID::machi_dt:epoch_id(), Prefix::machi_dt:file_prefix(), Chunk::machi_dt:chunk()) -> {ok, machi_dt:chunk_pos()} | {error, machi_dt:error_general()} | {error, term()}

Append a chunk (binary- or iolist-style) of data to a file with Prefix.

append_chunk_extra/5

-

append_chunk_extra(Sock::port_wrap(), EpochID::epoch_id(), Prefix::file_prefix(), Chunk::chunk(), ChunkExtra::chunk_size()) -> {ok, chunk_pos()} | {error, error_general()} | {error, term()}

+

append_chunk_extra(Sock::port_wrap(), EpochID::machi_dt:epoch_id(), Prefix::machi_dt:file_prefix(), Chunk::machi_dt:chunk(), ChunkExtra::machi_dt:chunk_size()) -> {ok, machi_dt:chunk_pos()} | {error, machi_dt:error_general()} | {error, term()}

Append a chunk (binary- or iolist-style) of data to a file with Prefix and also request an additional Extra bytes.

@@ -197,7 +121,7 @@ etc.

append_chunk_extra/6

-

append_chunk_extra(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id(), Prefix::file_prefix(), Chunk::chunk(), ChunkExtra::chunk_size()) -> {ok, chunk_pos()} | {error, error_general()} | {error, term()}

+

append_chunk_extra(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), EpochID::machi_dt:epoch_id(), Prefix::machi_dt:file_prefix(), Chunk::machi_dt:chunk(), ChunkExtra::machi_dt:chunk_size()) -> {ok, machi_dt:chunk_pos()} | {error, machi_dt:error_general()} | {error, term()}

Append a chunk (binary- or iolist-style) of data to a file with Prefix and also request an additional Extra bytes.

@@ -208,12 +132,12 @@ etc.

checksum_list/3

-

checksum_list(Sock::port_wrap(), EpochID::epoch_id(), File::file_name()) -> {ok, [chunk_csum()]} | {error, error_general() | no_such_file | partial_read} | {error, term()}

+

checksum_list(Sock::port_wrap(), EpochID::machi_dt:epoch_id(), File::machi_dt:file_name()) -> {ok, [machi_dt:chunk_summary()]} | {error, machi_dt:error_general() | no_such_file | partial_read} | {error, term()}

Fetch the list of chunk checksums for File.

checksum_list/4

-

checksum_list(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id(), File::file_name()) -> {ok, [chunk_csum()]} | {error, error_general() | no_such_file} | {error, term()}

+

checksum_list(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), EpochID::machi_dt:epoch_id(), File::machi_dt:file_name()) -> {ok, [machi_dt:chunk_summary()]} | {error, machi_dt:error_general() | no_such_file} | {error, term()}

Fetch the list of chunk checksums for File.

connect/1

@@ -228,13 +152,13 @@ etc.

delete_migration/3

-

delete_migration(Sock::port_wrap(), EpochID::epoch_id(), File::file_name()) -> ok | {error, error_general() | no_such_file} | {error, term()}

+

delete_migration(Sock::port_wrap(), EpochID::machi_dt:epoch_id(), File::machi_dt:file_name()) -> ok | {error, machi_dt:error_general() | no_such_file} | {error, term()}

Restricted API: Delete a file after it has been successfully migrated.

delete_migration/4

-

delete_migration(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id(), File::file_name()) -> ok | {error, error_general() | no_such_file} | {error, term()}

+

delete_migration(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), EpochID::machi_dt:epoch_id(), File::machi_dt:file_name()) -> ok | {error, machi_dt:error_general() | no_such_file} | {error, term()}

Restricted API: Delete a file after it has been successfully migrated.

@@ -245,42 +169,42 @@ etc.

get_all_projections/2

-

get_all_projections(Sock::port_wrap(), ProjType::projection_type()) -> {ok, [projection()]} | {error, term()}

+

get_all_projections(Sock::port_wrap(), ProjType::machi_dt:projection_type()) -> {ok, [machi_dt:projection()]} | {error, term()}

Get all projections from the FLU's projection store.

get_all_projections/3

-

get_all_projections(Host::inet_host(), TcpPort::inet_port(), ProjType::projection_type()) -> {ok, [projection()]} | {error, term()}

+

get_all_projections(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), ProjType::machi_dt:projection_type()) -> {ok, [machi_dt:projection()]} | {error, term()}

Get all projections from the FLU's projection store.

get_latest_epochid/2

-

get_latest_epochid(Sock::port_wrap(), ProjType::projection_type()) -> {ok, epoch_id()} | {error, term()}

+

get_latest_epochid(Sock::port_wrap(), ProjType::machi_dt:projection_type()) -> {ok, machi_dt:epoch_id()} | {error, term()}

Get the latest epoch number + checksum from the FLU's projection store.

get_latest_epochid/3

-

get_latest_epochid(Host::inet_host(), TcpPort::inet_port(), ProjType::projection_type()) -> {ok, epoch_id()} | {error, term()}

+

get_latest_epochid(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), ProjType::machi_dt:projection_type()) -> {ok, machi_dt:epoch_id()} | {error, term()}

Get the latest epoch number + checksum from the FLU's projection store.

list_all_projections/2

-

list_all_projections(Sock::port_wrap(), ProjType::projection_type()) -> {ok, [non_neg_integer()]} | {error, term()}

+

list_all_projections(Sock::port_wrap(), ProjType::machi_dt:projection_type()) -> {ok, [non_neg_integer()]} | {error, term()}

Get all epoch numbers from the FLU's projection store.

list_all_projections/3

-

list_all_projections(Host::inet_host(), TcpPort::inet_port(), ProjType::projection_type()) -> {ok, [non_neg_integer()]} | {error, term()}

+

list_all_projections(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), ProjType::machi_dt:projection_type()) -> {ok, [non_neg_integer()]} | {error, term()}

Get all epoch numbers from the FLU's projection store.

list_files/2

-

list_files(Sock::port_wrap(), EpochID::epoch_id()) -> {ok, [file_info()]} | {error, term()}

+

list_files(Sock::port_wrap(), EpochID::machi_dt:epoch_id()) -> {ok, [machi_dt:file_info()]} | {error, term()}

Fetch the list of all files on the remote FLU.

list_files/3

-

list_files(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id()) -> {ok, [file_info()]} | {error, term()}

+

list_files(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), EpochID::machi_dt:epoch_id()) -> {ok, [machi_dt:file_info()]} | {error, term()}

Fetch the list of all files on the remote FLU.

quit/1

@@ -290,80 +214,80 @@ etc.

read_chunk/5

-

read_chunk(Sock::port_wrap(), EpochID::epoch_id(), File::file_name(), Offset::file_offset(), Size::chunk_size()) -> {ok, chunk_s()} | {error, error_general() | not_written | partial_read} | {error, term()}

+

read_chunk(Sock::port_wrap(), EpochID::machi_dt:epoch_id(), File::machi_dt:file_name(), Offset::machi_dt:file_offset(), Size::machi_dt:chunk_size()) -> {ok, machi_dt:chunk_s()} | {error, machi_dt:error_general() | not_written | partial_read} | {error, term()}

Read a chunk of data of size Size from File at Offset.

read_chunk/6

-

read_chunk(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id(), File::file_name(), Offset::file_offset(), Size::chunk_size()) -> {ok, chunk_s()} | {error, error_general() | not_written | partial_read} | {error, term()}

+

read_chunk(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), EpochID::machi_dt:epoch_id(), File::machi_dt:file_name(), Offset::machi_dt:file_offset(), Size::machi_dt:chunk_size()) -> {ok, machi_dt:chunk_s()} | {error, machi_dt:error_general() | not_written | partial_read} | {error, term()}

Read a chunk of data of size Size from File at Offset.

read_latest_projection/2

-

read_latest_projection(Sock::port_wrap(), ProjType::projection_type()) -> {ok, projection()} | {error, not_written} | {error, term()}

+

read_latest_projection(Sock::port_wrap(), ProjType::machi_dt:projection_type()) -> {ok, machi_dt:projection()} | {error, not_written} | {error, term()}

Get the latest projection from the FLU's projection store for ProjType

read_latest_projection/3

-

read_latest_projection(Host::inet_host(), TcpPort::inet_port(), ProjType::projection_type()) -> {ok, projection()} | {error, not_written} | {error, term()}

+

read_latest_projection(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), ProjType::machi_dt:projection_type()) -> {ok, machi_dt:projection()} | {error, not_written} | {error, term()}

Get the latest projection from the FLU's projection store for ProjType

read_projection/3

-

read_projection(Sock::port_wrap(), ProjType::projection_type(), Epoch::epoch_num()) -> {ok, projection()} | {error, not_written} | {error, term()}

+

read_projection(Sock::port_wrap(), ProjType::machi_dt:projection_type(), Epoch::machi_dt:epoch_num()) -> {ok, machi_dt:projection()} | {error, not_written} | {error, term()}

Read a projection Proj of type ProjType.

read_projection/4

-

read_projection(Host::inet_host(), TcpPort::inet_port(), ProjType::projection_type(), Epoch::epoch_num()) -> {ok, projection()} | {error, not_written} | {error, term()}

+

read_projection(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), ProjType::machi_dt:projection_type(), Epoch::machi_dt:epoch_num()) -> {ok, machi_dt:projection()} | {error, not_written} | {error, term()}

Read a projection Proj of type ProjType.

trunc_hack/3

-

trunc_hack(Sock::port_wrap(), EpochID::epoch_id(), File::file_name()) -> ok | {error, error_general() | no_such_file} | {error, term()}

+

trunc_hack(Sock::port_wrap(), EpochID::machi_dt:epoch_id(), File::machi_dt:file_name()) -> ok | {error, machi_dt:error_general() | no_such_file} | {error, term()}

Restricted API: Truncate a file after it has been successfully erasure coded.

trunc_hack/4

-

trunc_hack(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id(), File::file_name()) -> ok | {error, error_general() | no_such_file} | {error, term()}

+

trunc_hack(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), EpochID::machi_dt:epoch_id(), File::machi_dt:file_name()) -> ok | {error, machi_dt:error_general() | no_such_file} | {error, term()}

Restricted API: Truncate a file after it has been successfully erasure coded.

wedge_status/1

-

wedge_status(Sock::port_wrap()) -> {ok, {boolean(), pv1_epoch()}} | {error, term()}

+

wedge_status(Sock::port_wrap()) -> {ok, {boolean(), machi_dt:epoch_id()}} | {error, term()}

Fetch the wedge status from the remote FLU.

wedge_status/2

-

wedge_status(Host::inet_host(), TcpPort::inet_port()) -> {ok, {boolean(), pv1_epoch()}} | {error, term()}

+

wedge_status(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port()) -> {ok, {boolean(), machi_dt:epoch_id()}} | {error, term()}

Fetch the wedge status from the remote FLU.

write_chunk/5

-

write_chunk(Sock::port_wrap(), EpochID::epoch_id(), File::file_name(), Offset::file_offset(), Chunk::chunk()) -> ok | {error, error_general()} | {error, term()}

+

write_chunk(Sock::port_wrap(), EpochID::machi_dt:epoch_id(), File::machi_dt:file_name(), Offset::machi_dt:file_offset(), Chunk::machi_dt:chunk()) -> ok | {error, machi_dt:error_general()} | {error, term()}

Restricted API: Write a chunk of already-sequenced data to File at Offset.

write_chunk/6

-

write_chunk(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id(), File::file_name(), Offset::file_offset(), Chunk::chunk()) -> ok | {error, error_general()} | {error, term()}

+

write_chunk(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), EpochID::machi_dt:epoch_id(), File::machi_dt:file_name(), Offset::machi_dt:file_offset(), Chunk::machi_dt:chunk()) -> ok | {error, machi_dt:error_general()} | {error, term()}

Restricted API: Write a chunk of already-sequenced data to File at Offset.

write_projection/3

-

write_projection(Sock::port_wrap(), ProjType::projection_type(), Proj::projection()) -> ok | {error, written} | {error, term()}

+

write_projection(Sock::port_wrap(), ProjType::machi_dt:projection_type(), Proj::machi_dt:projection()) -> ok | {error, written} | {error, term()}

Write a projection Proj of type ProjType.

write_projection/4

-

write_projection(Host::inet_host(), TcpPort::inet_port(), ProjType::projection_type(), Proj::projection()) -> ok | {error, written} | {error, term()}

+

write_projection(Host::machi_dt:inet_host(), TcpPort::machi_dt:inet_port(), ProjType::machi_dt:projection_type(), Proj::machi_dt:projection()) -> ok | {error, written} | {error, term()}

Write a projection Proj of type ProjType.


append_chunk/4Append a chunk (binary- or iolist-style) of data to a file with Prefix.
Overviewerlang logo
-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_flu_psup.html b/edoc/machi_flu_psup.html index 4f9b6f5..8858b53 100644 --- a/edoc/machi_flu_psup.html +++ b/edoc/machi_flu_psup.html @@ -107,6 +107,6 @@ at this time.


-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_flu_sup.html b/edoc/machi_flu_sup.html index 53d818f..82c9c90 100644 --- a/edoc/machi_flu_sup.html +++ b/edoc/machi_flu_sup.html @@ -39,6 +39,6 @@ servers.


-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_pb_high_client.html b/edoc/machi_pb_high_client.html new file mode 100644 index 0000000..d073971 --- /dev/null +++ b/edoc/machi_pb_high_client.html @@ -0,0 +1,176 @@ + + + + +Module machi_pb_high_client + + + + +
+ +

Module machi_pb_high_client

+Machi PB (Protocol Buffers) high-level client (prototype, API TBD). + + +

Description

Machi PB (Protocol Buffers) high-level client (prototype, API TBD)

+ + At the moment, this is brittle-prototype-quality code: the API is not yet + fully specified, there is very little error handling with respect + to a single socket connection, and there is no code to deal with + multiple connections/load balancing/error handling to several/all + Machi cluster servers. +

Function Index

+ + + + + + + + + + + + + + + + + + + + + + + + +
append_chunk/6
append_chunk/7
auth/3
auth/4
checksum_list/2
checksum_list/3
code_change/3
connected_p/1
convert_general_status_code/1
echo/2
echo/3
handle_call/3
handle_cast/2
handle_info/2
init/1
list_files/1
list_files/2
quit/1
read_chunk/4
read_chunk/5
start_link/1
terminate/2
write_chunk/5
write_chunk/6
+ +

Function Details

+ +

append_chunk/6

+
+

append_chunk(PidSpec, PlacementKey, Prefix, Chunk, CSum, ChunkExtra) -> any()

+
+ +

append_chunk/7

+
+

append_chunk(PidSpec, PlacementKey, Prefix, Chunk, CSum, ChunkExtra, Timeout) -> any()

+
+ +

auth/3

+
+

auth(PidSpec, User, Pass) -> any()

+
+ +

auth/4

+
+

auth(PidSpec, User, Pass, Timeout) -> any()

+
+ +

checksum_list/2

+
+

checksum_list(PidSpec, File) -> any()

+
+ +

checksum_list/3

+
+

checksum_list(PidSpec, File, Timeout) -> any()

+
+ +

code_change/3

+
+

code_change(OldVsn, S, Extra) -> any()

+
+ +

connected_p/1

+
+

connected_p(PidSpec) -> any()

+
+ +

convert_general_status_code/1

+
+

convert_general_status_code(X1) -> any()

+
+ +

echo/2

+
+

echo(PidSpec, String) -> any()

+
+ +

echo/3

+
+

echo(PidSpec, String, Timeout) -> any()

+
+ +

handle_call/3

+
+

handle_call(Request, From, S) -> any()

+
+ +

handle_cast/2

+
+

handle_cast(Msg, S) -> any()

+
+ +

handle_info/2

+
+

handle_info(Info, S) -> any()

+
+ +

init/1

+
+

init(X1) -> any()

+
+ +

list_files/1

+
+

list_files(PidSpec) -> any()

+
+ +

list_files/2

+
+

list_files(PidSpec, Timeout) -> any()

+
+ +

quit/1

+
+

quit(PidSpec) -> any()

+
+ +

read_chunk/4

+
+

read_chunk(PidSpec, File, Offset, Size) -> any()

+
+ +

read_chunk/5

+
+

read_chunk(PidSpec, File, Offset, Size, Timeout) -> any()

+
+ +

start_link/1

+
+

start_link(P_srvr_list) -> any()

+
+ +

terminate/2

+
+

terminate(Reason, S) -> any()

+
+ +

write_chunk/5

+
+

write_chunk(PidSpec, File, Offset, Chunk, CSum) -> any()

+
+ +

write_chunk/6

+
+

write_chunk(PidSpec, File, Offset, Chunk, CSum, Timeout) -> any()

+
+
+ + +

Generated by EDoc, Jun 25 2015, 16:39:10.

+ + diff --git a/edoc/machi_pb_server.html b/edoc/machi_pb_server.html new file mode 100644 index 0000000..aa08045 --- /dev/null +++ b/edoc/machi_pb_server.html @@ -0,0 +1,31 @@ + + + + +Module machi_pb_server + + + + +
+ +

Module machi_pb_server

+ + + +

Function Index

+ +
run_loop/2
+ +

Function Details

+ +

run_loop/2

+
+

run_loop(Sock, P_srvr_list) -> any()

+
+
+ + +

Generated by EDoc, Jun 25 2015, 16:39:10.

+ + diff --git a/edoc/machi_pb_wrap.html b/edoc/machi_pb_wrap.html new file mode 100644 index 0000000..0d596b5 --- /dev/null +++ b/edoc/machi_pb_wrap.html @@ -0,0 +1,77 @@ + + + + +Module machi_pb_wrap + + + + +
+ +

Module machi_pb_wrap

+Wrappers for Protocol Buffers encoding, including hacks to fix + impedance mismatches between Erlang terms and PB encodings. + + +

Description

Wrappers for Protocol Buffers encoding, including hacks to fix + impedance mismatches between Erlang terms and PB encodings. + +

Function Index

+ + + + + + + + +
dec_p_srvr/1
dec_projection_v1/1
enc_p_srvr/1
enc_projection_v1/1
make_projection_req/2
make_projection_resp/3
unmake_projection_req/1
unmake_projection_resp/1
+ +

Function Details

+ +

dec_p_srvr/1

+
+

dec_p_srvr(Bin) -> any()

+
+ +

dec_projection_v1/1

+
+

dec_projection_v1(Bin) -> any()

+
+ +

enc_p_srvr/1

+
+

enc_p_srvr(P) -> any()

+
+ +

enc_projection_v1/1

+
+

enc_projection_v1(P) -> any()

+
+ +

make_projection_req/2

+
+

make_projection_req(ID, X2) -> any()

+
+ +

make_projection_resp/3

+
+

make_projection_resp(ID, X2, Status) -> any()

+
+ +

unmake_projection_req/1

+
+

unmake_projection_req(Mpb_ll_request) -> any()

+
+ +

unmake_projection_resp/1

+
+

unmake_projection_resp(Mpb_ll_response) -> any()

+
+
+ + +

Generated by EDoc, Jun 25 2015, 16:39:10.

+ + diff --git a/edoc/machi_projection.html b/edoc/machi_projection.html index 0fdff81..e5e90f2 100644 --- a/edoc/machi_projection.html +++ b/edoc/machi_projection.html @@ -89,6 +89,6 @@ correctly.


-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_projection_store.html b/edoc/machi_projection_store.html index 8a584ad..bc12fb5 100644 --- a/edoc/machi_projection_store.html +++ b/edoc/machi_projection_store.html @@ -164,6 +164,6 @@ client access protocol (on the "server side" of the TCP connection).


-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_proxy_flu1_client.html b/edoc/machi_proxy_flu1_client.html index 4ffc528..74236d6 100644 --- a/edoc/machi_proxy_flu1_client.html +++ b/edoc/machi_proxy_flu1_client.html @@ -288,6 +288,6 @@ TCP communication problems with the remote server.


-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_sequencer.html b/edoc/machi_sequencer.html index 86d35c0..ec86498 100644 --- a/edoc/machi_sequencer.html +++ b/edoc/machi_sequencer.html @@ -18,6 +18,6 @@ the future?
-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_sup.html b/edoc/machi_sup.html index 63d931b..c86d124 100644 --- a/edoc/machi_sup.html +++ b/edoc/machi_sup.html @@ -37,6 +37,6 @@
-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_util.html b/edoc/machi_util.html index c2357e0..20013b1 100644 --- a/edoc/machi_util.html +++ b/edoc/machi_util.html @@ -38,6 +38,9 @@ make_regname/1Create a registered name atom for FLU sequencer internal rendezvous/message passing use. make_string/1Convert a compatible Erlang data type into a string() equivalent. +make_tagged_csum/1Create a tagged checksum. +make_tagged_csum/2 +mbytes/1 read_max_filenum/2Read the file size of a config file, which is used as the basis for a minimum sequence number. verb/1Log a verbose message. @@ -136,7 +139,7 @@

make_regname/1

-

make_regname(Prefix::binary() | list()) -> atom()

+

make_regname(Prefix::binary() | string()) -> atom()

Create a registered name atom for FLU sequencer internal rendezvous/message passing use.

@@ -145,6 +148,21 @@

make_string(X::binary() | iolist()) -> string()

Convert a compatible Erlang data type into a string() equivalent.

+

make_tagged_csum/1

+
+

make_tagged_csum(X1) -> any()

+

Create a tagged checksum

+ +

make_tagged_csum/2

+
+

make_tagged_csum(X1, SHA) -> any()

+
+ +

mbytes/1

+
+

mbytes(Size) -> any()

+
+

read_max_filenum/2

read_max_filenum(DataDir::string(), Prefix::string()) -> non_neg_integer()

@@ -153,16 +171,16 @@

verb/1

-

verb(Fmt::string()) -> term()

+

verb(Fmt::string()) -> ok

Log a verbose message.

verb/2

-

verb(Fmt::string(), Args::list()) -> term()

+

verb(Fmt::string(), Args::list()) -> ok

Log a verbose message.


-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/machi_yessir_client.html b/edoc/machi_yessir_client.html index 32495d4..f3ab4c8 100644 --- a/edoc/machi_yessir_client.html +++ b/edoc/machi_yessir_client.html @@ -10,92 +10,10 @@

Module machi_yessir_client

-"Yes, sir!" style dummy/mock client facade. +"Yes, sir!" style dummy/mock client facade.

Description

"Yes, sir!" style dummy/mock client facade. -

Data Types

- -

chunk()

-

chunk() = binary() | iolist()

-

client can use either

- -

chunk_csum()

-

chunk_csum() = {file_offset(), chunk_size(), binary()}

- - -

chunk_pos()

-

chunk_pos() = {file_offset(), chunk_size(), file_name_s()}

- - -

chunk_s()

-

chunk_s() = binary()

-

server always uses binary()

- -

chunk_size()

-

chunk_size() = non_neg_integer()

- - -

epoch_csum()

-

epoch_csum() = binary()

- - -

epoch_id()

-

epoch_id() = {epoch_num(), epoch_csum()}

- - -

epoch_num()

-

epoch_num() = -1 | non_neg_integer()

- - -

error_general()

-

error_general() = bad_arg | wedged

- - -

file_info()

-

file_info() = {file_size(), file_name_s()}

- - -

file_name()

-

file_name() = binary() | list()

- - -

file_name_s()

-

file_name_s() = binary()

-

server reply

- -

file_offset()

-

file_offset() = non_neg_integer()

- - -

file_prefix()

-

file_prefix() = binary() | list()

- - -

file_size()

-

file_size() = non_neg_integer()

- - -

inet_host()

-

inet_host() = inet:ip_address() | inet:hostname()

- - -

inet_port()

-

inet_port() = inet:port_number()

- - -

port_wrap()

-

port_wrap() = {w, atom(), term()}

- - -

projection()

-

projection() = #projection_v1{}

- - -

projection_type()

-

projection_type() = public | private

- -

Function Index

@@ -147,19 +65,19 @@

append_chunk/4

-

append_chunk(Sock::port_wrap(), EpochID::epoch_id(), Prefix::file_prefix(), Chunk::chunk()) -> {ok, chunk_pos()} | {error, error_general()} | {error, term()}

+

append_chunk(Sock, EpochID, Prefix, Chunk) -> any()

Append a chunk (binary- or iolist-style) of data to a file with Prefix.

append_chunk/5

-

append_chunk(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id(), Prefix::file_prefix(), Chunk::chunk()) -> {ok, chunk_pos()} | {error, error_general()} | {error, term()}

+

append_chunk(Host, TcpPort, EpochID, Prefix, Chunk) -> any()

Append a chunk (binary- or iolist-style) of data to a file with Prefix.

append_chunk_extra/5

-

append_chunk_extra(Yessir::port_wrap(), EpochID::epoch_id(), Prefix::file_prefix(), Chunk::chunk(), ChunkExtra::chunk_size()) -> {ok, chunk_pos()} | {error, error_general()} | {error, term()}

+

append_chunk_extra(Yessir, EpochID, Prefix, Chunk, ChunkExtra) -> any()

Append a chunk (binary- or iolist-style) of data to a file with Prefix and also request an additional Extra bytes.

@@ -170,7 +88,7 @@

append_chunk_extra/6

-

append_chunk_extra(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id(), Prefix::file_prefix(), Chunk::chunk(), ChunkExtra::chunk_size()) -> {ok, chunk_pos()} | {error, error_general()} | {error, term()}

+

append_chunk_extra(Host, TcpPort, EpochID, Prefix, Chunk, ChunkExtra) -> any()

Append a chunk (binary- or iolist-style) of data to a file with Prefix and also request an additional Extra bytes.

@@ -181,12 +99,12 @@

checksum_list/3

-

checksum_list(Yessir::port_wrap(), EpochID::epoch_id(), File::file_name()) -> {ok, [chunk_csum()]} | {error, error_general() | no_such_file | partial_read} | {error, term()}

+

checksum_list(Yessir, EpochID, File) -> any()

Fetch the list of chunk checksums for File.

checksum_list/4

-

checksum_list(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id(), File::file_name()) -> {ok, [chunk_csum()]} | {error, error_general() | no_such_file} | {error, term()}

+

checksum_list(Host, TcpPort, EpochID, File) -> any()

Fetch the list of chunk checksums for File.

connect/1

@@ -201,13 +119,13 @@

delete_migration/3

-

delete_migration(Yessir::port_wrap(), EpochID::epoch_id(), File::file_name()) -> ok | {error, error_general() | no_such_file} | {error, term()}

+

delete_migration(Yessir, EpochID, File) -> any()

Restricted API: Delete a file after it has been successfully migrated.

delete_migration/4

-

delete_migration(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id(), File::file_name()) -> ok | {error, error_general() | no_such_file} | {error, term()}

+

delete_migration(Host, TcpPort, EpochID, File) -> any()

Restricted API: Delete a file after it has been successfully migrated.

@@ -218,125 +136,125 @@

get_all_projections/2

-

get_all_projections(Yessir::port_wrap(), ProjType::projection_type()) -> {ok, [projection()]} | {error, term()}

+

get_all_projections(Yessir, ProjType) -> any()

Get all projections from the FLU's projection store.

get_all_projections/3

-

get_all_projections(Host::inet_host(), TcpPort::inet_port(), ProjType::projection_type()) -> {ok, [projection()]} | {error, term()}

+

get_all_projections(Host, TcpPort, ProjType) -> any()

Get all projections from the FLU's projection store.

get_latest_epoch/2

-

get_latest_epoch(Sock::port_wrap(), ProjType::projection_type()) -> {ok, epoch_id()} | {error, term()}

+

get_latest_epoch(Sock, ProjType) -> any()

Get the latest epoch number + checksum from the FLU's projection store.

get_latest_epoch/3

-

get_latest_epoch(Host::inet_host(), TcpPort::inet_port(), ProjType::projection_type()) -> {ok, epoch_id()} | {error, term()}

+

get_latest_epoch(Host, TcpPort, ProjType) -> any()

Get the latest epoch number + checksum from the FLU's projection store.

list_all_projections/2

-

list_all_projections(Sock::port_wrap(), ProjType::projection_type()) -> {ok, [non_neg_integer()]} | {error, term()}

+

list_all_projections(Sock, ProjType) -> any()

Get all epoch numbers from the FLU's projection store.

list_all_projections/3

-

list_all_projections(Host::inet_host(), TcpPort::inet_port(), ProjType::projection_type()) -> {ok, [non_neg_integer()]} | {error, term()}

+

list_all_projections(Host, TcpPort, ProjType) -> any()

Get all epoch numbers from the FLU's projection store.

list_files/2

-

list_files(Yessir::port_wrap(), EpochID::epoch_id()) -> {ok, [file_info()]} | {error, term()}

+

list_files(Yessir, EpochID) -> any()

Fetch the list of all files on the remote FLU.

list_files/3

-

list_files(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id()) -> {ok, [file_info()]} | {error, term()}

+

list_files(Host, TcpPort, EpochID) -> any()

Fetch the list of all files on the remote FLU.

quit/1

-

quit(X1::port_wrap()) -> ok

+

quit(X1) -> any()

Quit & close the connection to remote FLU.

read_chunk/5

-

read_chunk(Yessir::port_wrap(), EpochID::epoch_id(), File::file_name(), Offset::file_offset(), Size::chunk_size()) -> {ok, chunk_s()} | {error, error_general() | no_such_file | partial_read} | {error, term()}

+

read_chunk(Yessir, EpochID, File, Offset, Size) -> any()

Read a chunk of data of size Size from File at Offset.

read_chunk/6

-

read_chunk(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id(), File::file_name(), Offset::file_offset(), Size::chunk_size()) -> {ok, chunk_s()} | {error, error_general() | no_such_file | partial_read} | {error, term()}

+

read_chunk(Host, TcpPort, EpochID, File, Offset, Size) -> any()

Read a chunk of data of size Size from File at Offset.

read_latest_projection/2

-

read_latest_projection(Yessir::port_wrap(), ProjType::projection_type()) -> {ok, projection()} | {error, not_written} | {error, term()}

+

read_latest_projection(Yessir, ProjType) -> any()

Get the latest projection from the FLU's projection store for ProjType

read_latest_projection/3

-

read_latest_projection(Host::inet_host(), TcpPort::inet_port(), ProjType::projection_type()) -> {ok, projection()} | {error, not_written} | {error, term()}

+

read_latest_projection(Host, TcpPort, ProjType) -> any()

Get the latest projection from the FLU's projection store for ProjType

read_projection/3

-

read_projection(Yessir::port_wrap(), ProjType::projection_type(), Epoch::epoch_num()) -> {ok, projection()} | {error, not_written} | {error, term()}

+

read_projection(Yessir, ProjType, Epoch) -> any()

Read a projection Proj of type ProjType.

read_projection/4

-

read_projection(Host::inet_host(), TcpPort::inet_port(), ProjType::projection_type(), Epoch::epoch_num()) -> {ok, projection()} | {error, written} | {error, term()}

+

read_projection(Host, TcpPort, ProjType, Epoch) -> any()

Read a projection Proj of type ProjType.

trunc_hack/3

-

trunc_hack(Yessir::port_wrap(), EpochID::epoch_id(), File::file_name()) -> ok | {error, error_general() | no_such_file} | {error, term()}

+

trunc_hack(Yessir, EpochID, File) -> any()

Restricted API: Truncate a file after it has been successfully erasure coded.

trunc_hack/4

-

trunc_hack(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id(), File::file_name()) -> ok | {error, error_general() | no_such_file} | {error, term()}

+

trunc_hack(Host, TcpPort, EpochID, File) -> any()

Restricted API: Truncate a file after it has been successfully erasure coded.

wedge_status/1

-

wedge_status(Sock::port_wrap()) -> {ok, {boolean(), pv1_epoch()}} | {error, term()}

+

wedge_status(Sock) -> any()

Fetch the wedge status from the remote FLU.

wedge_status/2

-

wedge_status(Host::inet_host(), TcpPort::inet_port()) -> {ok, {boolean(), pv1_epoch()}} | {error, term()}

+

wedge_status(Host, TcpPort) -> any()

Fetch the wedge status from the remote FLU.

write_chunk/5

-

write_chunk(Yessir::port_wrap(), EpochID::epoch_id(), File::file_name(), Offset::file_offset(), Chunk::chunk()) -> ok | {error, error_general()} | {error, term()}

+

write_chunk(Yessir, EpochID, File, Offset, Chunk) -> any()

Restricted API: Write a chunk of already-sequenced data to File at Offset.

write_chunk/6

-

write_chunk(Host::inet_host(), TcpPort::inet_port(), EpochID::epoch_id(), File::file_name(), Offset::file_offset(), Chunk::chunk()) -> ok | {error, error_general()} | {error, term()}

+

write_chunk(Host, TcpPort, EpochID, File, Offset, Chunk) -> any()

Restricted API: Write a chunk of already-sequenced data to File at Offset.

write_projection/3

-

write_projection(Yessir::port_wrap(), ProjType::projection_type(), Proj::projection()) -> ok | {error, written} | {error, term()}

+

write_projection(Yessir, ProjType, Proj) -> any()

Write a projection Proj of type ProjType.

write_projection/4

-

write_projection(Host::inet_host(), TcpPort::inet_port(), ProjType::projection_type(), Proj::projection()) -> ok | {error, written} | {error, term()}

+

write_projection(Host, TcpPort, ProjType, Proj) -> any()

Write a projection Proj of type ProjType.


append_chunk/4Append a chunk (binary- or iolist-style) of data to a file with Prefix.
Overviewerlang logo
-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.

diff --git a/edoc/modules-frame.html b/edoc/modules-frame.html index b9e8842..2c5b968 100644 --- a/edoc/modules-frame.html +++ b/edoc/modules-frame.html @@ -9,14 +9,19 @@ + + + + + diff --git a/edoc/overview-summary.html b/edoc/overview-summary.html index cfc9d75..e75fda4 100644 --- a/edoc/overview-summary.html +++ b/edoc/overview-summary.html @@ -180,6 +180,6 @@ the code, is a reminder signal of unfinished work.


machi_admin_util
machi_app
machi_basho_bench_driver
machi_chain_manager1
machi_chain_repair
machi_chash
machi_cr_client
machi_dt
machi_flu1
machi_flu1_client
machi_flu_psup
machi_flu_sup
machi_pb_high_client
machi_pb_server
machi_pb_wrap
machi_projection
machi_projection_store
machi_proxy_flu1_client
Overviewerlang logo
-

Generated by EDoc, May 20 2015, 12:58:33.

+

Generated by EDoc, Jun 25 2015, 16:39:10.