refactor(gw): remove needless modules
This commit is contained in:
parent
21796314f3
commit
18eaadae08
|
@ -1,65 +0,0 @@
|
|||
%%--------------------------------------------------------------------
|
||||
%% Copyright (c) 2020-2021 EMQ Technologies Co., Ltd. All Rights Reserved.
|
||||
%%
|
||||
%% Licensed under the Apache License, Version 2.0 (the "License");
|
||||
%% you may not use this file except in compliance with the License.
|
||||
%% You may obtain a copy of the License at
|
||||
%%
|
||||
%% http://www.apache.org/licenses/LICENSE-2.0
|
||||
%%
|
||||
%% Unless required by applicable law or agreed to in writing, software
|
||||
%% distributed under the License is distributed on an "AS IS" BASIS,
|
||||
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
%% See the License for the specific language governing permissions and
|
||||
%% limitations under the License.
|
||||
%%--------------------------------------------------------------------
|
||||
|
||||
-module(emqx_sn_asleep_timer).
|
||||
|
||||
-export([ init/0
|
||||
, ensure/2
|
||||
, cancel/1
|
||||
]).
|
||||
|
||||
-record(asleep_state, {
|
||||
%% Time internal (seconds)
|
||||
duration :: integer(),
|
||||
%% Timer reference
|
||||
tref :: reference() | undefined
|
||||
}).
|
||||
|
||||
-type(asleep_state() :: #asleep_state{}).
|
||||
|
||||
-export_type([asleep_state/0]).
|
||||
|
||||
%%--------------------------------------------------------------------
|
||||
%% APIs
|
||||
%%--------------------------------------------------------------------
|
||||
|
||||
-spec(init() -> asleep_state()).
|
||||
init() ->
|
||||
#asleep_state{duration = 0}.
|
||||
|
||||
-spec(ensure(undefined | integer(), asleep_state()) -> asleep_state()).
|
||||
ensure(undefined, State = #asleep_state{duration = Duration}) ->
|
||||
ensure(Duration, State);
|
||||
ensure(Duration, State) ->
|
||||
cancel(State),
|
||||
State#asleep_state{duration = Duration, tref = start(Duration)}.
|
||||
|
||||
%%--------------------------------------------------------------------
|
||||
%% Internal funcs
|
||||
%%--------------------------------------------------------------------
|
||||
|
||||
-compile({inline, [start/1, cancel/1]}).
|
||||
|
||||
start(Duration) ->
|
||||
erlang:send_after(timer:seconds(Duration), self(), asleep_timeout).
|
||||
|
||||
cancel(#asleep_state{tref = Timer}) when is_reference(Timer) ->
|
||||
case erlang:cancel_timer(Timer) of
|
||||
false ->
|
||||
receive {timeout, Timer, _} -> ok after 0 -> ok end;
|
||||
_ -> ok
|
||||
end;
|
||||
cancel(_) -> ok.
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue