Packages

Telemetry.Metrics reporter for InfluxDB

Current section

Files

Jump to
telemetry_influxdb lib udp socket.ex
Raw

lib/udp/socket.ex

defmodule TelemetryInfluxDB.UDP.Socket do
@moduledoc false
defstruct [:host, :port, :socket]
@opaque t :: %__MODULE__{
host: :inet.hostname(),
port: :inet.port_number(),
socket: :gen_udp.socket()
}
@spec open(:inet.hostname(), :inet.port_number()) :: {:ok, t()} | {:error, reason :: term()}
def open(host, port) do
case :gen_udp.open(0) do
{:ok, socket} ->
{:ok, %__MODULE__{host: host, port: port, socket: socket}}
{:error, _} = err ->
err
end
end
@spec send(t(), binary()) :: :ok | {:error, reason :: term()}
def send(%__MODULE__{host: host, port: port, socket: socket}, data) do
:gen_udp.send(socket, host, port, data)
end
end