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 + -
显示快捷键?