Просмотр исходного кода

refactor: define internal_extra macro

JimMoen 1 год назад
Родитель
Сommit
c0a5daf818

+ 12 - 0
apps/emqx/include/emqx_mqtt.hrl

@@ -321,6 +321,15 @@ end).
     properties = #{}
 }).
 
+%%--------------------------------------------------------------------
+%% MQTT Implementation Internal
+%%--------------------------------------------------------------------
+
+%% Propagate extra data in MQTT Packets
+%% Use it in properties and should never be serialized
+%% See also emqx_frame:serialize_property/3
+-define(MQTT_INTERNAL_EXTRA, 'internal_extra').
+
 %%--------------------------------------------------------------------
 %% MQTT Control Packet
 %%--------------------------------------------------------------------
@@ -331,6 +340,9 @@ end).
         #mqtt_packet_connect{}
         | #mqtt_packet_connack{}
         | #mqtt_packet_publish{}
+        %% QoS=1: PUBACK,
+        %% QoS=2: PUBREC, PUBREL, PUBCOMP
+        %% all used #mqtt_packet_puback{}
         | #mqtt_packet_puback{}
         | #mqtt_packet_subscribe{}
         | #mqtt_packet_suback{}

+ 5 - 2
apps/emqx/src/emqx_frame.erl

@@ -1024,9 +1024,12 @@ serialize_properties(Props, StrictMode) when is_map(Props) ->
     >>,
     [serialize_variable_byte_integer(byte_size(Bin)), Bin].
 
-serialize_property(_, Disabled, _StrictMode) when Disabled =:= disabled; Disabled =:= undefined ->
+serialize_property(_, Disabled, _StrictMode) when
+    Disabled =:= disabled;
+    Disabled =:= undefined
+->
     <<>>;
-serialize_property(internal_extra, _, _StrictMode) ->
+serialize_property(?MQTT_INTERNAL_EXTRA, _, _StrictMode) ->
     <<>>;
 serialize_property('Payload-Format-Indicator', Val, _StrictMode) ->
     <<16#01, Val>>;

+ 1 - 1
apps/emqx/src/emqx_message.erl

@@ -366,7 +366,7 @@ filter_pub_props(Props) ->
     ).
 
 maybe_put_extra(Extra, Props) when map_size(Extra) > 0 ->
-    Props#{internal_extra => Extra};
+    Props#{?MQTT_INTERNAL_EXTRA => Extra};
 maybe_put_extra(_Extra, Props) ->
     Props.
 

+ 1 - 1
apps/emqx/src/emqx_packet.erl

@@ -453,7 +453,7 @@ to_message(
 ) ->
     Msg = emqx_message:make(ClientId, QoS, Topic, Payload),
     {Extra, Props1} =
-        case maps:take(internal_extra, Props) of
+        case maps:take(?MQTT_INTERNAL_EXTRA, Props) of
             error -> {#{}, Props};
             ExtraProps -> ExtraProps
         end,

+ 3 - 3
apps/emqx_opentelemetry/src/emqx_otel_trace.erl

@@ -594,8 +594,8 @@ put_ctx(
     OtelCtx,
     #mqtt_packet{variable = #mqtt_packet_publish{properties = Props} = PubPacket} = Packet
 ) ->
-    Extra = maps:get(internal_extra, Props, #{}),
-    Props1 = Props#{internal_extra => Extra#{?EMQX_OTEL_CTX => OtelCtx}},
+    Extra = maps:get(?MQTT_INTERNAL_EXTRA, Props, #{}),
+    Props1 = Props#{?MQTT_INTERNAL_EXTRA => Extra#{?EMQX_OTEL_CTX => OtelCtx}},
     Packet#mqtt_packet{variable = PubPacket#mqtt_packet_publish{properties = Props1}};
 put_ctx(
     _OtelCtx,
@@ -608,7 +608,7 @@ get_ctx(#message{extra = Extra}) ->
 get_ctx(#delivery{message = #message{extra = Extra}}) ->
     from_extra(Extra);
 get_ctx(#mqtt_packet{
-    variable = #mqtt_packet_publish{properties = #{internal_extra := Extra}}
+    variable = #mqtt_packet_publish{properties = #{?MQTT_INTERNAL_EXTRA := Extra}}
 }) ->
     from_extra(Extra);
 get_ctx(_) ->