src/whitecap.erl

-module(whitecap).
-include("whitecap.hrl").

-export([
    start_listeners/1,
    start_listeners/2
]).

-define(DEFAULT_LISTENERS, 4).

%% public
-spec start_listeners(map()) ->
    ok | {error, term()}.

start_listeners(Opts) ->
    start_listeners(Opts, ?DEFAULT_LISTENERS).

-spec start_listeners(map(), non_neg_integer()) ->
    ok | {error, term()}.

start_listeners(_Opts, 0) ->
    ok;
start_listeners(Opts, N) ->
    case supervisor:start_child(whitecap_sup, ?CHILD(name(N), Opts, whitecap_acceptor)) of
        {ok, _Pid} ->
            start_listeners(Opts, N - 1);
        {error, _} = Error ->
            Error
    end.

%% private
name(N) ->
    list_to_atom("whitecap_listener_" ++ integer_to_list(N)).