yggdrasil v4.0.0 Yggdrasil.Backend behaviour View Source

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

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

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

Generic subscription in a channel

Generic unsubscriptions in a channel

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

Callback to define the subscription method. Receives the channel

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

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

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

Link to this function publish(channel, message) View Source
publish(Yggdrasil.Channel.t(), term()) :: :ok | {:error, term()}

Generic publish message in a channel.

Link to this function subscribe(channel) View Source
subscribe(Yggdrasil.Channel.t()) :: :ok | {:error, term()}

Generic subscription in a channel.

Link to this function unsubscribe(channel) View Source
unsubscribe(Yggdrasil.Channel.t()) :: :ok | {:error, term()}

Generic unsubscriptions in a channel.

Link to this section Callbacks

Link to this callback connected(channel, pid) View Source
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
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) View Source
publish(channel :: Yggdrasil.Channel.t(), message :: term()) ::
  :ok | {:error, term()}

Callback to publish a message in a channel.

Link to this callback subscribe(channel) View Source
subscribe(channel :: Yggdrasil.Channel.t()) :: :ok | {:error, term()}

Callback to define the subscription method. Receives the channel.

Link to this callback unsubscribe(channel) View Source
unsubscribe(channel :: Yggdrasil.Channel.t()) :: :ok | {:error, term()}

Callback to define the unsubscription method. Receives the channel.