RaftedValue.Logs (rafted_value v0.12.0)

Copy Markdown View Source

Summary

Functions

Type-aware getter for followers.

Type-aware setter for followers.

Type-aware getter for i_committed.

Type-aware setter for i_committed.

Type-aware getter for i_max.

Type-aware setter for i_max.

Type-aware getter for i_min.

Type-aware setter for i_min.

Type-aware getter for map.

Type-aware setter for map.

Creates a new instance of RaftedValue.Logs by using the given dict.

A variant of new/1 which returns t or raise if validation fails.

Updates an existing instance of RaftedValue.Logs with the given dict. The values in the dict are validated by each field's valid?/1 function. Returns {:ok, valid_struct} or {:error, reason}.

A variant of update/2 which returns t or raise if validation fails. In other words, update/2 followed by Croma.Result.get!/1.

Checks if the given value belongs to t/0 or not.

Types

t()

@type t() :: %RaftedValue.Logs{
  followers: Croma.TypeGen.Nilable.RaftedValue.FollowerIndices.t(),
  i_committed: RaftedValue.LogIndex.t(),
  i_max: RaftedValue.LogIndex.t(),
  i_min: RaftedValue.LogIndex.t(),
  map: RaftedValue.LogsMap.t()
}

Functions

add_entry(logs, persistence, f)

add_entry_on_add_follower(logs, term, new_follower, persistence)

@spec add_entry_on_add_follower(
  t(),
  RaftedValue.TermNumber.t(),
  pid(),
  nil | RaftedValue.Persistence.t()
) :: {t(), RaftedValue.LogEntry.t()}

add_entry_on_elected_leader(logs, members, term, persistence)

@spec add_entry_on_elected_leader(
  t(),
  RaftedValue.Members.t(),
  RaftedValue.TermNumber.t(),
  nil | RaftedValue.Persistence.t()
) :: {t(), RaftedValue.LogEntry.t()}

add_entry_on_remove_follower(logs, term, follower_to_remove, persistence)

@spec add_entry_on_remove_follower(
  t(),
  RaftedValue.TermNumber.t(),
  pid(),
  nil | RaftedValue.Persistence.t()
) :: {t(), RaftedValue.LogEntry.t()}

add_entry_on_restored_from_files(logs, term)

@spec add_entry_on_restored_from_files(t(), RaftedValue.TermNumber.t()) ::
  {t(), RaftedValue.LogEntry.t()}

append_entries(logs, members0, entries, i_leader_commit, persistence)

candidate_log_up_to_date?(arg0, candidate_log_info)

@spec candidate_log_up_to_date?(t(), RaftedValue.LogInfo.t()) :: boolean()

commit_to_latest(logs, persistence)

@spec commit_to_latest(
  t(),
  nil | RaftedValue.Persistence.t()
) :: {t(), [RaftedValue.LogEntry.t()]}

contain_given_prev_log?(arg0, arg1)

@spec contain_given_prev_log?(
  t(),
  {any(), any()}
) :: boolean()

decrement_next_index_of_follower(logs, follower_pid)

@spec decrement_next_index_of_follower(
  t(),
  pid()
) :: t()

followers(logs)

@spec followers(t()) :: Croma.TypeGen.Nilable.RaftedValue.FollowerIndices.t()

Type-aware getter for followers.

followers(s, field)

@spec followers(t(), Croma.TypeGen.Nilable.RaftedValue.FollowerIndices.t()) :: t()

Type-aware setter for followers.

i_committed(logs)

@spec i_committed(t()) :: RaftedValue.LogIndex.t()

Type-aware getter for i_committed.

i_committed(s, field)

@spec i_committed(t(), RaftedValue.LogIndex.t()) :: t()

Type-aware setter for i_committed.

i_max(logs)

@spec i_max(t()) :: RaftedValue.LogIndex.t()

Type-aware getter for i_max.

i_max(s, field)

@spec i_max(t(), RaftedValue.LogIndex.t()) :: t()

Type-aware setter for i_max.

i_min(logs)

@spec i_min(t()) :: RaftedValue.LogIndex.t()

Type-aware getter for i_min.

i_min(s, field)

@spec i_min(t(), RaftedValue.LogIndex.t()) :: t()

Type-aware setter for i_min.

last_committed_entry(arg0)

@spec last_committed_entry(t()) :: RaftedValue.LogEntry.t()

last_entry(arg0)

@spec last_entry(t()) :: RaftedValue.LogEntry.t()

make_append_entries_req(logs, term, follower_pid, now)

@spec make_append_entries_req(
  t(),
  RaftedValue.TermNumber.t(),
  pid(),
  integer()
) :: {:ok, RaftedValue.RPC.AppendEntriesRequest.t()} | {:too_old, t()} | :error

map(logs)

@spec map(t()) :: RaftedValue.LogsMap.t()

Type-aware getter for map.

map(s, field)

@spec map(t(), RaftedValue.LogsMap.t()) :: t()

Type-aware setter for map.

new(dict)

@spec new(term()) :: Croma.Result.t(t())

Creates a new instance of RaftedValue.Logs by using the given dict.

Values associated with the struct field names are fetched from the given dict and then validated/converted with valid?/1/new/1. For missing fields default values (if any) are used.

Returns {:ok, valid_struct} when all fields are filled with valid values. Returns {:error, reason} if any error occurs (invalid value or no value is available).

See also moduledoc of Croma.Struct.

new!(dict)

@spec new!(term()) :: t()

A variant of new/1 which returns t or raise if validation fails.

In other words, new/1 followed by Croma.Result.get!/1.

new_for_lonely_leader(last_committed_entry, entries_to_append)

@spec new_for_lonely_leader(
  RaftedValue.LogEntry.t(),
  Enumerable.t(RaftedValue.LogEntry.t())
) :: t()

new_for_new_follower(last_committed_entry)

@spec new_for_new_follower(RaftedValue.LogEntry.t()) :: t()

set_follower_index(logs, arg1, current_term, follower_pid, i_replicated, persistence)

set_follower_index_as_snapshot_last_index(logs, arg1, follower_pid, arg3)

@spec set_follower_index_as_snapshot_last_index(
  t(),
  RaftedValue.Members.t(),
  pid(),
  RaftedValue.Persistence.SnapshotMetadata.t()
) :: t()

update(s, dict)

@spec update(t(), Dict.t()) :: Croma.Result.t(t())

Updates an existing instance of RaftedValue.Logs with the given dict. The values in the dict are validated by each field's valid?/1 function. Returns {:ok, valid_struct} or {:error, reason}.

update!(s, dict)

@spec update!(t(), Dict.t()) :: t()

A variant of update/2 which returns t or raise if validation fails. In other words, update/2 followed by Croma.Result.get!/1.

valid?(value)

@spec valid?(term()) :: boolean()

Checks if the given value belongs to t/0 or not.