format
This commit is contained in:
parent
b3178ffcd5
commit
00f39607f1
|
@ -33,7 +33,6 @@
|
|||
%% API
|
||||
-export([init/0, parse/2]).
|
||||
|
||||
|
||||
%%%-----------------------------------------------------------------------------
|
||||
%% @doc
|
||||
%% Initialize a parser.
|
||||
|
|
|
@ -33,6 +33,13 @@
|
|||
%% API
|
||||
-export([serialise/1]).
|
||||
|
||||
%%------------------------------------------------------------------------------
|
||||
%% @doc
|
||||
%% Serialise MQTT Packet.
|
||||
%%
|
||||
%% @end
|
||||
%%------------------------------------------------------------------------------
|
||||
-spec serialise(mqtt_packet()) -> binary().
|
||||
serialise(#mqtt_packet{header = Header = #mqtt_packet_header{type = Type},
|
||||
variable = Variable,
|
||||
payload = Payload}) ->
|
||||
|
@ -44,13 +51,14 @@ serialise_header(#mqtt_packet_header{type = Type,
|
|||
dup = Dup,
|
||||
qos = Qos,
|
||||
retain = Retain},
|
||||
{VariableBin, PayloadBin})
|
||||
when is_integer(Type) andalso ?CONNECT =< Type andalso Type =< ?DISCONNECT ->
|
||||
{VariableBin, PayloadBin}) when ?CONNECT =< Type andalso Type =< ?DISCONNECT ->
|
||||
Len = size(VariableBin) + size(PayloadBin),
|
||||
true = (Len =< ?MAX_LEN),
|
||||
LenBin = serialise_len(Len),
|
||||
<<Type:4, (opt(Dup)):1, (opt(Qos)):2, (opt(Retain)):1,
|
||||
LenBin/binary, VariableBin/binary, PayloadBin/binary>>.
|
||||
LenBin/binary,
|
||||
VariableBin/binary,
|
||||
PayloadBin/binary>>.
|
||||
|
||||
serialise_variable(?CONNECT, #mqtt_packet_connect{client_id = ClientId,
|
||||
proto_ver = ProtoVer,
|
||||
|
@ -87,8 +95,7 @@ serialise_variable(?CONNECT, #mqtt_packet_connect{client_id = ClientId,
|
|||
{VariableBin, <<PayloadBin1/binary, UserPasswd/binary>>};
|
||||
|
||||
serialise_variable(?CONNACK, #mqtt_packet_connack{ack_flags = AckFlags,
|
||||
return_code = ReturnCode},
|
||||
undefined) ->
|
||||
return_code = ReturnCode}, undefined) ->
|
||||
{<<AckFlags:8, ReturnCode:8>>, <<>>};
|
||||
|
||||
serialise_variable(?SUBSCRIBE, #mqtt_packet_subscribe{packet_id = PacketId,
|
||||
|
@ -96,16 +103,14 @@ serialise_variable(?SUBSCRIBE, #mqtt_packet_subscribe{packet_id = PacketId,
|
|||
{<<PacketId:16/big>>, serialise_topics(Topics)};
|
||||
|
||||
serialise_variable(?SUBACK, #mqtt_packet_suback{packet_id = PacketId,
|
||||
qos_table = QosTable},
|
||||
undefined) ->
|
||||
qos_table = QosTable}, undefined) ->
|
||||
{<<PacketId:16/big>>, << <<Q:8>> || Q <- QosTable >>};
|
||||
|
||||
serialise_variable(?UNSUBSCRIBE, #mqtt_packet_unsubscribe{
|
||||
packet_id = PacketId, topics = Topics }, undefined) ->
|
||||
serialise_variable(?UNSUBSCRIBE, #mqtt_packet_unsubscribe{packet_id = PacketId,
|
||||
topics = Topics }, undefined) ->
|
||||
{<<PacketId:16/big>>, serialise_topics(Topics)};
|
||||
|
||||
serialise_variable(?UNSUBACK, #mqtt_packet_unsuback{packet_id = PacketId},
|
||||
undefined) ->
|
||||
serialise_variable(?UNSUBACK, #mqtt_packet_unsuback{packet_id = PacketId}, undefined) ->
|
||||
{<<PacketId:16/big>>, <<>>};
|
||||
|
||||
serialise_variable(?PUBLISH, #mqtt_packet_publish{topic_name = TopicName,
|
||||
|
@ -157,3 +162,4 @@ opt(false) -> 0;
|
|||
opt(true) -> 1;
|
||||
opt(X) when is_integer(X) -> X;
|
||||
opt(B) when is_binary(B) -> 1.
|
||||
|
||||
|
|
Loading…
Reference in New Issue