54 lines
1.4 KiB
Erlang
54 lines
1.4 KiB
Erlang
%%% -*- erlang -*-
|
|
%%%
|
|
%%% This file is part of hackney released under the Apache 2 license.
|
|
%%% See the NOTICE for more information.
|
|
%%%
|
|
|
|
-module(hackney_sup).
|
|
|
|
-behaviour(supervisor).
|
|
|
|
%% API
|
|
-export([start_link/0]).
|
|
|
|
%% Supervisor callbacks
|
|
-export([init/1]).
|
|
|
|
-include("hackney.hrl").
|
|
|
|
%% Helper macro for declaring children of supervisor
|
|
-define(CHILD(I, Type), {I, {I, start_link, []}, permanent, 5000, Type, [I]}).
|
|
|
|
%% ===================================================================
|
|
%% API functions
|
|
%% ===================================================================
|
|
|
|
start_link() ->
|
|
{ok, Pid} = supervisor:start_link({local, ?MODULE}, ?MODULE, []),
|
|
%% start the pool handler
|
|
PoolHandler = hackney_app:get_app_env(pool_handler, hackney_pool),
|
|
ok = PoolHandler:start(),
|
|
%% finish to start the application
|
|
{ok, Pid}.
|
|
|
|
%% ===================================================================
|
|
%% Supervisor callbacks
|
|
%% ===================================================================
|
|
|
|
init([]) ->
|
|
%% initialize the config table
|
|
_ = ets:new(?CONFIG, [set, named_table, public]),
|
|
|
|
%% initialize the metric engine
|
|
hackney_metrics:init(),
|
|
|
|
Specs = [
|
|
%% manager
|
|
?CHILD(hackney_manager, worker),
|
|
%% connections manager
|
|
?CHILD(hackney_connections, worker)
|
|
],
|
|
|
|
{ok, { {one_for_one, 10000, 1}, Specs}}.
|
|
|