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 for partisan_pluggable_peer_service_manager.

    Summary

    Types

    Link to this type

    caught_call_exception/0

    View Source
    -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().
    Link to this function

    call(Node, Fun, Timeout)

    View Source
    -spec call(Node, Fun, Timeout) -> Result
            when
                Node :: node(),
                Fun :: function(),
                Timeout :: 0..4294967295 | infinity,
                Result :: term().
    Link to this function

    call(Node, Module, Function, Args)

    View Source
    -spec call(Node, Module, Function, Args) -> Result
            when
                Node :: node(),
                Module :: atom(),
                Function :: atom(),
                Args :: [term()],
                Result :: term().
    Link to this function

    call(Node, Module, Function, Args, Timeout)

    View Source
    -spec call(Node, Module, Function, Args, Timeout) -> Result
            when
                Node :: node(),
                Module :: atom(),
                Function :: atom(),
                Args :: [term()],
                Timeout :: 0..4294967295 | infinity,
                Result :: term().
    Link to this function

    call_result(Type, ReqId, Res, Reason)

    View Source
    -spec cast(Node, Fun) -> ok when Node :: node(), Fun :: function().
    Link to this function

    cast(Node, Module, Function, Args)

    View Source
    -spec cast(Node, Module, Function, Args) -> ok
            when Node :: node(), Module :: atom(), Function :: atom(), Args :: [term()].
    Link to this function

    check_response(Message, RequestId)

    View Source
    -spec check_response(Message, RequestId) -> {response, Result} | no_response
                      when Message :: term(), RequestId :: request_id(), Result :: term().
    Link to this function

    execute_call(Ref, M, F, A)

    View Source
    Link to this function

    is_arg_error(R, M, F, A)

    View Source
    -spec multicall(Nodes, Fun) -> Result when Nodes :: [atom()], Fun :: function(), Result :: term().
    Link to this function

    multicall(Nodes, Fun, Timeout)

    View Source
    -spec multicall(Nodes, Fun, Timeout) -> Result
                 when
                     Nodes :: [atom()],
                     Fun :: function(),
                     Timeout :: 0..4294967295 | infinity,
                     Result :: term().
    Link to this function

    multicall(Nodes, Module, Function, Args)

    View Source
    -spec multicall(Nodes, Module, Function, Args) -> Result
                 when
                     Nodes :: [atom()],
                     Module :: atom(),
                     Function :: atom(),
                     Args :: [term()],
                     Result :: [{ok, ReturnValue :: term()} | caught_call_exception()].
    Link to this function

    multicall(Nodes, Module, Function, Args, Timeout)

    View Source
    -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().
    Link to this function

    multicast(Nodes, Module, Function, Args)

    View Source
    -spec multicast(Nodes, Module, Function, Args) -> ok
                 when Nodes :: [node()], Module :: atom(), Function :: atom(), Args :: [term()].
    Link to this function

    receive_response(RequestId)

    View Source
    -spec receive_response(RequestId) -> Result when RequestId :: request_id(), Result :: term().
    Link to this function

    receive_response(RequestId, Timeout)

    View Source
    -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().
    Link to this function

    send_request(Node, Module, Function, Args)

    View Source
    -spec send_request(Node, Module, Function, Args) -> RequestId
                    when
                        Node :: node(),
                        Module :: atom(),
                        Function :: atom(),
                        Args :: [term()],
                        RequestId :: request_id().
    Link to this function

    wait_response(RequestId)

    View Source
    -spec wait_response(RequestId) -> {response, Result} | no_response
                     when RequestId :: request_id(), Result :: term().
    Link to this function

    wait_response(RequestId, WaitTime)

    View Source
    -spec wait_response(RequestId, WaitTime) -> {response, Result} | no_response
                     when
                         RequestId :: request_id(),
                         WaitTime :: 0..4294967295 | infinity,
                         Result :: term().