View Source partisan_pluggable_peer_service_manager (partisan v5.0.0-beta.21)
This module realises the partisan_peer_service_manager behaviour implementing a full-mesh topology.
  
  characteristics
  
  Characteristics
- Uses TCP/IP.
 - All nodes communicate and maintain connections with all other nodes.
 - Nodes periodically send heartbeat messages. The service considers a node "failed" when it misses X heartbeats.
 - Point-to-point messaging with a single network hop.
 - Eventually consistent membership maintained in a CRDT and replicated using gossip.
 - Scalability limited to hundres of nodes (60-200 nodes).
 
Link to this section Summary
Functions
Cast a message to a remote gen_server.
    Cast a message to a remote gen_server.
    Decode state.
    Gensym support for forwarding.
    Gensym support for forwarding.
    Forward message to registered process on the remote side.
    Return local node's view of cluster membership.
    Inject a partition.
    Attempt to join a remote node.
    Leave the cluster.
    Remove another node from the cluster.
    Returns true if node 
    Node is a member in the membership list. Otherwise returns false.Return membership list.
    Return membership list.
    Trigger function on connection close for a given node. 
    Fun is a function object taking zero or a single argument, where the argument is the Node name.Trigger function on connection close for a given node. 
    Fun is a function object taking zero or a single argument, where the argument is the Node name.Trigger function on connection open for a given node. 
    Fun is a function object taking zero or a single argument, where the argument is the Node name.Trigger function on connection open for a given node. 
    Fun is a function object taking zero or a single argument, where the argument is the Node name.Return partitions.
    Receive message from a remote manager.
    Reserve a slot for the particular tag.
    Resolve a partition.
    Send message to a remote peer service manager.
    Same as start_link([]).
    Attempt to join a remote node.
    Update membership.
    Link to this section Types
-type channel_subs() :: #{{'_' | node(), partisan:channel()} => on_event_fun()}.
-type from() :: {pid(), atom()}.
      -type interpos_arg() :: {receive_message, node(), any()}.
      -type interpos_fun() :: fun((interpos_arg()) -> interpos_arg()).
-type interposition_map(T) :: #{any() => T}.
      -type node_subs() :: #{'_' | node() => on_event_fun()}.
-type on_event_fun() :: partisan_peer_service_manager:on_event_fun().
-type t() :: #state{}.
      -type x_interpos_fun() :: fun((interpos_arg()) -> ok).
Link to this section Functions
-spec cast_message(Term :: partisan_remote_ref:p() | partisan_remote_ref:n() | pid(), Message :: partisan:message()) -> ok.
-spec init([]) -> {ok, t()}.
Node is a member in the membership list. Otherwise returns false.
  Fun is a function object taking zero or a single argument, where the argument is the Node name.
  Fun is a function object taking zero or a single argument, where the argument is the Node name.
  Fun is a function object taking zero or a single argument, where the argument is the Node name.
  Fun is a function object taking zero or a single argument, where the argument is the Node name.
  -spec start_link() -> {ok, pid()} | ignore | {error, term()}.
      -spec supports_capability(Arg :: atom()) -> boolean().
      -spec terminate(term(), t()) -> term().