View Source Yggdrasil.Backend behaviour (Yggdrasil v6.0.2)

Backend behaviour that defines how to subscribe, unsubscribe and publish as well as send messages of connection and disconnection to subscribers.

By default, the implementation uses Phoenix.PubSub as backend.

backend-alias

Backend alias

When defining backends it is possible to define aliases for the module as follows:

defmodule Yggdrasil.Backend.MyBackend do
  use Yggdrasil.Backend, name: :my_backend

  (... behaviour implementation ...)
end

And adding the following to our application supervision tree:

Supervisor.start_link([
  {Yggdrasil.Backend.MyBackend, []}
  ...
])

This will allow you to use the following as a Channel to subscribe and publish:

%Channel{name: "my_channel", backend: :my_backend}

Link to this section Summary

Callbacks

Callback to publish the connected message in the channel. Receives a pid in case the message shouldn't be broadcasted.

Callback to publish the disconnected message in the channel. Receives a pid in case the message shouldn't be broadcasted.

Callback to publish a message in a channel with some metadata.

Callback to define the subscription method. Receives the channel.

Callback to define the unsubscription method. Receives the channel.

Functions

Generic connected message sender to a channel. Optionally receives the pid of the specific subscriber.

Generic disconnected message sender to a channel. Optionally receives the pid of the specific subscriber.

Generic publish message in a channel with some optional metadata.

Generic subscription in a channel.

Transforms name of the channel to a binary.

Generic unsubscriptions in a channel.

Link to this section Callbacks

Specs

connected(channel :: Yggdrasil.Channel.t(), pid :: atom() | pid()) ::
  :ok | {:error, term()}

Callback to publish the connected message in the channel. Receives a pid in case the message shouldn't be broadcasted.

Link to this callback

disconnected(channel, pid)

View Source

Specs

disconnected(channel :: Yggdrasil.Channel.t(), pid :: atom() | pid()) ::
  :ok | {:error, term()}

Callback to publish the disconnected message in the channel. Receives a pid in case the message shouldn't be broadcasted.

Link to this callback

publish( channel, message, metadata )

View Source

Specs

publish(
  channel :: Yggdrasil.Channel.t(),
  message :: term(),
  metadata :: term()
) :: :ok | {:error, term()}

Callback to publish a message in a channel with some metadata.

Specs

subscribe(channel :: Yggdrasil.Channel.t()) :: :ok | {:error, term()}

Callback to define the subscription method. Receives the channel.

Specs

unsubscribe(channel :: Yggdrasil.Channel.t()) :: :ok | {:error, term()}

Callback to define the unsubscription method. Receives the channel.

Link to this section Functions

Link to this macro

__using__(options)

View Source (macro)

Macro for using Yggdrasil.Backend.

The following are the available options:

  • :name - Name of the backend. Must be an atom.
Link to this function

connected(channel, pid \\ nil)

View Source

Specs

connected(Yggdrasil.Channel.t(), nil | pid()) :: :ok | {:error, term()}

Generic connected message sender to a channel. Optionally receives the pid of the specific subscriber.

Link to this function

disconnected(channel, pid \\ nil)

View Source

Specs

disconnected(Yggdrasil.Channel.t(), nil | pid()) :: :ok | {:error, term()}

Generic disconnected message sender to a channel. Optionally receives the pid of the specific subscriber.

Link to this function

publish(channel, message, metadata \\ nil)

View Source

Specs

publish(Yggdrasil.Channel.t(), term(), term()) :: :ok | {:error, term()}

Generic publish message in a channel with some optional metadata.

Specs

subscribe(Yggdrasil.Channel.t()) :: :ok | {:error, term()}

Generic subscription in a channel.

Specs

transform_name(Yggdrasil.Channel.t()) :: binary()

Transforms name of the channel to a binary.

Specs

unsubscribe(Yggdrasil.Channel.t()) :: :ok | {:error, term()}

Generic unsubscriptions in a channel.