# Copyright(c) 2015-2023 ACCESS CO., LTD. All rights reserved.
defmodule Antikythera.SecondsSinceEpoch do
use Croma.SubtypeOfInt, min: 0
end
defmodule Antikythera.MilliSecondsSinceEpoch do
use Croma.SubtypeOfInt, min: 0
end
defmodule Antikythera.MilliSecondsInGregorian do
@time_epoch_offset_milliseconds :calendar.datetime_to_gregorian_seconds(
{{1970, 1, 1}, {0, 0, 0}}
) * 1000
def time_epoch_offset_milliseconds(), do: @time_epoch_offset_milliseconds
# This restriction is temporarily expanded for backward compatibility.
# `- 999` will be removed in the future.
use Croma.SubtypeOfInt, min: -@time_epoch_offset_milliseconds - 999
end
defmodule Antikythera.GearActionTimeout do
alias Antikythera.Env
@max_timeout Application.compile_env!(:antikythera, :gear_action_max_timeout)
@default_timeout min(Env.gear_action_timeout(), @max_timeout)
@moduledoc """
Type of timeout for gear actions in milliseconds.
A value must be a positive integer less than or equal to `#{@max_timeout}`.
The maximum value can be configured by `:gear_action_max_timeout` config.
The default value is determined by `Antikythera.Env.gear_action_timeout/0`,
or the maximum value if it exceeds the maximum value.
"""
use Croma.SubtypeOfInt, min: 1, max: @max_timeout, default: @default_timeout
end