adk_artifact_stream (erlang_adk v0.10.0)

View Source

Capability-negotiated, credit/ack artifact transfer facade.

A stream handle is bound to the process that opened it. Upload chunks are synchronous and return an acknowledgement plus the next credit grant. Downloads require an explicit credit grant and an acknowledgement for every delivered chunk; at most one chunk is in flight.

Summary

Types

event/0

-type event() ::
          {chunk, pos_integer(), non_neg_integer(), binary()} |
          {done, map()} |
          {error, timeout | cancelled | unavailable | term()}.

stream/0

-type stream() :: {adk_artifact_stream, pid(), reference()}.

Functions

ack(Stream, Sequence)

-spec ack(stream(), pos_integer()) -> ok | {error, term()}.

cancel(Stream, Reason)

-spec cancel(stream(), term()) -> ok | {error, term()}.

credit(Stream, Messages, Bytes)

-spec credit(stream(), pos_integer(), pos_integer()) -> ok | {error, term()}.

finish_upload(Stream)

-spec finish_upload(stream()) -> {ok, map()} | {error, term()}.

finish_upload(Stream, Timeout)

-spec finish_upload(stream(), pos_integer()) -> {ok, map()} | {error, term()}.

open_download(Service, Scope, Name, Selector, TransferOptions)

-spec open_download({module(), term()},
                    adk_artifact_service:scope(),
                    binary(),
                    adk_artifact_service:selector(),
                    map()) ->
                       {ok, stream(), map()} | {error, term()}.

open_upload(Service, Scope, Name, PutOptions, TransferOptions)

-spec open_upload({module(), term()}, adk_artifact_service:scope(), binary(), map(), map()) ->
                     {ok, stream(), map()} | {error, term()}.

recv(Stream, Timeout)

-spec recv(stream(), timeout()) -> {ok, event()} | {error, timeout}.

send_chunk(Stream, Sequence, Chunk)

-spec send_chunk(stream(), pos_integer(), binary()) -> {ok, map()} | {error, term()}.

send_chunk(Stream, Sequence, Chunk, Timeout)

-spec send_chunk(stream(), pos_integer(), binary(), pos_integer()) -> {ok, map()} | {error, term()}.