Add client-side plumbing for high proto append chunk CoC
This commit is contained in:
parent
ac10f97220
commit
014ba89e3a
2 changed files with 17 additions and 16 deletions
|
@ -38,7 +38,7 @@
|
|||
connected_p/1,
|
||||
echo/2, echo/3,
|
||||
auth/3, auth/4,
|
||||
append_chunk/6, append_chunk/7,
|
||||
append_chunk/7, append_chunk/8,
|
||||
write_chunk/5, write_chunk/6,
|
||||
read_chunk/5, read_chunk/6,
|
||||
trim_chunk/4, trim_chunk/5,
|
||||
|
@ -96,21 +96,21 @@ auth(PidSpec, User, Pass) ->
|
|||
auth(PidSpec, User, Pass, Timeout) ->
|
||||
send_sync(PidSpec, {auth, User, Pass}, Timeout).
|
||||
|
||||
-spec append_chunk(pid(), PlacementKey::binary(), Prefix::binary(), Chunk::binary(),
|
||||
-spec append_chunk(pid(), CoC_namespace::binary(), CoC_locator::integer(), Prefix::binary(), Chunk::binary(),
|
||||
CSum::binary(), ChunkExtra::non_neg_integer()) ->
|
||||
{ok, Filename::string(), Offset::machi_dt:file_offset()} |
|
||||
{error, machi_client_error_reason()}.
|
||||
append_chunk(PidSpec, PlacementKey, Prefix, Chunk, CSum, ChunkExtra) ->
|
||||
append_chunk(PidSpec, PlacementKey, Prefix, Chunk, CSum, ChunkExtra, ?DEFAULT_TIMEOUT).
|
||||
append_chunk(PidSpec, CoC_namespace, CoC_locator, Prefix, Chunk, CSum, ChunkExtra) ->
|
||||
append_chunk(PidSpec, CoC_namespace, CoC_locator, Prefix, Chunk, CSum, ChunkExtra, ?DEFAULT_TIMEOUT).
|
||||
|
||||
-spec append_chunk(pid(), PlacementKey::binary(), Prefix::binary(),
|
||||
-spec append_chunk(pid(), CoC_namespace::binary(), CoC_locator::integer(), Prefix::binary(),
|
||||
Chunk::binary(), CSum::binary(),
|
||||
ChunkExtra::non_neg_integer(),
|
||||
Timeout::non_neg_integer()) ->
|
||||
{ok, Filename::string(), Offset::machi_dt:file_offset()} |
|
||||
{error, machi_client_error_reason()}.
|
||||
append_chunk(PidSpec, PlacementKey, Prefix, Chunk, CSum, ChunkExtra, Timeout) ->
|
||||
send_sync(PidSpec, {append_chunk, PlacementKey, Prefix, Chunk, CSum, ChunkExtra}, Timeout).
|
||||
append_chunk(PidSpec, CoC_namespace, CoC_locator, Prefix, Chunk, CSum, ChunkExtra, Timeout) ->
|
||||
send_sync(PidSpec, {append_chunk, CoC_namespace, CoC_locator, Prefix, Chunk, CSum, ChunkExtra}, Timeout).
|
||||
|
||||
-spec write_chunk(pid(), File::string(), machi_dt:file_offset(),
|
||||
Chunk::binary(), CSum::binary()) ->
|
||||
|
@ -281,15 +281,14 @@ do_send_sync2({auth, User, Pass}, #state{sock=Sock}=S) ->
|
|||
Res = {bummer, {X, Y, erlang:get_stacktrace()}},
|
||||
{Res, S}
|
||||
end;
|
||||
do_send_sync2({append_chunk, PlacementKey, Prefix, Chunk, CSum, ChunkExtra},
|
||||
do_send_sync2({append_chunk, CoC_namespace, CoC_locator,
|
||||
Prefix, Chunk, CSum, ChunkExtra},
|
||||
#state{sock=Sock, sock_id=Index, count=Count}=S) ->
|
||||
try
|
||||
ReqID = <<Index:64/big, Count:64/big>>,
|
||||
PK = if PlacementKey == <<>> -> undefined;
|
||||
true -> PlacementKey
|
||||
end,
|
||||
CSumT = convert_csum_req(CSum, Chunk),
|
||||
Req = #mpb_appendchunkreq{placement_key=PK,
|
||||
Req = #mpb_appendchunkreq{coc_namespace=CoC_namespace,
|
||||
coc_locator=CoC_locator,
|
||||
prefix=Prefix,
|
||||
chunk=Chunk,
|
||||
csum=CSumT,
|
||||
|
|
|
@ -61,16 +61,17 @@ smoke_test2() ->
|
|||
%% a separate test module? Or separate test func?
|
||||
{error, _} = ?C:auth(Clnt, "foo", "bar"),
|
||||
|
||||
PK = <<>>,
|
||||
CoC_n = <<>>, % CoC_namespace (not implemented)
|
||||
CoC_l = 0, % CoC_locator (not implemented)
|
||||
Prefix = <<"prefix">>,
|
||||
Chunk1 = <<"Hello, chunk!">>,
|
||||
{ok, {Off1, Size1, File1}} =
|
||||
?C:append_chunk(Clnt, PK, Prefix, Chunk1, none, 0),
|
||||
?C:append_chunk(Clnt, CoC_n, CoC_l, Prefix, Chunk1, none, 0),
|
||||
true = is_binary(File1),
|
||||
Chunk2 = "It's another chunk",
|
||||
CSum2 = {client_sha, machi_util:checksum_chunk(Chunk2)},
|
||||
{ok, {Off2, Size2, File2}} =
|
||||
?C:append_chunk(Clnt, PK, Prefix, Chunk2, CSum2, 1024),
|
||||
?C:append_chunk(Clnt, CoC_n, CoC_l, Prefix, Chunk2, CSum2, 1024),
|
||||
Chunk3 = ["This is a ", <<"test,">>, 32, [["Hello, world!"]]],
|
||||
File3 = File2,
|
||||
Off3 = Off2 + iolist_size(Chunk2),
|
||||
|
@ -114,7 +115,8 @@ smoke_test2() ->
|
|||
LargeBytes = binary:copy(<<"x">>, 1024*1024),
|
||||
LBCsum = {client_sha, machi_util:checksum_chunk(LargeBytes)},
|
||||
{ok, {Offx, Sizex, Filex}} =
|
||||
?C:append_chunk(Clnt, PK, Prefix, LargeBytes, LBCsum, 0),
|
||||
?C:append_chunk(Clnt, CoC_n, CoC_l,
|
||||
Prefix, LargeBytes, LBCsum, 0),
|
||||
ok = ?C:trim_chunk(Clnt, Filex, Offx, Sizex),
|
||||
|
||||
%% Make sure everything was trimmed
|
||||
|
|
Loading…
Reference in a new issue