Sonyflake (sonyflake_ex v1.0.0)
Documentation for Sonyflake.
Link to this section Summary
Link to this section Functions
Link to this function
current_elapsed_time(sonyflake)
Specs
current_elapsed_time(%Sonyflake{
elapsed_time: term(),
machine_id: term(),
msb: term(),
sequence: term(),
start_time: non_neg_integer()
}) :: non_neg_integer()
Get time elapsed since the SonyFlake ID generator was initialised.
Link to this function
decompose(id)
Specs
decompose(non_neg_integer()) :: [ {:id, non_neg_integer()} | {:machine_id, non_neg_integer()} | {:msb, non_neg_integer()} | {:sequence, non_neg_integer()} | {:time, non_neg_integer()}, ... ]
Decompose a generated sonyflake id back to its components.
Link to this function
new()
Specs
new() :: %Sonyflake{
elapsed_time: 0,
machine_id: non_neg_integer(),
msb: 0,
sequence: 255,
start_time: non_neg_integer()
}
Create an instance of Sonyflake unique ID generator.
Link to this function
new(setting)
Specs
new(%Sonyflake.Setting{
machine_id: non_neg_integer(),
start_time: non_neg_integer()
}) ::
nil
| %Sonyflake{
elapsed_time: 0,
machine_id: non_neg_integer(),
msb: 0,
sequence: 255,
start_time: non_neg_integer()
}
Create an instance of Sonyflake unique ID generator, using a predetermined
setting.
Link to this function
next_id(sonyflake)
Specs
next_id(%Sonyflake{
elapsed_time: non_neg_integer(),
machine_id: non_neg_integer(),
msb: non_neg_integer(),
sequence: non_neg_integer(),
start_time: non_neg_integer()
}) ::
{:ok,
%Sonyflake{
elapsed_time: non_neg_integer(),
machine_id: non_neg_integer(),
msb: non_neg_integer(),
sequence: non_neg_integer(),
start_time: non_neg_integer()
}, non_neg_integer()}
Generates and returns the next unique ID.
Raises a TimeoutError after the SonyFlake time overflows.