Start working on MQTT/AMQP translation funs that take sparkplug into account
This commit is contained in:
parent
04fcd898ca
commit
b60582d0fb
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
-export([subcription_queue_name/1,
|
||||
mqtt2amqp/1,
|
||||
mqtt2amqp_fun/0,
|
||||
amqp2mqtt/1,
|
||||
gen_client_id/0,
|
||||
env/1,
|
||||
|
|
@ -42,6 +43,33 @@ mqtt2amqp(Topic) ->
|
|||
re:replace(re:replace(Topic, "/", ".", [global]),
|
||||
"[\+]", "*", [global])).
|
||||
|
||||
mqtt2amqp_fun() ->
|
||||
{ok, Mp} = re:compile("^sb[AB]v\\d\\.\\d/"),
|
||||
%% > re:run("sbAv1.0/FOO/BAR/BAZ", Mp, [{capture, first}]).
|
||||
%% {match,[{0,8}]}
|
||||
case env(sparkplug_b) of
|
||||
true ->
|
||||
ok;
|
||||
_ ->
|
||||
end.
|
||||
fun(Topic0) ->
|
||||
Opts = case SparkplugB of
|
||||
true ->
|
||||
Offset = case re:run(Topic0, Mp, [{capture, first}]) of
|
||||
{match, [{_, Idx1}]} ->
|
||||
Idx1; % Idx1 is the 1-based offset of the / character
|
||||
_ ->
|
||||
0
|
||||
end,
|
||||
[global, {offset, Offset}];
|
||||
_ ->
|
||||
[global]
|
||||
end,
|
||||
Topic1 = re:replace(Topic0, "/", ".", Opts),
|
||||
Topic2 = re:replace(Topic1, "[\+]", "*", [global]),
|
||||
erlang:iolist_to_binary(Topic2)
|
||||
end.
|
||||
|
||||
amqp2mqtt(Topic) ->
|
||||
erlang:iolist_to_binary(
|
||||
re:replace(re:replace(Topic, "[\*]", "+", [global]),
|
||||
|
|
|
|||
Loading…
Reference in New Issue