Sonyflake (sonyflake_ex v1.0.0)

Documentation for Sonyflake.

Link to this section Summary

Functions

Get time elapsed since the SonyFlake ID generator was initialised.

Decompose a generated sonyflake id back to its components.

Create an instance of Sonyflake unique ID generator.

Create an instance of Sonyflake unique ID generator, using a predetermined setting.

Generates and returns the next unique ID.

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.

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.

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.

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.