defmodule Roger do @moduledoc """ The OTP partition's entrypoint and top-level supervisor """ use Application require Logger def start(_, _) do if Application.get_env(:roger, :start_on_application, true) do start_link() else Supervisor.start_link([], strategy: :one_for_one) end end def child_spec(opts) do %{ id: __MODULE__, start: {__MODULE__, :start_link, [opts]}, type: :supervisor, restart: :permanent, shutdown: 500 } end def start_link(_opts \\ []) do import Supervisor.Spec, warn: false children = [ Roger.System, Roger.ApplySystem, Roger.PartitionSupervisor, Roger.Partition, Roger.ShutdownHandler.child_spec([]) ] opts = [strategy: :one_for_one, name: Roger.Supervisor] Supervisor.start_link(children, opts) end @doc """ Returns the current time in milliseconds. """ def now() do :os.system_time(1000) end end