Page MenuHomePhorge

worker.ex
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

worker.ex

# FlakeId: Decentralized, k-ordered ID generation service
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: LGPL-3.0-only
defmodule FlakeId.Worker do
@moduledoc false
use GenServer
require Logger
alias FlakeId.Builder
def start_link(options \\ []) do
name = Keyword.get(options, :name, __MODULE__)
GenServer.start_link(__MODULE__, [options], name: name)
end
@spec get(atom()) :: {:ok, String.t()} | FlakeId.error()
def get(name), do: GenServer.call(name, :get)
@impl true
@spec init([]) :: {:ok, Builder.t()} | {:stop, :clock_is_backwards}
def init([options]) do
state = Builder.new(options)
if Builder.backwards?(state) do
Logger.error("#{__MODULE__} Current time is backwards, not starting")
{:stop, :clock_is_backwards}
else
{:ok, Builder.new()}
end
end
@impl true
def handle_call(:get, _from, state) do
case Builder.get(state) do
{:ok, flake, new_state} ->
{:reply, {:ok, flake}, new_state}
error ->
{:reply, error, state}
end
end
end

File Metadata

Mime Type
text/x-ruby
Expires
Tue, Jan 20, 9:40 AM (1 d, 15 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
972880
Default Alt Text
worker.ex (1 KB)

Event Timeline