defmodule Prymn.Messaging.Messages.TerminalOutput do defstruct [:id, :output] end # defmodule Prymn.Messaging.Messages.Health do # defstruct [:cpu_status, :memory_status, :disk_status] # end defmodule Prymn.Messaging.Messages do require Logger alias Prymn.Messaging.Messages.TerminalOutput @v1_prefix "agents.v1." def handle_message(subject, payload) do {_agent_id, subjects} = extract_subject(subject) case subjects do ["health"] -> Jason.decode!(payload) ["terminal", id, "output"] -> %TerminalOutput{id: id, output: payload} end end defp extract_subject(@v1_prefix <> rest) do [agent_id | subjects] = String.split(rest, ".") {agent_id, subjects} end end