ZabbixSender.Serializer (ZabbixSender v1.1.0) View Source

Helper module for binary serialization with Zabbix Sender Protocol

Link to this section Summary

Functions

Deserializes zabbix sender binary message to elixir data.

Serializes message to zabbix sender binary format.

Link to this section Functions

Specs

deserialize(binary()) ::
  {:error, :invalid_format | :unsupported_version | Jason.DecodeError.t()}
  | {:ok, map()}

Deserializes zabbix sender binary message to elixir data.

Examples

iex> ZabbixSender.Serializer.deserialize(<<"ZBXD\x01"::binary, 2::little-integer-size(64), "{}"::binary>>)
{:ok, %{}}
iex> ZabbixSender.Serializer.deserialize(<<"ZBX\x01"::binary, 1::little-integer-size(64), "{}"::binary>>)
{:error, :invalid_format}
iex> ZabbixSender.Serializer.deserialize(<<>>)
{:error, :invalid_format}
iex> ZabbixSender.Serializer.deserialize(<<"ZBXD\x02"::binary, 2::little-integer-size(64), "{}"::binary>>)
{:error, :unsupported_version}
iex> ZabbixSender.Serializer.deserialize(<<"ZBXD\x01"::binary, 2::little-integer-size(64), "{"::binary>>)
{:error, :invalid_format}
iex> ZabbixSender.Serializer.deserialize(<<"ZBXD\x01"::binary, 1::little-integer-size(64), "{}"::binary>>)
{:error, :invalid_format}
iex> ZabbixSender.Serializer.deserialize(<<"ZBXD\x01"::binary, 2::little-integer-size(64), "{w"::binary>>)
{:error, %Jason.DecodeError{data: "{w", position: 1, token: nil}}

Specs

serialize(map()) :: binary()

Serializes message to zabbix sender binary format.

Examples

iex> ZabbixSender.Serializer.serialize(%{})
<<"ZBXD\x01"::binary, 2::little-integer-size(64), "{}"::binary>>