- Move Elixir code to server/ subdirectory for monorepo structure - Update flake.nix to provide packages and apps outputs for nix run support - Update nix/package.nix to accept src parameter instead of fetchgit - Add NixOS module export for easy consumption Now supports: nix run, nix build, and nix develop from git repo 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
61 lines
1.4 KiB
Elixir
61 lines
1.4 KiB
Elixir
defmodule Tortoise.Handler.Logger do
|
|
@moduledoc false
|
|
|
|
require Logger
|
|
|
|
use Tortoise.Handler
|
|
|
|
defstruct []
|
|
alias __MODULE__, as: State
|
|
|
|
def init(_opts) do
|
|
Logger.info("Initializing handler")
|
|
{:ok, %State{}}
|
|
end
|
|
|
|
def connection(:up, state) do
|
|
Logger.info("Connection has been established")
|
|
{:ok, state}
|
|
end
|
|
|
|
def connection(:down, state) do
|
|
Logger.warn("Connection has been dropped")
|
|
{:ok, state}
|
|
end
|
|
|
|
def connection(:terminating, state) do
|
|
Logger.warn("Connection is terminating")
|
|
{:ok, state}
|
|
end
|
|
|
|
def subscription(:up, topic, state) do
|
|
Logger.info("Subscribed to #{topic}")
|
|
{:ok, state}
|
|
end
|
|
|
|
def subscription({:warn, [requested: req, accepted: qos]}, topic, state) do
|
|
Logger.warn("Subscribed to #{topic}; requested #{req} but got accepted with QoS #{qos}")
|
|
{:ok, state}
|
|
end
|
|
|
|
def subscription({:error, reason}, topic, state) do
|
|
Logger.error("Error subscribing to #{topic}; #{inspect(reason)}")
|
|
{:ok, state}
|
|
end
|
|
|
|
def subscription(:down, topic, state) do
|
|
Logger.info("Unsubscribed from #{topic}")
|
|
{:ok, state}
|
|
end
|
|
|
|
def handle_message(topic, publish, state) do
|
|
Logger.info("#{Enum.join(topic, "/")} #{inspect(publish)}")
|
|
{:ok, state}
|
|
end
|
|
|
|
def terminate(reason, _state) do
|
|
Logger.warn("Client has been terminated with reason: #{inspect(reason)}")
|
|
:ok
|
|
end
|
|
end
|