-vsn(1).
-export([
- start_link/0,
+ start_link/1,
get_connection/0,
open_channel/0
]).
handle_call/3
]).
+-define(RESTART, timer:seconds(30)).
+
-include_lib("amqp_client/include/amqp_client.hrl").
% Public-facing
-start_link() ->
- gen_server:start_link({local, ?MODULE}, ?MODULE, none, []).
+start_link(RatelimitTableId) ->
+ gen_server:start_link({local, ?MODULE}, ?MODULE, {RatelimitTableId}, []).
get_connection() ->
gen_server:call(?MODULE, get_connection).
amqp_connection:open_channel(Connection).
% Callbacks
-init(_Args) ->
+init({RatelimitTableId}) ->
+ rate_limit:wait_and_reset(RatelimitTableId, amqp_connection, ?RESTART),
start_link_connection().
handle_call(get_connection, _From, Connection) ->
supervisor:start_link({local, ?MODULE}, ?MODULE, []).
init(_) ->
+ TableId = rate_limit:create(),
Children = [
{amqp_bot_connection, % Id
- {amqp_bot_connection, start_link, []}, % MFA
+ {amqp_bot_connection, start_link, [TableId]}, % MFA
permanent,
5,
worker,