/lib/runtime_tools/src/ttb_autostart.erl
https://github.com/blackberry/Erlang-OTP · Erlang · 55 lines · 33 code · 10 blank · 12 comment · 0 complexity · 4aa5f372cfcd1a2c01366730a67b18e3 MD5 · raw file
- %%%-------------------------------------------------------------------
- %%% File : ttb_autostart.erl
- %%% Author : Bartłomiej Puzoń <bartlomiej.puzon@erlang-solutions.com>
- %%% Description : This supervisor is used to resume ttb tracing
- %%% Users are able to provide custom restart modules for *_config, as
- %%% file:write/read/delete may not be possible on diskless nodes.
- %%%
- %%% Created : 31 Jul 2010 by <bartlomiej.puzon@erlang-solutions.com>
- %%%-------------------------------------------------------------------
- -module(ttb_autostart).
- -behaviour(gen_server).
- %% API
- -export([start_link/0,
- read_config/0,
- write_config/1,
- delete_config/0]).
- %% gen_server callbacks
- -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
- terminate/2, code_change/3]).
- -define(DEF_AUTOSTART_MODULE, ?MODULE).
- -define(AUTOSTART_FILENAME, "ttb_autostart.bin").
- start_link() ->
- gen_server:start_link(?MODULE, no_args, []).
- delete_config() ->
- file:delete(?AUTOSTART_FILENAME).
- read_config() ->
- case file:read_file(?AUTOSTART_FILENAME) of
- {ok, Data} -> {ok, binary_to_term(Data)};
- Error -> Error
- end.
- write_config(Data) ->
- file:write_file(?AUTOSTART_FILENAME, term_to_binary(Data)).
- init(no_args) ->
- case application:get_env(runtime_tools, ttb_autostart_module) of
- {ok, _} -> ok;
- undefined -> application:set_env(runtime_tools, ttb_autostart_module, ?DEF_AUTOSTART_MODULE)
- end,
- observer_backend:ttb_resume_trace(),
- %%As the process is not needed any more, it will shut itself down
- {ok, no_args, 10000}.
- handle_call(_,_,_) -> {noreply, no_args}.
- handle_cast(_,_) -> {noreply, no_args}.
- handle_info(timeout,_) -> {stop, normal, no_args}.
- terminate(_,_) -> ok.
- code_change(_,_,_) -> {ok, no_args}.