Current section
Files
Jump to
Current section
Files
src/buffalo_worker.erl
%% @author Arjan Scherpenisse <arjan@scherpenisse.net>
%% @copyright 2012-2022 Arjan Scherpenisse
%% @doc Buffalo worker, executes a buffered task
%% Copyright 2012-2022 Arjan Scherpenisse
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
-module(buffalo_worker).
-behaviour(gen_server).
%% ------------------------------------------------------------------
%% API Function Exports
%% ------------------------------------------------------------------
-export([start_link/1]).
%% ------------------------------------------------------------------
%% gen_server Function Exports
%% ------------------------------------------------------------------
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
-include_lib("kernel/include/logger.hrl").
%% ------------------------------------------------------------------
%% API Function Definitions
%% ------------------------------------------------------------------
start_link(Args) ->
gen_server:start_link(?MODULE, Args, []).
%% ------------------------------------------------------------------
%% gen_server Function Definitions
%% ------------------------------------------------------------------
init(MFA) ->
{ok, MFA, 0}.
handle_call(_Call, _From, State) ->
{reply, ok, State}.
handle_cast(_Msg, State) ->
{noreply, State}.
handle_info(timeout, {Module, Function, Args}) ->
case erlang:apply(Module, Function, Args) of
ok ->
ok;
{ok, _} ->
ok;
Other ->
?LOG_WARNING("[buffalo] call to ~p:~p returned ~p. Args were: ~p",
[Module, Function, Other, Args])
end,
{stop, normal, undefined};
handle_info(_Info, State) ->
{noreply, State}.
terminate(_Reason, _State) ->
ok.
code_change(_OldVsn, State, _Extra) ->
{ok, State}.
%% ------------------------------------------------------------------
%% Internal Function Definitions
%% ------------------------------------------------------------------