partisan_membership_strategy behaviour (partisan v5.0.2)

View Source

Summary

Types

membership_list/0

-type membership_list() :: [partisan:node_spec()].

outgoing_message/0

-type outgoing_message() :: {node(), partisan:message()}.

outgoing_messages/0

-type outgoing_messages() :: [outgoing_message()].

Callbacks

compare/2

-callback compare(Members :: membership_list(), State :: any()) ->
                     {Joiners :: membership_list(), Leavers :: membership_list()}.

handle_message/2

-callback handle_message(partisan:message(), State :: any()) ->
                            {ok, membership_list(), outgoing_messages(), NewState :: any()}.

init/1

-callback init(partisan:actor()) -> {ok, membership_list(), State :: any()}.

join/3

-callback join(NodeSpec :: partisan:node_spec(), PeerState :: any(), LocalState :: any()) ->
                  {ok, membership_list(), outgoing_messages(), NewState :: any()}.

leave/2

-callback leave(NodeSpec :: partisan:node_spec(), State :: any()) ->
                   {ok, membership_list(), outgoing_messages(), NewState :: any()}.

periodic/1

-callback periodic(State :: any()) -> {ok, membership_list(), outgoing_messages(), NewState :: any()}.

prune/2

-callback prune([NodeSpec :: partisan:node_spec()], State :: any()) ->
                   {ok, membership_list(), NewState :: any()}.

Functions

handle_message(Mod, Msg, State)

-spec handle_message(Mod :: module(), partisan:message(), State :: any()) ->
                        {ok, membership_list(), outgoing_messages(), NewState :: any()}.

init(Mod, Actor)

-spec init(Mod :: module(), partisan:actor()) -> {ok, membership_list(), State :: any()}.

join(Mod, NodeSpec, PeerState, LocalState)

-spec join(Mod :: module(), NodeSpec :: partisan:node_spec(), PeerState :: any(), LocalState :: any()) ->
              {ok, membership_list(), outgoing_messages(), NewState :: any()}.

leave(Mod, NodeSpec, State)

-spec leave(Mod :: module(), partisan:node_spec(), State :: any()) ->
               {ok, membership_list(), outgoing_messages(), NewState :: any()}.

periodic(Mod, State)

-spec periodic(Mod :: module(), State :: any()) ->
                  {ok, membership_list(), outgoing_messages(), NewState :: any()}.

prune(Mod, NodeSpecs, State)

-spec prune(Mod :: module(), [partisan:node_spec()], State :: any()) ->
               {ok, membership_list(), NewState :: any()}.