barrel_p2p_protocol (barrel_p2p v0.1.0)

View Source

Summary

Types

hyparview_msg/0

-type hyparview_msg() ::
          {join,
           Sender ::
               #peer{id :: node(),
                     address :: inet:ip_address() | undefined,
                     port :: inet:port_number() | undefined,
                     quic_port :: inet:port_number() | undefined,
                     connected :: boolean(),
                     priority :: high | low,
                     last_seen :: integer() | undefined,
                     fail_count :: non_neg_integer(),
                     backoff_until :: integer() | undefined}} |
          {forward_join,
           NewPeer ::
               #peer{id :: node(),
                     address :: inet:ip_address() | undefined,
                     port :: inet:port_number() | undefined,
                     quic_port :: inet:port_number() | undefined,
                     connected :: boolean(),
                     priority :: high | low,
                     last_seen :: integer() | undefined,
                     fail_count :: non_neg_integer(),
                     backoff_until :: integer() | undefined},
           TTL :: integer(),
           Sender ::
               #peer{id :: node(),
                     address :: inet:ip_address() | undefined,
                     port :: inet:port_number() | undefined,
                     quic_port :: inet:port_number() | undefined,
                     connected :: boolean(),
                     priority :: high | low,
                     last_seen :: integer() | undefined,
                     fail_count :: non_neg_integer(),
                     backoff_until :: integer() | undefined}} |
          {disconnect,
           Sender ::
               #peer{id :: node(),
                     address :: inet:ip_address() | undefined,
                     port :: inet:port_number() | undefined,
                     quic_port :: inet:port_number() | undefined,
                     connected :: boolean(),
                     priority :: high | low,
                     last_seen :: integer() | undefined,
                     fail_count :: non_neg_integer(),
                     backoff_until :: integer() | undefined}} |
          {neighbor,
           Priority :: high | low,
           Sender ::
               #peer{id :: node(),
                     address :: inet:ip_address() | undefined,
                     port :: inet:port_number() | undefined,
                     quic_port :: inet:port_number() | undefined,
                     connected :: boolean(),
                     priority :: high | low,
                     last_seen :: integer() | undefined,
                     fail_count :: non_neg_integer(),
                     backoff_until :: integer() | undefined}} |
          {neighbor_reply,
           Accept :: boolean(),
           Sender ::
               #peer{id :: node(),
                     address :: inet:ip_address() | undefined,
                     port :: inet:port_number() | undefined,
                     quic_port :: inet:port_number() | undefined,
                     connected :: boolean(),
                     priority :: high | low,
                     last_seen :: integer() | undefined,
                     fail_count :: non_neg_integer(),
                     backoff_until :: integer() | undefined}} |
          {shuffle,
           TTL :: integer(),
           Peers ::
               [#peer{id :: node(),
                      address :: inet:ip_address() | undefined,
                      port :: inet:port_number() | undefined,
                      quic_port :: inet:port_number() | undefined,
                      connected :: boolean(),
                      priority :: high | low,
                      last_seen :: integer() | undefined,
                      fail_count :: non_neg_integer(),
                      backoff_until :: integer() | undefined}],
           Sender ::
               #peer{id :: node(),
                     address :: inet:ip_address() | undefined,
                     port :: inet:port_number() | undefined,
                     quic_port :: inet:port_number() | undefined,
                     connected :: boolean(),
                     priority :: high | low,
                     last_seen :: integer() | undefined,
                     fail_count :: non_neg_integer(),
                     backoff_until :: integer() | undefined}} |
          {shuffle_reply,
           Peers ::
               [#peer{id :: node(),
                      address :: inet:ip_address() | undefined,
                      port :: inet:port_number() | undefined,
                      quic_port :: inet:port_number() | undefined,
                      connected :: boolean(),
                      priority :: high | low,
                      last_seen :: integer() | undefined,
                      fail_count :: non_neg_integer(),
                      backoff_until :: integer() | undefined}],
           Sender ::
               #peer{id :: node(),
                     address :: inet:ip_address() | undefined,
                     port :: inet:port_number() | undefined,
                     quic_port :: inet:port_number() | undefined,
                     connected :: boolean(),
                     priority :: high | low,
                     last_seen :: integer() | undefined,
                     fail_count :: non_neg_integer(),
                     backoff_until :: integer() | undefined}}.

Functions

decode(Bin)

-spec decode(binary()) -> hyparview_msg().

encode(_)

-spec encode(hyparview_msg()) -> binary().

handle_message(Other, Handler)

-spec handle_message({atom(), node(), term()}, pid()) -> ok.

send(Node, Msg)

-spec send(node(), hyparview_msg()) -> ok.