Kaynağa Gözat

Add reopen/close ctl command

turtled 8 yıl önce
ebeveyn
işleme
5433af4c92
2 değiştirilmiş dosya ile 33 ekleme ve 1 silme
  1. 31 1
      src/emqttd_cli.erl
  2. 2 0
      src/emqttd_ctl.erl

+ 31 - 1
src/emqttd_cli.erl

@@ -477,8 +477,38 @@ listeners([]) ->
                         end, Info)
             end, esockd:listeners());
 
+listeners(["reopen", Proto, ListenOn1]) ->
+    ListenOn = case string:tokens(ListenOn1, ":") of
+        [Port]     -> list_to_integer(Port);
+        [IP, Port] -> {IP, list_to_integer(Port)}
+    end,
+    case emqttd_app:restart_listener({list_to_atom(Proto), ListenOn, []}) of
+        {ok, _Pid} ->
+            io:format("Reopen ~p listen on ~p successfully.~n",
+                      [list_to_atom(Proto), list_to_atom(ListenOn1)]);
+        {error, Error} ->
+            io:format("Failed to reopen ~p listen on ~p, error:~p~n",
+                      [list_to_atom(Proto), list_to_atom(ListenOn1) ,Error])
+    end;
+
+listeners(["close", Proto, ListenOn1]) ->
+    ListenOn = case string:tokens(ListenOn1, ":") of
+        [Port]     -> list_to_integer(Port);
+        [IP, Port] -> {IP, list_to_integer(Port)}
+    end,
+    case emqttd_app:stop_listener({list_to_atom(Proto), ListenOn, []}) of
+        ok ->
+            io:format("Close ~p on ~p successfully.~n",
+                      [list_to_atom(Proto), list_to_atom(ListenOn1)]);
+        {error, Error} ->
+            io:format("Failed to close ~p on ~p, error:~p~n",
+                      [list_to_atom(Proto), list_to_atom(ListenOn1) ,Error])
+    end;
+
 listeners(_) ->
-    ?PRINT_CMD("listeners", "List listeners").
+    ?USAGE([{"listeners",                       "List listeners"},
+            {"listeners reopen <Proto> <Port>", "Reopen a listener port"},
+            {"listeners close  <Proto> <Port>", "Close  a listener port"}]).
 
 %%--------------------------------------------------------------------
 %% Dump ETS

+ 2 - 0
src/emqttd_ctl.erl

@@ -75,6 +75,8 @@ run([CmdS|Args]) ->
                _ -> ok
             catch
                 _:Reason ->
+                    io:format("Reason:~p, get_stacktrace:~p~n",
+                              [Reason, erlang:get_stacktrace()]),
                     {error, Reason}
             end;
         [] ->