From 0d3637d18fe83ddd7c09cae895a3c7660a44f0f1 Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Sat, 3 Mar 2018 18:05:12 +0300 Subject: [PATCH] Simplify ejabberd_sup code --- src/ejabberd_sup.erl | 192 +++++++++++-------------------------------- 1 file changed, 50 insertions(+), 142 deletions(-) diff --git a/src/ejabberd_sup.erl b/src/ejabberd_sup.erl index e829ea61d..f692575c1 100644 --- a/src/ejabberd_sup.erl +++ b/src/ejabberd_sup.erl @@ -30,150 +30,58 @@ -export([start_link/0, init/1]). +-define(SHUTDOWN_TIMEOUT, timer:seconds(30)). + start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []). init([]) -> - Hooks = - {ejabberd_hooks, - {ejabberd_hooks, start_link, []}, - permanent, - brutal_kill, - worker, - [ejabberd_hooks]}, - Cluster = {ejabberd_cluster, - {ejabberd_cluster, start_link, []}, - permanent, - 5000, - worker, - [ejabberd_cluster]}, - S2S = - {ejabberd_s2s, - {ejabberd_s2s, start_link, []}, - permanent, - brutal_kill, - worker, - [ejabberd_s2s]}, - Captcha = - {ejabberd_captcha, - {ejabberd_captcha, start_link, []}, - permanent, - brutal_kill, - worker, - [ejabberd_captcha]}, - Listener = - {ejabberd_listener, - {ejabberd_listener, start_link, []}, - permanent, - infinity, - supervisor, - [ejabberd_listener]}, - S2SInSupervisor = - {ejabberd_s2s_in_sup, - {ejabberd_tmp_sup, start_link, - [ejabberd_s2s_in_sup, ejabberd_s2s_in]}, - permanent, - infinity, - supervisor, - [ejabberd_tmp_sup]}, - S2SOutSupervisor = - {ejabberd_s2s_out_sup, - {ejabberd_tmp_sup, start_link, - [ejabberd_s2s_out_sup, ejabberd_s2s_out]}, - permanent, - infinity, - supervisor, - [ejabberd_tmp_sup]}, - ServiceSupervisor = - {ejabberd_service_sup, - {ejabberd_tmp_sup, start_link, - [ejabberd_service_sup, ejabberd_service]}, - permanent, - infinity, - supervisor, - [ejabberd_tmp_sup]}, - BackendSupervisor = {ejabberd_backend_sup, - {ejabberd_backend_sup, start_link, []}, - permanent, infinity, supervisor, - [ejabberd_backend_sup]}, - ACL = {acl, {acl, start_link, []}, - permanent, 5000, worker, [acl]}, - Shaper = {shaper, {shaper, start_link, []}, - permanent, 5000, worker, [shaper]}, - SQLSupervisor = {ejabberd_rdbms, - {ejabberd_rdbms, start_link, []}, - permanent, infinity, supervisor, [ejabberd_rdbms]}, - RiakSupervisor = {ejabberd_riak_sup, - {ejabberd_riak_sup, start_link, []}, - permanent, infinity, supervisor, [ejabberd_riak_sup]}, - RedisSupervisor = {ejabberd_redis_sup, - {ejabberd_redis_sup, start_link, []}, - permanent, infinity, supervisor, [ejabberd_redis_sup]}, - Router = {ejabberd_router, {ejabberd_router, start_link, []}, - permanent, 5000, worker, [ejabberd_router]}, - RouterMulticast = {ejabberd_router_multicast, - {ejabberd_router_multicast, start_link, []}, - permanent, 5000, worker, [ejabberd_router_multicast]}, - Local = {ejabberd_local, {ejabberd_local, start_link, []}, - permanent, 5000, worker, [ejabberd_local]}, - SM = {ejabberd_sm, {ejabberd_sm, start_link, []}, - permanent, 5000, worker, [ejabberd_sm]}, - GenModSupervisor = {ejabberd_gen_mod_sup, {gen_mod, start_link, []}, - permanent, infinity, supervisor, [gen_mod]}, - ExtMod = {ext_mod, {ext_mod, start_link, []}, - permanent, 5000, worker, [ext_mod]}, - Auth = {ejabberd_auth, {ejabberd_auth, start_link, []}, - permanent, 5000, worker, [ejabberd_auth]}, - OAuth = {ejabberd_oauth, {ejabberd_oauth, start_link, []}, - permanent, 5000, worker, [ejabberd_oauth]}, - Translation = {translate, {translate, start_link, []}, - permanent, 5000, worker, [translate]}, - AccessPerms = {ejabberd_access_permissions, - {ejabberd_access_permissions, start_link, []}, - permanent, 5000, worker, [ejabberd_access_permissions]}, - Ctl = {ejabberd_ctl, {ejabberd_ctl, start_link, []}, - permanent, 5000, worker, [ejabberd_ctl]}, - Commands = {ejabberd_commands, {ejabberd_commands, start_link, []}, - permanent, 5000, worker, [ejabberd_commands]}, - Admin = {ejabberd_admin, {ejabberd_admin, start_link, []}, - permanent, 5000, worker, [ejabberd_admin]}, - CyrSASL = {cyrsasl, {cyrsasl, start_link, []}, - permanent, 5000, worker, [cyrsasl]}, - PKIX = {ejabberd_pkix, {ejabberd_pkix, start_link, []}, - permanent, 5000, worker, [ejabberd_pkix]}, - ACME = {ejabberd_acme, {ejabberd_acme, start_link, []}, - permanent, 5000, worker, [ejabberd_acme]}, - IQ = {ejabberd_iq, {ejabberd_iq, start_link, []}, - permanent, 5000, worker, [ejabberd_iq]}, {ok, {{one_for_one, 10, 1}, - [Hooks, - Cluster, - CyrSASL, - Translation, - AccessPerms, - Ctl, - Commands, - Admin, - PKIX, - ACME, - Listener, - S2S, - S2SInSupervisor, - S2SOutSupervisor, - ServiceSupervisor, - ACL, - Shaper, - BackendSupervisor, - SQLSupervisor, - RiakSupervisor, - RedisSupervisor, - IQ, - Router, - RouterMulticast, - Local, - SM, - Captcha, - ExtMod, - GenModSupervisor, - Auth, - OAuth]}}. + [worker(ejabberd_hooks), + worker(ejabberd_cluster), + worker(cyrsasl), + worker(translate), + worker(ejabberd_access_permissions), + worker(ejabberd_ctl), + worker(ejabberd_commands), + worker(ejabberd_admin), + worker(ejabberd_pkix), + worker(ejabberd_acme), + supervisor(ejabberd_listener), + worker(ejabberd_s2s), + simple_supervisor(ejabberd_s2s_in), + simple_supervisor(ejabberd_s2s_out), + simple_supervisor(ejabberd_service), + worker(acl), + worker(shaper), + supervisor(ejabberd_backend_sup), + supervisor(ejabberd_rdbms), + supervisor(ejabberd_riak_sup), + supervisor(ejabberd_redis_sup), + worker(ejabberd_iq), + worker(ejabberd_router), + worker(ejabberd_router_multicast), + worker(ejabberd_local), + worker(ejabberd_sm), + worker(ejabberd_captcha), + worker(ext_mod), + supervisor(ejabberd_gen_mod_sup, gen_mod), + worker(ejabberd_auth), + worker(ejabberd_oauth)]}}. + +%%%=================================================================== +%%% Internal functions +%%%=================================================================== +worker(Mod) -> + {Mod, {Mod, start_link, []}, permanent, ?SHUTDOWN_TIMEOUT, worker, [Mod]}. + +supervisor(Mod) -> + supervisor(Mod, Mod). + +supervisor(Name, Mod) -> + {Name, {Mod, start_link, []}, permanent, infinity, supervisor, [Mod]}. + +simple_supervisor(Mod) -> + Name = list_to_atom(atom_to_list(Mod) ++ "_sup"), + {Name, {ejabberd_tmp_sup, start_link, [Name, Mod]}, + permanent, infinity, supervisor, [ejabberd_tmp_sup]}.