Packages

A minimal GenServer that monitors a given GenEvent handler. This server will handle exits of the Handler and attempt to re-add it to the manager when unexpected exits occur. Exits for :normal, :shutdown or :swapped reasons will not attempt a re-add to the manager.

Current section

Files

Jump to
mon_handler lib test_event_handler.ex
Raw

lib/test_event_handler.ex

defmodule MyEventHandler do
require Logger
use GenEvent
def handle_event(:boom, state) do
1 = 2
end
def handle_event(event, state) do
Logger.info("Received #{inspect event} event")
{:ok, state}
end
end
defmodule MySupervisor do
use Supervisor
@evt_mgr_name :my_event_manager
@mon_han_name :my_mon_handler
def start_link, do: Supervisor.start_link(__MODULE__, [])
def init(_) do
config = MonHandler.get_config(@evt_mgr_name, MyEventHandler)
children = [
worker(GenEvent, [[name: @evt_mgr_name]]),
worker(MonHandler, [config])
]
opts = [strategy: :one_for_one, name: __MODULE__]
supervise children, opts
end
end