From 3cea06f88f1147d62cac28072224d8fc1479ca25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E5=AD=90=E5=8D=9A?= <349832309@qq.com> Date: Sat, 27 Oct 2018 14:25:10 +0800 Subject: [PATCH] Remove resume_session/1, --- src/emqx_session.erl | 41 +++++++++++++++++++---------------------- src/emqx_sm.erl | 8 ++------ 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/src/emqx_session.erl b/src/emqx_session.erl index 4fb92cdce..286066a59 100644 --- a/src/emqx_session.erl +++ b/src/emqx_session.erl @@ -47,7 +47,7 @@ -export([info/1, attrs/1]). -export([stats/1]). -export([resume/2, discard/2]). --export([update_expiry_interval/2, update_misc/2]). +-export([update_expiry_interval/2]). -export([subscribe/2, subscribe/4]). -export([publish/3]). -export([puback/2, puback/3]). @@ -324,9 +324,6 @@ discard(SPid, ByPid) -> update_expiry_interval(SPid, Interval) -> gen_server:cast(SPid, {expiry_interval, Interval}). -update_misc(SPid, Misc) -> - gen_server:cast(SPid, {update_misc, Misc}). - -spec(close(spid()) -> ok). close(SPid) -> gen_server:call(SPid, close, infinity). @@ -517,9 +514,11 @@ handle_cast({pubcomp, PacketId, _ReasonCode}, State = #state{inflight = Inflight end; %% RESUME: -handle_cast({resume, #{conn_pid := ConnPid, - will_msg := WillMsg, - expiry_interval := SessionExpiryInterval}}, State = #state{client_id = ClientId, +handle_cast({resume, #{conn_pid := ConnPid, + will_msg := WillMsg, + expiry_interval := SessionExpiryInterval, + max_inflight := MaxInflight, + topic_alias_maximum := TopicAliasMaximum}}, State = #state{client_id = ClientId, conn_pid = OldConnPid, clean_start = CleanStart, retry_timer = RetryTimer, @@ -539,17 +538,19 @@ handle_cast({resume, #{conn_pid := ConnPid, true = link(ConnPid), - State1 = State#state{conn_pid = ConnPid, - binding = binding(ConnPid), - old_conn_pid = OldConnPid, - clean_start = false, - retry_timer = undefined, - awaiting_rel = #{}, - await_rel_timer = undefined, - expiry_timer = undefined, - expiry_interval = SessionExpiryInterval, - will_delay_timer = undefined, - will_msg = WillMsg}, + State1 = State#state{conn_pid = ConnPid, + binding = binding(ConnPid), + old_conn_pid = OldConnPid, + clean_start = false, + retry_timer = undefined, + awaiting_rel = #{}, + await_rel_timer = undefined, + expiry_timer = undefined, + expiry_interval = SessionExpiryInterval, + inflight = emqx_inflight:update_size(MaxInflight, State#state.inflight), + topic_alias_maximum = TopicAliasMaximum, + will_delay_timer = undefined, + will_msg = WillMsg}, %% Clean Session: true -> false??? CleanStart andalso emqx_sm:set_session_attrs(ClientId, attrs(State1)), @@ -562,10 +563,6 @@ handle_cast({resume, #{conn_pid := ConnPid, handle_cast({expiry_interval, Interval}, State) -> {noreply, State#state{expiry_interval = Interval}}; -handle_cast({update_misc, #{max_inflight := MaxInflight, topic_alias_maximum := TopicAliasMaximum}}, State) -> - {noreply, State#state{inflight = emqx_inflight:update_size(MaxInflight, State#state.inflight), - topic_alias_maximum = TopicAliasMaximum}}; - handle_cast(Msg, State) -> emqx_logger:error("[Session] unexpected cast: ~p", [Msg]), {noreply, State}. diff --git a/src/emqx_sm.erl b/src/emqx_sm.erl index 9eb853ac4..bc3f6ff68 100644 --- a/src/emqx_sm.erl +++ b/src/emqx_sm.erl @@ -22,7 +22,7 @@ -export([open_session/1, close_session/1]). -export([lookup_session/1, lookup_session_pid/1]). --export([resume_session/1, resume_session/2]). +-export([resume_session/2]). -export([discard_session/1, discard_session/2]). -export([register_session/2, unregister_session/1]). -export([get_session_attrs/1, set_session_attrs/2]). @@ -66,7 +66,6 @@ open_session(SessAttrs = #{clean_start := false, ResumeStart = fun(_) -> case resume_session(ClientId, SessAttrs) of {ok, SPid} -> - emqx_session:update_misc(SPid, #{max_inflight => MaxInflight, topic_alias_maximum => TopicAliasMaximum}), {ok, SPid, true}; {error, not_found} -> emqx_session_sup:start_session(SessAttrs) @@ -89,10 +88,7 @@ discard_session(ClientId, ConnPid) when is_binary(ClientId) -> end, lookup_session(ClientId)). %% @doc Try to resume a session. --spec(resume_session(emqx_types:client_id()) -> {ok, pid()} | {error, term()}). -resume_session(ClientId) -> - resume_session(ClientId, #{conn_pid => self(), will_msg => undefined}). - +-spec(resume_session(emqx_types:client_id(), map()) -> {ok, pid()} | {error, term()}). resume_session(ClientId, SessAttrs = #{conn_pid := ConnPid}) -> case lookup_session(ClientId) of [] -> {error, not_found};