Hibernate after a packet sent
This commit is contained in:
parent
d310fff532
commit
498915e5b3
|
@ -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
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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(
|
||||||
|
|
Loading…
Reference in New Issue