hub v0.4.1 Hub

Pub-sub hub

Subscription is done with a pattern.

Example:

Hub.subscribe(“global”, %{count: count} when count > 42) Hub.publish(“global”, %{count: 45, message: “You rock!”})

Link to this section Summary

Functions

Publishes the term to all subscribers that matches it Returns the number of subscribers that got the message

Convenience macro for subscribing without the need to unquote the pattern

Subscribes to the quoted pattern in the given channel

Gets a list of all subscribers to a channel

Unsubscribes using the reference returned on subscribe

Link to this section Types

Link to this type channel()
channel() :: String.t()
Link to this type count()
count() :: pos_integer() | :infinity
Link to this type pattern()
pattern() :: any()
Link to this type subscribe_option()
subscribe_option() :: {:pid, pid()} | {:count, count()} | {:multi, boolean()}
Link to this type subscribe_options()
subscribe_options() :: [subscribe_option()]

Link to this section Functions

Link to this function publish(channel, term)
publish(channel(), any()) :: non_neg_integer()

Publishes the term to all subscribers that matches it Returns the number of subscribers that got the message

Link to this macro subscribe(channel, pattern, options \\ []) (macro)

Convenience macro for subscribing without the need to unquote the pattern.

example:

Hub.subscribe(“global”, %{count: count} when count > 42)

Link to this function subscribe_quoted(channel, quoted_pattern, options \\ [])
subscribe_quoted(channel(), pattern(), subscribe_options()) ::
  {:ok, reference()} | {:error, reason :: String.t()}

Subscribes to the quoted pattern in the given channel

example:

Hub.subscribe(“global”, quote do: %{count: count} when count > 42)

Link to this function subscribers(channel)
subscribers(channel()) :: [Hub.Subscriber.t()]

Gets a list of all subscribers to a channel

Link to this function traverse_pin(term, bindings)
Link to this function unsubscribe(ref)
unsubscribe(reference()) :: :ok

Unsubscribes using the reference returned on subscribe