Current section
Files
Jump to
Current section
Files
src/grpcbox_pool.erl
-module(grpcbox_pool).
-behaviour(acceptor_pool).
-export([start_link/4,
accept_socket/3]).
-export([init/1]).
start_link(Name, ServerOpts, ChatterboxOpts, ListenOpts) ->
acceptor_pool:start_link({local, Name}, ?MODULE, [ServerOpts, ChatterboxOpts, ListenOpts]).
accept_socket(Pool, Socket, Acceptors) ->
acceptor_pool:accept_socket(Pool, Socket, Acceptors).
init([ServerOpts, ChatterboxOpts, ListenOpts]) ->
{Transport, SslOpts} = case ListenOpts of
#{ssl := true,
keyfile := KeyFile,
certfile := CertFile,
cacertfile := CACertFile} ->
{ssl, [{keyfile, KeyFile},
{certfile, CertFile},
{honor_cipher_order, false},
{cacertfile, CACertFile},
{fail_if_no_peer_cert, true},
{verify, verify_peer},
{versions, ['tlsv1.2']},
{next_protocols_advertised, [<<"h2">>]}]};
_ ->
{gen_tcp, []}
end,
Conn = #{id => grpcbox_acceptor,
start => {grpcbox_acceptor, {Transport, ServerOpts, ChatterboxOpts, SslOpts}, []},
grace => 5000},
{ok, {#{}, [Conn]}}.