From c2f0fd6fcd84a53cd9b1a08bb12a9473f43acc71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Broks=20Randolfs=20Gail=C4=ABtis?= Date: Mon, 18 Aug 2025 20:10:07 +0300 Subject: [PATCH] Get port and servers from env --- lib/message_server/application.ex | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lib/message_server/application.ex b/lib/message_server/application.ex index 29a660d..9511253 100644 --- a/lib/message_server/application.ex +++ b/lib/message_server/application.ex @@ -5,6 +5,11 @@ defmodule MessageServer.Application do @impl true def start(_type, _args) do server_id = get_server_id() + port = get_port() + servers = parse_servers() + + Logger.info("Starting MessageServer #{server_id} on port #{port}") + Logger.info("Known servers: #{inspect(servers)}") children = [ {MessageServer.Storage, server_id} @@ -19,4 +24,20 @@ defmodule MessageServer.Application do System.get_env("SERVER_ID") || raise "SERVER_ID is required" end + + @spec get_port() :: integer() + def get_port() do + System.get_env("PORT", "4000") |> String.to_integer() + end + + @spec parse_servers() :: map() + defp parse_servers() do + System.get_env("SERVERS", "") + |> String.split(",") + |> Enum.reject(&(&1 == "")) + |> Enum.into(%{}, fn server_string -> + [id, host, port] = String.split(server_string, ":") + {id, %{host: host, port: String.to_integer(port)}} + end) + end end