Skip to content
Permalink
Browse files
Update state on config changes
  • Loading branch information
kxepal committed Oct 13, 2014
1 parent c7f9ad1 commit 40d157f39c0fa0d80db9ccf61b770b72103ddbed
Showing 1 changed file with 17 additions and 1 deletion.
@@ -12,10 +12,14 @@

-module(ioq).
-behaviour(gen_server).
-behaviour(config_listener).

-export([start_link/0, call/3]).
-export([init/1, handle_call/3, handle_cast/2, handle_info/2, code_change/3, terminate/2]).

% config_listener api
-export([handle_config_change/5]).

-record(state, {
concurrency=10,
ratio,
@@ -45,12 +49,19 @@ call(Fd, Msg, Priority) ->
end.

init(_) ->
ok = config:listen_for_changes(?MODULE, nil),
State = #state{},
{ok, read_config(State)}.

read_config(State) ->
Ratio = list_to_float(config:get("ioq", "ratio", "0.01")),
{ok, #state{ratio=Ratio}}.
State#state{ratio=Ratio}.

handle_call(#request{}=Request, From, State) ->
{noreply, enqueue_request(Request#request{from=From}, State), 0}.

handle_cast(change, State) ->
{noreply, read_config(State)};
handle_cast(_Msg, State) ->
{noreply, State}.

@@ -76,6 +87,11 @@ handle_info({'DOWN', Ref, _, _, Reason}, State) ->
handle_info(timeout, State) ->
{noreply, maybe_submit_request(State)}.

handle_config_change("ioq", _, _, _, _) ->
{ok, gen_server:cast(?MODULE, change)};
handle_config_change(_, _, _, _, _) ->
{ok, nil}.

code_change(_Vsn, State, _Extra) ->
{ok, State}.

0 comments on commit 40d157f

Please sign in to comment.