|
@@ -28,27 +28,19 @@
|
|
|
|
|
|
|
|
-export([format/1]).
|
|
-export([format/1]).
|
|
|
|
|
|
|
|
|
|
+-type(msg_from() :: atom() | {binary(), undefined | binary()}).
|
|
|
|
|
+
|
|
|
%% @doc Make a message
|
|
%% @doc Make a message
|
|
|
--spec(make(From, Topic, Payload) -> mqtt_message() when
|
|
|
|
|
- From :: atom() | binary(),
|
|
|
|
|
- Topic :: binary(),
|
|
|
|
|
- Payload :: binary()).
|
|
|
|
|
|
|
+-spec(make(msg_from(), binary(), binary()) -> mqtt_message()).
|
|
|
make(From, Topic, Payload) ->
|
|
make(From, Topic, Payload) ->
|
|
|
- #mqtt_message{topic = Topic,
|
|
|
|
|
- from = From,
|
|
|
|
|
- payload = Payload,
|
|
|
|
|
- timestamp = os:timestamp()}.
|
|
|
|
|
|
|
+ make(From, ?QOS_0, Topic, Payload).
|
|
|
|
|
|
|
|
--spec(make(From, Qos, Topic, Payload) -> mqtt_message() when
|
|
|
|
|
- From :: atom() | binary(),
|
|
|
|
|
- Qos :: mqtt_qos() | mqtt_qos_name(),
|
|
|
|
|
- Topic :: binary(),
|
|
|
|
|
- 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)),
|
|
|
|
|
- topic = Topic,
|
|
|
|
|
|
|
+ #mqtt_message{msgid = msgid(),
|
|
|
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,13 +53,13 @@ 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),
|
|
|
|
|
- pktid = PacketId,
|
|
|
|
|
- qos = Qos,
|
|
|
|
|
- retain = Retain,
|
|
|
|
|
- dup = Dup,
|
|
|
|
|
- topic = Topic,
|
|
|
|
|
- payload = Payload,
|
|
|
|
|
|
|
+ #mqtt_message{msgid = msgid(),
|
|
|
|
|
+ pktid = PacketId,
|
|
|
|
|
+ qos = Qos,
|
|
|
|
|
+ retain = Retain,
|
|
|
|
|
+ dup = Dup,
|
|
|
|
|
+ topic = Topic,
|
|
|
|
|
+ payload = Payload,
|
|
|
timestamp = os:timestamp()};
|
|
timestamp = os:timestamp()};
|
|
|
|
|
|
|
|
from_packet(#mqtt_packet_connect{will_flag = false}) ->
|
|
from_packet(#mqtt_packet_connect{will_flag = false}) ->
|
|
@@ -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) ->
|
|
|
|
|
- undefined;
|
|
|
|
|
-msgid(Qos) when Qos =:= ?QOS_1 orelse Qos =:= ?QOS_2 ->
|
|
|
|
|
- emqttd_guid:gen().
|
|
|
|
|
|
|
+msgid() -> 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()).
|