Hibernate after a packet sent

This commit is contained in:
Feng Lee 2017-02-21 19:26:50 +08:00
parent d310fff532
commit 498915e5b3
3 changed files with 6 additions and 5 deletions

View File

@ -238,7 +238,7 @@ handle_info({inet_async, _Sock, _Ref, {error, Reason}}, State) ->
shutdown(Reason, State); shutdown(Reason, State);
handle_info({inet_reply, _Sock, ok}, State) -> handle_info({inet_reply, _Sock, ok}, State) ->
{noreply, State}; {noreply, State, hibernate};
handle_info({inet_reply, _Sock, {error, Reason}}, State) -> handle_info({inet_reply, _Sock, {error, Reason}}, State) ->
shutdown(Reason, State); shutdown(Reason, State);
@ -299,7 +299,7 @@ received(Bytes, State = #client_state{parser_fun = ParserFun,
proto_state = ProtoState}) -> proto_state = ProtoState}) ->
case catch ParserFun(Bytes) of case catch ParserFun(Bytes) of
{more, NewParser} -> {more, NewParser} ->
{noreply, run_socket(State#client_state{parser_fun = NewParser})}; {noreply, run_socket(State#client_state{parser_fun = NewParser}), hibernate};
{ok, Packet, Rest} -> {ok, Packet, Rest} ->
emqttd_metrics:received(Packet), emqttd_metrics:received(Packet),
case emqttd_protocol:received(Packet, ProtoState) of case emqttd_protocol:received(Packet, ProtoState) of

View File

@ -333,7 +333,8 @@ prioritise_info(Msg, _Len, _State) ->
_ -> 0 _ -> 0
end. end.
handle_pre_hibernate(State) -> handle_pre_hibernate(State = #state{client_id = ClientId}) ->
io:format("Session(~s) will hibernate!~n", [ClientId]),
{hibernate, emit_stats(State)}. {hibernate, emit_stats(State)}.
handle_call({publish, Msg = #mqtt_message{qos = ?QOS_2, pktid = PacketId}}, _From, handle_call({publish, Msg = #mqtt_message{qos = ?QOS_2, pktid = PacketId}}, _From,

View File

@ -129,7 +129,7 @@ handle_call(session, _From, State = #wsclient_state{proto_state = ProtoState}) -
handle_call(Req, _From, State = #wsclient_state{peer = Peer}) -> handle_call(Req, _From, State = #wsclient_state{peer = Peer}) ->
?WSLOG(error, Peer, "Unexpected request: ~p", [Req]), ?WSLOG(error, Peer, "Unexpected request: ~p", [Req]),
{reply, {error, unsupported_request}, State}. reply({error, unsupported_request}, State).
handle_cast({received, Packet}, State = #wsclient_state{peer = Peer, proto_state = ProtoState}) -> handle_cast({received, Packet}, State = #wsclient_state{peer = Peer, proto_state = ProtoState}) ->
emqttd_metrics:received(Packet), emqttd_metrics:received(Packet),
@ -147,7 +147,7 @@ handle_cast({received, Packet}, State = #wsclient_state{peer = Peer, proto_state
handle_cast(Msg, State = #wsclient_state{peer = Peer}) -> handle_cast(Msg, State = #wsclient_state{peer = Peer}) ->
?WSLOG(error, Peer, "Unexpected msg: ~p", [Msg]), ?WSLOG(error, Peer, "Unexpected msg: ~p", [Msg]),
{noreply, State}. {noreply, State, hibernate}.
handle_info({subscribe, TopicTable}, State) -> handle_info({subscribe, TopicTable}, State) ->
with_proto( with_proto(