Packages
event_bus
1.5.2
1.7.0
1.6.2
1.6.1
1.6.0
retired
1.5.2
retired
1.5.1
retired
1.5.0
retired
1.4.4
retired
1.4.3
retired
1.4.2
retired
1.4.1
retired
1.4.0
retired
1.3.8
retired
1.3.7
retired
1.3.6
retired
1.3.5
retired
1.3.4
retired
1.3.3
retired
1.3.2
retired
1.3.1
retired
1.3.0
retired
1.2.0
retired
1.1.3
retired
1.1.2
retired
1.1.1
retired
1.1.0
retired
1.0.0
retired
1.0.0-beta4
retired
1.0.0-beta3
retired
1.0.0-beta2
retired
1.0.0-beta1
retired
0.9.0
retired
0.8.0
retired
0.7.0
retired
0.6.1
retired
0.6.0
retired
0.5.0
retired
0.4.1
retired
0.4.0
retired
0.3.1
retired
0.3.0
retired
0.2.1
retired
0.2.0
retired
0.1.0
retired
Traceable, extendable and minimalist event bus implementation for Elixir with built-in event store and event watcher based on ETS
Retired package: Deprecated - Please prefer event_bus library >= 1.6.0 version for bug fixes
Current section
Files
Jump to
Current section
Files
lib/event_bus/utils/monotonic_time.ex
defmodule EventBus.Util.MonotonicTime do
@moduledoc false
@eb_app :event_bus
@eb_time_unit Application.get_env(@eb_app, :time_unit, :microsecond)
@doc """
Calculates monotonically increasing current time
"""
@spec now() :: integer()
def now do
init_time() + monotonic_time()
end
defp init_time do
case Application.get_env(@eb_app, :init_time) do
nil ->
time = os_time() - monotonic_time()
save_init_time(time)
time ->
time
end
end
defp save_init_time(time) do
Application.put_env(:event_bus, :init_time, time, persistent: true)
time
end
defp os_time do
System.os_time(@eb_time_unit)
end
defp monotonic_time do
System.monotonic_time(@eb_time_unit)
end
end