Add properties for delivered messages

This commit is contained in:
Feng Lee 2018-08-30 00:03:38 +08:00
parent 567aeb274f
commit a282c7625e
1 changed files with 20 additions and 6 deletions

View File

@ -81,21 +81,35 @@ validate_qos(QoS) when ?QOS0 =< QoS, QoS =< ?QOS2 ->
true;
validate_qos(_) -> error(bad_qos).
%% @doc From Message to Packet
%% @doc From message to packet
-spec(from_message(emqx_mqtt_types:packet_id(), emqx_types:message()) -> emqx_mqtt_types:packet()).
from_message(PacketId, Msg = #message{qos = QoS, topic = Topic, payload = Payload}) ->
Dup = emqx_message:get_flag(dup, Msg, false),
Retain = emqx_message:get_flag(retain, Msg, false),
from_message(PacketId, #message{qos = QoS, flags = Flags, headers = Headers,
topic = Topic, payload = Payload}) ->
Flags1 = if Flags =:= undefined ->
#{};
true -> Flags
end,
Dup = maps:get(dup, Flags1, false),
Retain = maps:get(retain, Flags1, false),
Publish = #mqtt_packet_publish{topic_name = Topic,
packet_id = PacketId,
%% TODO: Properties
properties = #{}},
properties = publish_props(Headers)},
#mqtt_packet{header = #mqtt_packet_header{type = ?PUBLISH,
dup = Dup,
qos = QoS,
retain = Retain},
variable = Publish, payload = Payload}.
publish_props(Headers) ->
maps:filter(fun('Payload-Format-Indicator', _) -> true;
('Response-Topic', _) -> true;
('Correlation-Data', _) -> true;
('User-Property', _) -> true;
('Subscription-Identifier', _) -> true;
('Content-Type', _) -> true;
(_Key, _Val) -> false
end , Headers).
%% @doc Message from Packet
-spec(to_message(emqx_types:credentials(), emqx_mqtt_types:packet())
-> emqx_types:message()).