Current section

Files

Jump to
pgo src pgo_pool_sup.erl
Raw

src/pgo_pool_sup.erl

-module(pgo_pool_sup).
-behaviour(supervisor).
-export([start_link/3,
whereis_child/2]).
-export([init/1]).
-define(SERVER, ?MODULE).
start_link(QueueTid, Pool, PoolConfig) ->
supervisor:start_link(?MODULE, [QueueTid, self(), Pool, PoolConfig]).
whereis_child(Sup, Id) ->
Children = supervisor:which_children(Sup),
{_, Pid, _, _} = lists:keyfind(Id, 1, Children),
Pid.
init([QueueTid, PoolPid, PoolName, PoolConfig]) ->
Size = maps:get(pool_size, PoolConfig, 1),
Children = [#{id => connection_sup,
start => {pgo_connection_sup, start_link, [QueueTid, PoolPid, PoolName,
PoolConfig]},
type => supervisor,
shutdown => 5000},
#{id => connection_starter,
start => {pgo_connection_starter, start_link, [PoolPid, Size]},
type => worker,
shutdown => 5000},
#{id => type_server,
start => {pgo_type_server, start_link, [PoolName, PoolConfig]},
type => worker,
shutdown => 5000}],
{ok, {{rest_for_one, 5, 10}, Children}}.