Packages

A clock abstraction, with time travel.

Current section

Files

Jump to
bigben src bigben@clock.erl
Raw

src/bigben@clock.erl

-module(bigben@clock).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new/0, now/1, from_fake/1]).
-export_type([clock/0]).
-opaque clock() :: {clock, fun(() -> birl:time())}.
-spec new() -> clock().
new() ->
{clock, fun birl:utc_now/0}.
-spec now(clock()) -> birl:time().
now(Clock) ->
(erlang:element(2, Clock))().
-spec from_fake(bigben@fake_clock:fake_clock()) -> clock().
from_fake(Clock) ->
{clock, fun() -> bigben@fake_clock:now(Clock) end}.