elib/asset_pool.erl in ernie-1.3.0 vs elib/asset_pool.erl in ernie-2.0.0

- old
+ new

@@ -1,10 +1,10 @@ -module(asset_pool). -behaviour(gen_server). %% api --export([start_link/1, start/1, lease/0, return/1, reload_assets/0, idle_worker_count/0]). +-export([start_link/2, lease/1, return/2, reload_assets/1, idle_worker_count/1]). %% gen_server callbacks -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). @@ -14,28 +14,25 @@ %%==================================================================== %% API %%==================================================================== -start_link(Args) -> - gen_server:start_link({global, ?MODULE}, ?MODULE, Args, []). +start_link(Handler, Count) -> + gen_server:start_link(?MODULE, [Handler, Count], []). -start(Args) -> - gen_server:start({global, ?MODULE}, ?MODULE, Args, []). +lease(Pid) -> + gen_server:call(Pid, lease). -lease() -> - gen_server:call({global, ?MODULE}, {lease}). +return(Pid, Asset) -> + gen_server:call(Pid, {return, Asset}). -return(Asset) -> - gen_server:call({global, ?MODULE}, {return, Asset}). +reload_assets(Pid) -> + gen_server:call(Pid, reload_assets). -reload_assets() -> - gen_server:call({global, ?MODULE}, {reload_assets}). +idle_worker_count(Pid) -> + gen_server:call(Pid, idle_worker_count). -idle_worker_count() -> - gen_server:call({global, ?MODULE}, {idle_worker_count}). - %%==================================================================== %% gen_server callbacks %%==================================================================== %%-------------------------------------------------------------------- @@ -43,15 +40,16 @@ %% {ok, State, Timeout} | %% ignore | %% {stop, Reason} %% Description: Initiates the server %%-------------------------------------------------------------------- -init([Count, Handler]) -> +init([Handler, Count]) -> process_flag(trap_exit, true), error_logger:info_msg("~p starting~n", [?MODULE]), Token = make_ref(), Assets = start_handlers(Count, Handler, Token), + logger:debug("Assets = ~p~n", [Assets]), {ok, #state{assets = Assets, handler = Handler, token = Token}}. %%-------------------------------------------------------------------- %% Function: %% handle_call(Request, From, State) -> {reply, Reply, State} | %% {reply, Reply, State, Timeout} | @@ -59,11 +57,12 @@ %% {noreply, State, Timeout} | %% {stop, Reason, Reply, State} | %% {stop, Reason, State} %% Description: Handling call messages %%-------------------------------------------------------------------- -handle_call({lease}, _From, State) -> +handle_call(lease, _From, State) -> + logger:debug("Leasing...~n", []), Token = State#state.token, case queue:out(State#state.assets) of {{value, Asset}, Assets2} -> {asset, Port, AssetToken} = Asset, case AssetToken =:= Token of @@ -89,14 +88,14 @@ true -> NewAsset = Asset end, Assets2 = queue:in(NewAsset, State#state.assets), {reply, ok, State#state{assets = Assets2}}; -handle_call({reload_assets}, _From, State) -> +handle_call(reload_assets, _From, State) -> Token = make_ref(), {reply, ok, State#state{token = Token}}; -handle_call({idle_worker_count}, _From, State) -> +handle_call(idle_worker_count, _From, State) -> WorkerCount = queue:len(State#state.assets), {reply, WorkerCount, State}; handle_call(_Request, _From, State) -> {reply, ok, State}. @@ -138,6 +137,6 @@ Asset = create_asset(Handler, Token), Assets2 = queue:in(Asset, Assets), start_handlers(Assets2, Count - 1, Handler, Token). create_asset(Handler, Token) -> - {asset, port_wrapper:wrap_link("ruby " ++ Handler), Token}. + {asset, port_wrapper:wrap_link(Handler), Token}. \ No newline at end of file