Feng Lee 10 年之前
父节点
当前提交
3e1f8f8158
共有 3 个文件被更改,包括 14 次插入64 次删除
  1. 1 1
      plugins/emqttd_dashboard
  2. 0 47
      src/emqttd_qos.erl
  3. 13 16
      src/emqttd_sm.erl

+ 1 - 1
plugins/emqttd_dashboard

@@ -1 +1 @@
-Subproject commit 8b43524f38e8cc31baef3af50a98a301a034acfc
+Subproject commit dd202346fcfce6b0ae8da76bb7233e91db996bfa

+ 0 - 47
src/emqttd_qos.erl

@@ -1,47 +0,0 @@
-%%%-----------------------------------------------------------------------------
-%%% Copyright (c) 2012-2015 eMQTT.IO, All Rights Reserved.
-%%%
-%%% Permission is hereby granted, free of charge, to any person obtaining a copy
-%%% of this software and associated documentation files (the "Software"), to deal
-%%% in the Software without restriction, including without limitation the rights
-%%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-%%% copies of the Software, and to permit persons to whom the Software is
-%%% furnished to do so, subject to the following conditions:
-%%%
-%%% The above copyright notice and this permission notice shall be included in all
-%%% copies or substantial portions of the Software.
-%%%
-%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-%%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-%%% SOFTWARE.
-%%%-----------------------------------------------------------------------------
-%%% @doc
-%%% emqttd Qos Functions.
-%%%
-%%% @end
-%%%-----------------------------------------------------------------------------
--module(emqttd_qos).
-
--include("emqttd_protocol.hrl").
-
--export([a/1, i/1]).
-
-a(?QOS_0) -> qos0;
-a(?QOS_1) -> qos1;
-a(?QOS_2) -> qos2;
-a(qos0)   -> qos0;
-a(qos1)   -> qos1;
-a(qos2)   -> qos2.
-
-i(?QOS_0) -> ?QOS_0;
-i(?QOS_1) -> ?QOS_1;
-i(?QOS_2) -> ?QOS_2;
-i(qos0)   -> ?QOS_0;
-i(qos1)   -> ?QOS_1;
-i(qos2)   -> ?QOS_2.
-
-

+ 13 - 16
src/emqttd_sm.erl

@@ -118,9 +118,12 @@ lookup_session(ClientId) ->
     CleanSess :: boolean(),
     CleanSess :: boolean(),
     ClientId :: binary(),
     ClientId :: binary(),
     Info :: [tuple()].
     Info :: [tuple()].
-register_session(CleanSess, ClientId, Info) ->
+register_session(true, ClientId, Info) ->
+    ets:insert(mqtt_transient_session, {ClientId, Info});
+
+register_session(false, ClientId, Info) ->
     SM = gproc_pool:pick_worker(?SM_POOL, ClientId),
     SM = gproc_pool:pick_worker(?SM_POOL, ClientId),
-    gen_server:cast(SM, {register, CleanSess, ClientId, Info}).
+    gen_server:cast(SM, {register, ClientId, Info}).
 
 
 %%------------------------------------------------------------------------------
 %%------------------------------------------------------------------------------
 %% @doc Unregister a session.
 %% @doc Unregister a session.
@@ -128,10 +131,12 @@ register_session(CleanSess, ClientId, Info) ->
 %%------------------------------------------------------------------------------
 %%------------------------------------------------------------------------------
 -spec unregister_session(CleanSess, ClientId) -> ok when
 -spec unregister_session(CleanSess, ClientId) -> ok when
     CleanSess :: boolean(),
     CleanSess :: boolean(),
-    ClientId :: binary().
-unregister_session(CleanSess, ClientId) ->
+    ClientId  :: binary().
+unregister_session(true, ClientId) ->
+    ets:delete(mqtt_transient_session, ClientId);
+unregister_session(false, ClientId) ->
     SM = gproc_pool:pick_worker(?SM_POOL, ClientId),
     SM = gproc_pool:pick_worker(?SM_POOL, ClientId),
-    gen_server:cast(SM, {unregister, CleanSess, ClientId}).
+    gen_server:cast(SM, {unregister, ClientId}).
 
 
 call(SM, Req) -> gen_server:call(SM, Req, infinity).
 call(SM, Req) -> gen_server:call(SM, Req, infinity).
 
 
@@ -169,20 +174,12 @@ handle_call({start_session, {true, ClientId, ClientPid}}, _From, State) ->
 handle_call(_Request, _From, State) ->
 handle_call(_Request, _From, State) ->
     {reply, ok, State}.
     {reply, ok, State}.
 
 
-%% transient session
-handle_cast({register, true, ClientId, Info}, State) ->
-    ets:insert(mqtt_transient_session, {ClientId, Info}),
-    {noreply, State};
-
-handle_cast({register, false, ClientId, Info}, State) ->
+%% persistent session
+handle_cast({register, ClientId, Info}, State) ->
     ets:insert(mqtt_persistent_session, {ClientId, Info}),
     ets:insert(mqtt_persistent_session, {ClientId, Info}),
     {noreply, setstats(State)};
     {noreply, setstats(State)};
 
 
-handle_cast({unregister, true, ClientId}, State) ->
-    ets:delete(mqtt_transient_session, ClientId),
-    {noreply, State};
-
-handle_cast({unregister, false, ClientId}, State) ->
+handle_cast({unregister, ClientId}, State) ->
     ets:delete(mqtt_persistent_session, ClientId),
     ets:delete(mqtt_persistent_session, ClientId),
     {noreply, setstats(State)};
     {noreply, setstats(State)};