View Source AntikytheraCore.AsyncJob.Queue (antikythera v0.5.1)
A queue-like data structure, replicated using RaftedValue
, to store AntikytheraCore.AsyncJob
structs.
Summary
Functions
Type-aware getter for abandoned_jobs.
Type-aware setter for abandoned_jobs.
Type-aware getter for brokers_to_notify.
Type-aware setter for brokers_to_notify.
Type-aware getter for brokers_waiting.
Type-aware setter for brokers_waiting.
Type-aware getter for index_runnable.
Type-aware setter for index_runnable.
Type-aware getter for index_running.
Type-aware setter for index_running.
Type-aware getter for index_waiting.
Type-aware setter for index_waiting.
Type-aware getter for jobs.
Type-aware setter for jobs.
Creates a new instance of AntikytheraCore.AsyncJob.Queue by using the given dict
.
A variant of new/1
which returns t
or raise if validation fails.
Updates an existing instance of AntikytheraCore.AsyncJob.Queue 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
@type t() :: %AntikytheraCore.AsyncJob.Queue{ abandoned_jobs: Croma.TypeGen.ListOf.AntikytheraCore.AsyncJob.Queue.IdJobPair.t(), brokers_to_notify: Croma.TypeGen.ListOf.Croma.Pid.t(), brokers_waiting: Croma.TypeGen.ListOf.Croma.Pid.t(), index_runnable: AntikytheraCore.AsyncJob.Queue.SecondaryIndex.t(), index_running: AntikytheraCore.AsyncJob.Queue.SecondaryIndex.t(), index_waiting: AntikytheraCore.AsyncJob.Queue.SecondaryIndex.t(), jobs: AntikytheraCore.AsyncJob.Queue.JobsMap.t() }
Functions
@spec abandoned_jobs(t()) :: Croma.TypeGen.ListOf.AntikytheraCore.AsyncJob.Queue.IdJobPair.t()
Type-aware getter for abandoned_jobs.
@spec abandoned_jobs( t(), Croma.TypeGen.ListOf.AntikytheraCore.AsyncJob.Queue.IdJobPair.t() ) :: t()
Type-aware setter for abandoned_jobs.
@spec add_job( atom(), Antikythera.AsyncJob.Id.t(), AntikytheraCore.AsyncJob.t(), pos_integer(), pos_integer() ) :: :ok | {:error, :full | :existing_id | {:rate_limit_reached, pos_integer()}}
@spec brokers_to_notify(t()) :: Croma.TypeGen.ListOf.Croma.Pid.t()
Type-aware getter for brokers_to_notify.
Type-aware setter for brokers_to_notify.
@spec brokers_waiting(t()) :: Croma.TypeGen.ListOf.Croma.Pid.t()
Type-aware getter for brokers_waiting.
Type-aware setter for brokers_waiting.
@spec cancel(atom(), Antikythera.AsyncJob.Id.t()) :: :ok | {:error, :not_found | {:rate_limit_reached, pos_integer()}}
@spec fetch_job(atom()) :: nil | {AntikytheraCore.AsyncJob.Queue.JobKey.t(), AntikytheraCore.AsyncJob.t()}
@spec index_runnable(t()) :: AntikytheraCore.AsyncJob.Queue.SecondaryIndex.t()
Type-aware getter for index_runnable.
@spec index_runnable(t(), AntikytheraCore.AsyncJob.Queue.SecondaryIndex.t()) :: t()
Type-aware setter for index_runnable.
@spec index_running(t()) :: AntikytheraCore.AsyncJob.Queue.SecondaryIndex.t()
Type-aware getter for index_running.
@spec index_running(t(), AntikytheraCore.AsyncJob.Queue.SecondaryIndex.t()) :: t()
Type-aware setter for index_running.
@spec index_waiting(t()) :: AntikytheraCore.AsyncJob.Queue.SecondaryIndex.t()
Type-aware getter for index_waiting.
@spec index_waiting(t(), AntikytheraCore.AsyncJob.Queue.SecondaryIndex.t()) :: t()
Type-aware setter for index_waiting.
@spec jobs(t()) :: AntikytheraCore.AsyncJob.Queue.JobsMap.t()
Type-aware getter for jobs.
@spec jobs(t(), AntikytheraCore.AsyncJob.Queue.JobsMap.t()) :: t()
Type-aware setter for jobs.
@spec list(atom()) :: [ {Antikythera.Time.t(), Antikythera.AsyncJob.Id.t(), Antikythera.AsyncJob.StateLabel.t()} ]
make_rv_config(opts \\ [leader_hook_module: AntikytheraCore.AsyncJob.Queue.Hook, heartbeat_timeout: 1000, election_timeout: 5000, election_timeout_clock_drift_margin: 500])
View Source@spec make_rv_config(Keyword.t()) :: RaftedValue.Config.t()
@spec new(term()) :: Croma.Result.t(t())
Creates a new instance of AntikytheraCore.AsyncJob.Queue by using the given dict
.
Returns {:ok, valid_struct}
or {:error, reason}
.
The values in the dict
are validated by each field's valid?/1
function.
If the value was invalid, it will be passed to new/1
of the field
For missing fields, followings will be tried:
default/0
of each field typenew/1
of each field type, with empty map as input
A variant of new/1
which returns t
or raise if validation fails.
In other words, new/1
followed by Croma.Result.get!/1
.
@spec remove_broker_from_waiting_list(atom()) :: :ok
@spec remove_locked_job(atom(), AntikytheraCore.AsyncJob.Queue.JobKey.t()) :: :ok
@spec status(atom(), Antikythera.AsyncJob.Id.t()) :: Croma.Result.t(Antikythera.AsyncJob.Status.t())
@spec unlock_job_for_retry(atom(), AntikytheraCore.AsyncJob.Queue.JobKey.t()) :: :ok
@spec update(t(), Dict.t()) :: Croma.Result.t(t())
Updates an existing instance of AntikytheraCore.AsyncJob.Queue 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.