Current section

Files

Jump to
dogstatsde src dogstatsd_sup.erl
Raw

src/dogstatsd_sup.erl

-module(dogstatsd_sup).
-behavior(supervisor).
-export([init/1]).
-export([start_link/0]).
start_link() ->
supervisor:start_link({local, ?MODULE}, ?MODULE, []).
init(_Args) ->
Children = [
#{
id => dogstatsd_worker_pool,
start => {wpool, start_pool, [dogstatsd_worker, [{worker, {dogstatsd_worker, []}}, {workers, 10}]]},
restart => permanent,
shutdown => infinity,
type => supervisor,
modules => [dogstatsd_worker]
} |
case stillir:get_config(dogstatsd, vm_stats) of
true ->
[#{
id => dogstatsd_vm_stats,
start => {dogstatsd_vm_stats, start_link, []},
restart => permanent,
shutdown => brutal_kill
}];
false ->
[]
end
],
SupFlags = #{
strategy => one_for_one,
intensity => 5,
period => 60
},
new_to_old({ok, {SupFlags, Children}}).
new_to_old({ok, {SupFlags, Children}}) ->
{ok, {new_to_old_supflags(SupFlags), new_to_old_children(Children)}}.
new_to_old_supflags(#{strategy := S, intensity := I, period := P}) ->
{S, I, P}.
new_to_old_children(Children) ->
lists:map(fun (Child = #{id := Id, start := Start, restart := Restart, shutdown := Shutdown}) ->
Type = maps:get(type, Child, worker),
{StartModule,_,_} = Start,
Modules = maps:get(modules, Child, [StartModule]),
{Id, Start, Restart, Shutdown, Type, Modules}
end,
Children).