View Source partisan_erpc (partisan v5.0.0-rc.8)
This module is an adaptation of Erlang erpc
module.
It replaces all instances of erlang:send/2` and `erlang:monitor/2` with their Partisan counterparts. It maintains the `erpc
API with the following exceptions:
TODO - Channels
NOTICE: At the moment this only works forpartisan_pluggable_peer_service_manager
.
Summary
Types
-type caught_call_exception() :: {throw, Throw :: term()} | {exit, {exception, Reason :: term()}} | {error, {exception, Reason :: term(), StackTrace :: [stack_item()]}} | {exit, {signal, Reason :: term()}} | {error, {partisan_erpc, Reason :: term()}}.
-opaque request_id()
-type stack_item() ::
{Module :: atom(),
Function :: atom(),
Arity :: arity() | (Args :: [term()]),
Location :: [{file, Filename :: string()} | {line, Line :: pos_integer()}]}.
Functions
-spec call(Node, Fun) -> Result when Node :: node(), Fun :: function(), Result :: term().
-spec call(Node, Fun, Timeout) -> Result
when
Node :: node(),
Fun :: function(),
Timeout :: 0..4294967295 | infinity,
Result :: term().
-spec call(Node, Module, Function, Args) -> Result
when
Node :: node(),
Module :: atom(),
Function :: atom(),
Args :: [term()],
Result :: term().
-spec call(Node, Module, Function, Args, Timeout) -> Result
when
Node :: node(),
Module :: atom(),
Function :: atom(),
Args :: [term()],
Timeout :: 0..4294967295 | infinity,
Result :: term().
-spec cast(Node, Fun) -> ok when Node :: node(), Fun :: function().
-spec cast(Node, Module, Function, Args) -> ok
when Node :: node(), Module :: atom(), Function :: atom(), Args :: [term()].
-spec check_response(Message, RequestId) -> {response, Result} | no_response when Message :: term(), RequestId :: request_id(), Result :: term().
-spec multicall(Nodes, Fun) -> Result when Nodes :: [atom()], Fun :: function(), Result :: term().
-spec multicall(Nodes, Fun, Timeout) -> Result
when
Nodes :: [atom()],
Fun :: function(),
Timeout :: 0..4294967295 | infinity,
Result :: term().
-spec multicall(Nodes, Module, Function, Args) -> Result when Nodes :: [atom()], Module :: atom(), Function :: atom(), Args :: [term()], Result :: [{ok, ReturnValue :: term()} | caught_call_exception()].
-spec multicall(Nodes, Module, Function, Args, Timeout) -> Result when Nodes :: [atom()], Module :: atom(), Function :: atom(), Args :: [term()], Timeout :: 0..4294967295 | infinity, Result :: [{ok, ReturnValue :: term()} | caught_call_exception()].
-spec multicast(Nodes, Fun) -> ok when Nodes :: [node()], Fun :: function().
-spec multicast(Nodes, Module, Function, Args) -> ok
when Nodes :: [node()], Module :: atom(), Function :: atom(), Args :: [term()].
-spec receive_response(RequestId) -> Result when RequestId :: request_id(), Result :: term().
-spec receive_response(RequestId, Timeout) -> Result when RequestId :: request_id(), Timeout :: 0..4294967295 | infinity, Result :: term().
-spec send_request(Node, Fun) -> RequestId when Node :: node(), Fun :: function(), RequestId :: request_id().
-spec send_request(Node, Module, Function, Args) -> RequestId when Node :: node(), Module :: atom(), Function :: atom(), Args :: [term()], RequestId :: request_id().
-spec wait_response(RequestId) -> {response, Result} | no_response when RequestId :: request_id(), Result :: term().
-spec wait_response(RequestId, WaitTime) -> {response, Result} | no_response when RequestId :: request_id(), WaitTime :: 0..4294967295 | infinity, Result :: term().