improvement(Listener): Register listeners with scheme, address and port.

This commit is contained in:
James Harton 2023-10-14 15:25:06 +13:00
parent 21ee455e54
commit 8f759bf0db
Signed by: james
GPG key ID: 90E82DAA13F624F4
3 changed files with 6 additions and 6 deletions

View file

@ -17,7 +17,7 @@ defmodule Wayfarer.Listener do
@doc """
Stop listener
"""
@spec stop_listener(:inet.socket_address(), :inet.port_number()) :: :ok
def stop_listener(ip, port),
do: GenServer.stop({:via, Registry, {ListenerRegistry, {ip, port}}}, :normal)
@spec stop_listener(:http | :https, :inet.socket_address(), :inet.port_number()) :: :ok
def stop_listener(scheme, ip, port),
do: GenServer.stop({:via, Registry, {ListenerRegistry, {scheme, ip, port}}}, :normal)
end

View file

@ -48,7 +48,7 @@ defmodule Wayfarer.Listener.Server do
with {:ok, scheme} <- fetch_required_option(options, :scheme),
{:ok, pid} <- Bandit.start_link(options),
{:ok, %{address: addr, port: port}} <- ThousandIsland.listener_info(pid),
{:ok, _pid} <- Registry.register(ListenerRegistry, {addr, port}, pid) do
{:ok, _pid} <- Registry.register(ListenerRegistry, {scheme, addr, port}, pid) do
listen_url = listen_url(scheme, addr, port)
version = Application.spec(:wayfarer)[:vsn]
Logger.info("Started Wayfarer v#{version} listener on #{listen_url}")

View file

@ -88,7 +88,7 @@ defmodule Wayfarer.ListenerTest do
# Crash it
capture_log(fn ->
[{_, pid}] = Registry.lookup(Listener.Registry, {{127, 0, 0, 1}, port})
[{_, pid}] = Registry.lookup(Listener.Registry, {:http, {127, 0, 0, 1}, port})
Process.exit(pid, :kill)
end)
@ -116,7 +116,7 @@ defmodule Wayfarer.ListenerTest do
|> Finch.build("http://127.0.0.1:#{port}/")
|> Finch.request(:test_client)
Listener.stop_listener({127, 0, 0, 1}, port)
Listener.stop_listener(:http, {127, 0, 0, 1}, port)
wait_until_dead(pid)