diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plop_compat.erl | 27 | ||||
-rw-r--r-- | src/statusreport.erl | 8 |
2 files changed, 29 insertions, 6 deletions
diff --git a/src/plop_compat.erl b/src/plop_compat.erl index 9a98e3d..4d45590 100644 --- a/src/plop_compat.erl +++ b/src/plop_compat.erl @@ -2,14 +2,17 @@ %%% See LICENSE for licensing information. -module(plop_compat). --export([unpack_spki/1, timestamp/0]). +-export([unpack_spki/1, timestamp/0, monotonic_time/1, start_timer/4]). -include_lib("public_key/include/public_key.hrl"). unpack_spki(SPKI) -> unpack_spki(erlang:system_info(otp_release), SPKI). timestamp() -> timestamp(erlang:system_info(otp_release)). - +monotonic_time(Unit) -> + monotonic_time(erlang:system_info(otp_release), Unit). +start_timer(Time, Dest, Msg, Options) -> + start_timer(erlang:system_info(otp_release), Time, Dest, Msg, Options). unpack_spki("R16" ++ _, SPKI) -> #'SubjectPublicKeyInfo'{subjectPublicKey = {_, Octets}, @@ -37,3 +40,23 @@ timestamp("18") -> erlang:timestamp(); timestamp("19") -> erlang:timestamp(). + +monotonic_time("R16" ++ _, millisecond) -> + {MeS, S, MiS} = timestamp(), + MeS * 1000000 + S * 1000 + MiS; +monotonic_time("17", millisecond) -> + {MeS, S, MiS} = timestamp(), + MeS * 1000000 + S * 1000 + MiS; +monotonic_time("18", Unit) -> + erlang:monotonic_time(Unit); +monotonic_time("19", Unit) -> + erlang:monotonic_time(Unit). + +start_timer("R16" ++ _, Time, Dest, Msg, [{abs, true}]) -> + erlang:start_timer(max(0, Time - monotonic_time(millisecond)), Dest, Msg); +start_timer("17", Time, Dest, Msg, [{abs, true}]) -> + erlang:start_timer(max(0, Time - monotonic_time(millisecond)), Dest, Msg); +start_timer("18", Time, Dest, Msg, Options) -> + erlang:start_timer(Time, Dest, Msg, Options); +start_timer("19", Time, Dest, Msg, Options) -> + erlang:start_timer(Time, Dest, Msg, Options). diff --git a/src/statusreport.erl b/src/statusreport.erl index f0b7503..a9fef7f 100644 --- a/src/statusreport.erl +++ b/src/statusreport.erl @@ -29,7 +29,7 @@ init([]) -> {ok, #state{timer = none, nodename = http_auth:own_name(), statusreports = dict:new(), - lastsent = erlang:monotonic_time(millisecond) - ReportInterval}}. + lastsent = plop_compat:monotonic_time(millisecond) - ReportInterval}}. store_status(State, Service, Target, Variable, Status) -> Statusreports = dict:store({Service, Target, Variable}, @@ -101,7 +101,7 @@ set_timer(State) -> case State#state.timer of none -> ReportInterval = application:get_env(plop, status_report_interval, 1000), - Timer = erlang:start_timer(State#state.lastsent + ReportInterval, self(), force_send, [{abs, true}]), + Timer = plop_compat:start_timer(State#state.lastsent + ReportInterval, self(), force_send, [{abs, true}]), State#state{timer = Timer}; _ -> State @@ -174,12 +174,12 @@ force_send(State) -> send(Service, Statusreports, State#state.nodename) end, group_by_service(State#state.statusreports)), NewState = cancel_timer(State), - NewState#state{statusreports = dict:new(), lastsent = erlang:monotonic_time(millisecond)}. + NewState#state{statusreports = dict:new(), lastsent = plop_compat:monotonic_time(millisecond)}. try_send(State) -> ReportInterval = application:get_env(plop, status_report_interval, 1000), NextSend = State#state.lastsent + ReportInterval, - Now = erlang:monotonic_time(millisecond), + Now = plop_compat:monotonic_time(millisecond), if NextSend > Now -> lager:debug("status report sent ~p ms ago, setting timer", [NextSend - Now]), |