Refactoring

This commit is contained in:
2026-07-16 19:28:11 +03:00
parent 06e86abf33
commit 7cff348d0d
2 changed files with 38 additions and 18 deletions
+10 -13
View File
@@ -1,16 +1,20 @@
defmodule NeonVertigoService.Mqtt.Server do
use GenServer
alias __MODULE__, as: MqttServer
defstruct [:mqtt_pid]
def start_link(_) do
GenServer.start_link(__MODULE__, [], name: __MODULE__)
end
def init(_) do
{:ok, {}, {:continue, :post_init}}
{:ok, %MqttServer{}, {:continue, :post_init}}
end
# Callbacks
def handle_continue(:post_init, {}) do
def handle_continue(:post_init, %MqttServer{} = state) do
mqtt_config = Application.fetch_env!(:neon_vertigo_service, :mqtt_params)
{:ok, mqtt_pid} = Supervisor.start_child(
NeonVertigoService.Mqtt.Supervisor,
@@ -23,25 +27,18 @@ defmodule NeonVertigoService.Mqtt.Server do
:emqtt.subscribe(mqtt_pid, %{}, [{"$share/neon-vertigo-service/auctions/+", [{:qos, 1}]}])
{:noreply, {mqtt_pid}}
{:noreply, %{state | mqtt_pid: mqtt_pid}}
end
# Handling MQTT messages
def handle_info({:publish, msg}, {mqtt_pid} = state) do
def handle_info({:publish, msg}, %{mqtt_pid: mqtt_pid} = state) do
IO.puts("Received message")
IO.inspect(msg)
%{payload: payload_str, topic: topic_str, properties: properties} = msg
topic = String.split(topic_str, "/")
response_topic = properties[:"Response-Topic"]
topic = String.split(topic_str, "/") |> List.to_tuple()
payload = JSON.decode!(payload_str)
case NeonVertigoService.MessageProcessor.process_message(topic, payload, properties) do
{:reply, data} ->
if is_binary(response_topic) && String.length(response_topic) > 0 do
:emqtt.publish(mqtt_pid, response_topic, JSON.encode!(data), retain: true)
end
:noreply -> nil
end
NeonVertigoService.MessageProcessor.process_message(mqtt_pid, topic, payload, properties)
{:noreply, state}
end