29
29
-record (state , {timer_ref :: reference () | undefined ,
30
30
default_interval :: non_neg_integer (),
31
31
short_interval :: non_neg_integer (),
32
- target_group_size :: non_neg_integer () | undefined }).
32
+ target_group_size :: non_neg_integer () | undefined ,
33
+ enabled :: boolean ()}).
33
34
34
35
% %----------------------------------------------------------------------------
35
36
% % Start
@@ -63,7 +64,8 @@ init([]) ->
63
64
false ),
64
65
State = # state {default_interval = DefaultInterval ,
65
66
short_interval = ShortInterval ,
66
- target_group_size = TargetGroupSize },
67
+ target_group_size = TargetGroupSize ,
68
+ enabled = Enabled },
67
69
case Enabled of
68
70
true ->
69
71
Ref = erlang :send_after (DefaultInterval , self (), ? EVAL_MSG ),
@@ -75,7 +77,7 @@ init([]) ->
75
77
handle_call (_Request , _From , State ) ->
76
78
{reply , ok , State }.
77
79
78
- handle_cast (nodechange , # state {timer_ref = undefined } = State ) ->
80
+ handle_cast (nodechange , # state {enabled = false } = State ) ->
79
81
{noreply , State , hibernate };
80
82
handle_cast (nodechange , # state {timer_ref = OldRef ,
81
83
short_interval = Time } = State ) ->
@@ -97,6 +99,8 @@ handle_info(?EVAL_MSG, #state{default_interval = DefaultInterval,
97
99
end ,
98
100
Ref = erlang :send_after (NewTimeout , self (), ? EVAL_MSG ),
99
101
{noreply , State # state {timer_ref = Ref }};
102
+ handle_info (_Info , # state {enabled = false } = State ) ->
103
+ {noreply , State , hibernate };
100
104
handle_info (_Info , State ) ->
101
105
{noreply , State }.
102
106
0 commit comments