Current section

Files

Jump to
x3m_system lib service_telemetry_handler.ex
Raw

lib/service_telemetry_handler.ex

defmodule X3m.System.ServiceTelemetryHandler do
require Logger
def setup do
events = [
[:x3m, :system, :node_joined],
[:x3m, :system, :node_left]
]
config = %{service_registry: X3m.System.ServiceRegistry}
:telemetry.attach_many("x3m-system-node_handler", events, &__MODULE__.handle_event/4, config)
end
@doc false
def handle_event(
[:x3m, :system, :node_joined],
_measurements,
%{node: node},
%{service_registry: service_registry}
) do
Logger.debug(fn -> "[Discovery] Asking node #{inspect(node)} for local services" end)
request = {:introduce_local_services, Node.self()}
send({service_registry, node}, request)
end
@doc false
def handle_event(
[:x3m, :system, :node_left],
_measurements,
%{node: node},
%{service_registry: service_registry}
) do
request = {:unregister_node_services, node}
send(service_registry, request)
end
end