defmodule PushEx do @moduledoc """ PushEx context exposes public API functions. """ alias PushEx.{Instrumentation, Push} alias Push.ItemProducer @doc """ Returns the number of sockets (transports) connected to this node. """ @spec connected_socket_count() :: non_neg_integer() defdelegate connected_socket_count(), to: Instrumentation.Tracker @doc """ Returns the number of channels connected to this node. """ @spec connected_channel_count() :: non_neg_integer() defdelegate connected_channel_count(), to: Instrumentation.Tracker @doc """ Returns the pids of connected transport processes (Socket processes). """ defdelegate connected_transport_pids(), to: Instrumentation.Tracker @doc """ Returns the pids of connected Channel processes. """ defdelegate connected_channel_pids(), to: Instrumentation.Tracker @doc """ Returns a child_spec that can be used to start the PushEx web endpoint. """ defdelegate child_spec(opts), to: PushEx.Supervisor @doc """ Triggers a Push to be instrumented/enqueued into the system. """ @spec push(%Push{}) :: true def push(item = %Push{}) do Instrumentation.Push.requested(item) ItemProducer.push(item) true end @doc false def unix_ms_now(), do: :erlang.system_time(:millisecond) end