Sonyflake (sonyflake_ex v0.1.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.

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: number()
}) :: 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: number(),
  msb: 0,
  sequence: 255,
  start_time: integer()
}

Create an instance of Sonyflake unique ID generator.

Link to this function

next_id(sonyflake)

Specs

next_id(%Sonyflake{
  elapsed_time: integer(),
  machine_id: integer(),
  msb: any(),
  sequence: integer(),
  start_time: number()
}) ::
  {:ok,
   %Sonyflake{
     elapsed_time: integer(),
     machine_id: integer(),
     msb: any(),
     sequence: integer(),
     start_time: number()
   }, integer()}

Generates and returns the next unique ID.

Raises a TimeoutError after the SonyFlake time overflows.

Link to this function

to_sonyflake_time(datetime)