temporal_sdk_grpc (temporal_sdk v0.1.14)

View Source

gRPC client module.

Summary

Types

adapter()

-type adapter() :: {AdapterModule :: module(), AdapterConfig :: term()}.

cluster_name()

-type cluster_name() :: atom().

codec()

-type codec() :: {Module :: module(), EncodeOpts :: term(), DecodeOpts :: term()}.

compressor()

-type compressor() :: {Module :: module(), CompressOpts :: term(), DecompressOpts :: term()}.

converter()

-type converter() :: {ConverterModule :: module(), ConverterOpts :: term()}.

headers()

-type headers() ::
          [{nonempty_binary() | string() | atom(), iodata()}] |
          #{nonempty_binary() | string() | atom() => iodata()}.

interceptor()

-type interceptor() :: {Module :: module(), HandleRequestOpts :: term(), HandleResponseOpts :: term()}.

msg()

-type msg() :: dynamic().

msg_name()

-type msg_name() :: term().

opts()

-type opts() ::
          #{converter => converter(),
            codec => codec(),
            compressor => compressor(),
            interceptor => interceptor(),
            timeout => non_neg_integer(),
            retry_policy => retry_policy(),
            headers => headers(),
            maximum_request_size => pos_integer()}.

request_info()

-type request_info() ::
          #{type := request | response,
            content_type := binary(),
            input := atom(),
            input_stream := boolean(),
            output := atom(),
            output_stream := boolean(),
            msg_type := binary(),
            name := atom(),
            opts := list(),
            service_fqname := atom()}.

result()

-type result() :: result_success() | result_error().

result_error()

-type result_error() :: {error, Reason :: term()}.

result_success()

-type result_success() :: {ok, ResponseMsg :: temporal_sdk_grpc:msg()}.

retry_policy()

-type retry_policy() ::
          disabled |
          #{initial_interval := pos_integer(),
            backoff_coefficient := pos_integer(),
            maximum_interval := pos_integer(),
            max_attempts := pos_integer(),
            is_retryable :=
                fun((Result :: result(), RequestInfo :: request_info(), Attempt :: pos_integer()) ->
                        boolean())}.

rpc_name()

-type rpc_name() :: term().

Functions

convert_request(Cluster, Msg, MsgName, Opts)

-spec convert_request(Cluster :: cluster_name(), Msg :: msg(), MsgName :: atom(), Opts :: opts()) ->
                         {ok, ConvertedMsg :: msg()} | {error, Reason :: term()}.

convert_response(Cluster, Msg, MsgName, Opts)

-spec convert_response(Cluster :: cluster_name(), Msg :: msg(), MsgName :: atom(), Opts :: opts()) ->
                          {ok, ConvertedMsg :: msg()} | {error, Reason :: term()}.

from_json(Json, MsgName, Opts)

-spec from_json(Json :: map(), MsgName :: msg_name(), Opts :: opts()) ->
                   {ok, msg()} | {error, Reason :: term()}.

max_timeout(Opts)

-spec max_timeout(Opts :: opts()) -> pos_integer().

request(From, Cluster, Msg, Opts, RequestInfo)

-spec request(From :: erlang:send_destination() | noreply,
              Cluster :: cluster_name(),
              Msg :: msg(),
              Opts :: opts(),
              RequestInfo :: request_info()) ->
                 ok.

start_grpc(Cluster, Adapter)

-spec start_grpc(Cluster :: cluster_name(), Adapter :: adapter()) -> ok | {error, term()}.

to_json(Msg, MsgName, Opts)

-spec to_json(Msg :: msg(), MsgName :: msg_name(), Opts :: opts()) ->
                 {ok, map()} | {error, Reason :: term()}.