api-v2/deps/hackney/src/hackney_sup.erl
2025-04-16 10:03:13 -03:00

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}}.