From 02a17a8e965fe3d0385f66a2298ad23b97281a1f Mon Sep 17 00:00:00 2001 From: Feng Lee Date: Thu, 30 Jun 2016 14:33:54 +0800 Subject: [PATCH] Add emqttd_ws_client_sup --- src/emqttd_app.erl | 1 + src/emqttd_ws_client_sup.erl | 45 ++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/emqttd_ws_client_sup.erl diff --git a/src/emqttd_app.erl b/src/emqttd_app.erl index c097e5279..5c56e824f 100644 --- a/src/emqttd_app.erl +++ b/src/emqttd_app.erl @@ -89,6 +89,7 @@ start_servers(Sup) -> {"emqttd client manager", {supervisor, emqttd_cm_sup}}, {"emqttd session manager", {supervisor, emqttd_sm_sup}}, {"emqttd session supervisor", {supervisor, emqttd_session_sup}}, + {"emqttd wsclient supervisor", {supervisor, emqttd_ws_client_sup}}, {"emqttd broker", emqttd_broker}, {"emqttd alarm", emqttd_alarm}, {"emqttd mod supervisor", emqttd_mod_sup}, diff --git a/src/emqttd_ws_client_sup.erl b/src/emqttd_ws_client_sup.erl new file mode 100644 index 000000000..3577527a6 --- /dev/null +++ b/src/emqttd_ws_client_sup.erl @@ -0,0 +1,45 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2012-2016 Feng Lee . +%% +%% 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(emqttd_ws_client_sup). + +-author("Feng Lee "). + +-behavior(supervisor). + +-export([start_link/0, start_client/3]). + +-export([init/1]). + +%% @doc Start websocket client supervisor +-spec(start_link() -> {ok, pid()}). +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, [emqttd:env(mqtt)]). + +%% @doc Start a WebSocket Client +-spec(start_client(pid(), mochiweb_request:request(), fun()) -> {ok, pid()}). +start_client(WsPid, Req, ReplyChannel) -> + supervisor:start_child(?MODULE, [WsPid, Req, ReplyChannel]). + +%%-------------------------------------------------------------------- +%% Supervisor callbacks +%%-------------------------------------------------------------------- + +init([Env]) -> + {ok, {{simple_one_for_one, 0, 1}, + [{ws_client, {emqttd_ws_client, start_link, [Env]}, + temporary, 5000, worker, [emqttd_ws_client]}]}}. +