fix 'undefined' msgid

This commit is contained in:
Feng Lee 2016-08-17 13:46:32 +08:00
parent 6d5ce1f584
commit 2b45dbf09f
1 changed files with 18 additions and 29 deletions

View File

@ -28,27 +28,19 @@
-export([format/1]). -export([format/1]).
%% @doc Make a message -type(msg_from() :: atom() | {binary(), undefined | binary()}).
-spec(make(From, Topic, Payload) -> mqtt_message() when
From :: atom() | binary(),
Topic :: binary(),
Payload :: binary()).
make(From, Topic, Payload) ->
#mqtt_message{topic = Topic,
from = From,
payload = Payload,
timestamp = os:timestamp()}.
-spec(make(From, Qos, Topic, Payload) -> mqtt_message() when %% @doc Make a message
From :: atom() | binary(), -spec(make(msg_from(), binary(), binary()) -> mqtt_message()).
Qos :: mqtt_qos() | mqtt_qos_name(), make(From, Topic, Payload) ->
Topic :: binary(), make(From, ?QOS_0, Topic, Payload).
Payload :: binary()).
-spec(make(msg_from(), mqtt_qos(), binary(), binary()) -> mqtt_message()).
make(From, Qos, Topic, Payload) -> make(From, Qos, Topic, Payload) ->
#mqtt_message{msgid = msgid(?QOS_I(Qos)), #mqtt_message{msgid = msgid(),
topic = Topic,
from = From, from = From,
qos = ?QOS_I(Qos), qos = ?QOS_I(Qos),
topic = Topic,
payload = Payload, payload = Payload,
timestamp = os:timestamp()}. timestamp = os:timestamp()}.
@ -61,7 +53,7 @@ from_packet(#mqtt_packet{header = #mqtt_packet_header{type = ?PUBLISH,
variable = #mqtt_packet_publish{topic_name = Topic, variable = #mqtt_packet_publish{topic_name = Topic,
packet_id = PacketId}, packet_id = PacketId},
payload = Payload}) -> payload = Payload}) ->
#mqtt_message{msgid = msgid(Qos), #mqtt_message{msgid = msgid(),
pktid = PacketId, pktid = PacketId,
qos = Qos, qos = Qos,
retain = Retain, retain = Retain,
@ -79,7 +71,7 @@ from_packet(#mqtt_packet_connect{client_id = ClientId,
will_qos = Qos, will_qos = Qos,
will_topic = Topic, will_topic = Topic,
will_msg = Msg}) -> will_msg = Msg}) ->
#mqtt_message{msgid = msgid(Qos), #mqtt_message{msgid = msgid(),
topic = Topic, topic = Topic,
from = {ClientId, Username}, from = {ClientId, Username},
retain = Retain, retain = Retain,
@ -96,10 +88,7 @@ from_packet(Username, ClientId, Packet) ->
Msg = from_packet(Packet), Msg = from_packet(Packet),
Msg#mqtt_message{from = {ClientId, Username}}. Msg#mqtt_message{from = {ClientId, Username}}.
msgid(?QOS_0) -> msgid() -> emqttd_guid:gen().
undefined;
msgid(Qos) when Qos =:= ?QOS_1 orelse Qos =:= ?QOS_2 ->
emqttd_guid:gen().
%% @doc Message to packet %% @doc Message to packet
-spec(to_packet(mqtt_message()) -> mqtt_packet()). -spec(to_packet(mqtt_message()) -> mqtt_packet()).