tftp_sup.erl
来自「OTP是开放电信平台的简称」· ERL 代码 · 共 82 行
ERL
82 行
%% ``The contents of this file are subject to the Erlang Public License,%% Version 1.1, (the "License"); you may not use this file except in%% compliance with the License. You should have received a copy of the%% Erlang Public License along with this software. If not, it can be%% retrieved via the world wide web at http://www.erlang.org/.%% %% Software distributed under the License is distributed on an "AS IS"%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See%% the License for the specific language governing rights and limitations%% under the License.%% %% The Initial Developer of the Original Code is Ericsson Utvecklings AB.%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings%% AB. All Rights Reserved.''%% %% $Id$%%%%----------------------------------------------------------------------%% Purpose: The top supervisor for tftp hangs under inets_sup.%%-----------------------------------------------------------------------module(tftp_sup).-behaviour(supervisor).%% API-export([start_link/1]).-export([start_child/1]).%% Supervisor callback-export([init/1]).%%%=========================================================================%%% API%%%=========================================================================start_link(TftpServices) -> supervisor:start_link({local, ?MODULE}, ?MODULE, [TftpServices]).start_child(Args) -> supervisor:start_child(?MODULE, Args). %%%=========================================================================%%% Supervisor callback%%%=========================================================================init([Services]) when is_list(Services) -> RestartStrategy = one_for_one, MaxR = 10, MaxT = 3600, KillAfter = timer:seconds(3), Children = [worker_spec(KillAfter, Options) || {tftpd, Options} <- Services], {ok, {{RestartStrategy, MaxR, MaxT}, Children}}.%%%=========================================================================%%% Internal functions%%%=========================================================================worker_spec(KillAfter, Options) -> Modules = [proc_lib, tftp, tftp_engine], KA = supervisor_timeout(KillAfter), Name = unique_name(Options), {Name, {tftp, start, [Options]}, permanent, KA, worker, Modules}.unique_name(Options) -> case lists:keysearch(port, 1, Options) of {value, {_, Port}} when is_integer(Port), Port > 0 -> {tftpd, Port}; _ -> {tftpd, erlang:now()} end.%% supervisor_spec(Name) ->%% {Name, {Name, start, []}, permanent, infinity, supervisor,%% [Name, supervisor]}. -ifdef(debug_shutdown).supervisor_timeout(_KillAfter) -> timer:hours(24).-else.supervisor_timeout(KillAfter) -> KillAfter.-endif.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?