zotonic_notifier (zotonic_notifier v1.0.0-rc.17)

Extension system using notifications with fold, map and priorities.

Summary

Functions

Unsubscribe an owner from an event

Unsubscribe an owner from an event

Detach all observers owned by the pid

Detach all observers owned by the pid

Return the result of the first observer returning something else than 'undefined'. Return 'undefined' if none.

Return the result of the first observer returning something else than 'undefined'. Return 'undefined' if none.

Return the list of all observers for a specific event

Call all observers, return a list of all return values.

Notify the first observer. Pids async, M:F sync.

Notify the first observer. Pids async, M:F sync.

Notify observers async. Start separate process for the notification.

Notify observers async. Start separate process for the notification.

Notify observers. Pids async, M:F sync.

Notify observers. Pids async, M:F sync.

Register an observer pid.

Register an observer with an owner pid.

Register an observer with the default notifier. Higher prio (lower nr) gets called earlier.

Register an observer. Higher prio (lower nr) gets called earlier.

Types

event/0

-type event() :: term().

notifier/0

-type notifier() :: atom() | pid().

observer/0

-type observer() :: pid() | {module(), atom()} | {module(), atom(), list()}.

Functions

await(Event)

-spec await(atom() | tuple()) ->
               {ok, tuple() | atom()} | {ok, {pid(), reference()}, tuple() | atom()} | {error, timeout}.

await(Event, Msg)

-spec await(term(), atom() | tuple()) ->
               {ok, tuple() | atom()} | {ok, {pid(), reference()}, tuple() | atom()} | {error, timeout}.

await(Event, Msg, Timeout)

-spec await(term(), atom() | tuple(), pos_integer()) ->
               {ok, tuple() | atom()} | {ok, {pid(), reference()}, tuple() | atom()} | {error, timeout}.

await(Notifier, Event, Msg, Timeout)

-spec await(notifier(), term(), atom() | tuple(), pos_integer()) ->
               {ok, tuple() | atom()} | {ok, {pid(), reference()}, tuple() | atom()} | {error, timeout}.

await_exact(Event, Msg)

-spec await_exact(event(), term()) ->
                     {ok, term()} | {ok, {pid(), reference()}, term()} | {error, timeout}.

await_exact(Event, Msg, Timeout)

-spec await_exact(event(), term(), pos_integer()) ->
                     {ok, term()} | {ok, {pid(), reference()}, term()} | {error, timeout}.

await_exact(Notifier, Event, Msg, Timeout)

-spec await_exact(notifier(), event(), term(), pos_integer()) ->
                     {ok, term()} | {ok, {pid(), reference()}, term()} | {error, timeout}.

detach(Event, OwnerPid)

-spec detach(event(), pid()) -> ok | {error, term()}.

Unsubscribe an owner from an event

detach(Notifier, Event, OwnerPid)

-spec detach(notifier(), event(), pid()) -> ok | {error, term()}.

Unsubscribe an owner from an event

detach_all(OwnerPid)

-spec detach_all(pid()) -> ok.

Detach all observers owned by the pid

detach_all(Notifier, OwnerPid)

-spec detach_all(notifier(), pid()) -> ok.

Detach all observers owned by the pid

first(Event, Msg, ContextArg)

-spec first(event(), term(), term()) -> term() | undefined.

Return the result of the first observer returning something else than 'undefined'. Return 'undefined' if none.

first(Notifier, Event, Msg, ContextArg)

-spec first(notifier(), event(), term(), term()) -> term() | undefined.

Return the result of the first observer returning something else than 'undefined'. Return 'undefined' if none.

foldl(Event, Msg, Value, ContextArg)

-spec foldl(event(), term(), term(), term()) -> term().

foldl(Notifier, Event, Msg, Value, ContextArg)

-spec foldl(notifier(), event(), term(), term(), term()) -> term().

foldr(Event, Msg, Value, ContextArg)

-spec foldr(event(), term(), term(), term()) -> term().

foldr(Notifier, Event, Msg, Value, ContextArg)

-spec foldr(notifier(), event(), term(), term(), term()) -> term().

get_observers(Event)

-spec get_observers(event()) -> list().

Return the list of all observers for a specific event

get_observers(Notifier, Event)

-spec get_observers(notifier(), event()) -> list().

map(Event, Msg, ContextArg)

-spec map(event(), term(), term()) -> [term()].

Call all observers, return a list of all return values.

map(Notifier, Event, Msg, ContextArg)

-spec map(notifier(), event(), term(), term()) -> [term()].

notify1(Event, Msg, ContextArg)

-spec notify1(event(), term(), term()) -> ok | {error, term()}.

Notify the first observer. Pids async, M:F sync.

notify1(Notifier, Event, Msg, ContextArg)

-spec notify1(notifier(), event(), term(), term()) -> ok | {error, term()}.

Notify the first observer. Pids async, M:F sync.

notify(Event, Msg, ContextArg)

-spec notify(event(), term(), term()) -> ok | {error, term()}.

Notify observers async. Start separate process for the notification.

notify(Notifier, Event, Msg, ContextArg)

-spec notify(notifier(), event(), term(), term()) -> ok | {error, term()}.

Notify observers async. Start separate process for the notification.

notify_sync(Event, Msg, ContextArg)

-spec notify_sync(event(), term(), term()) -> ok | {error, term()}.

Notify observers. Pids async, M:F sync.

notify_sync(Notifier, Event, Msg, ContextArg)

-spec notify_sync(notifier(), event(), term(), term()) -> ok | {error, term()}.

Notify observers. Pids async, M:F sync.

observe(Event, ObserverPid)

-spec observe(event(), pid()) -> ok | {error, term()}.

Register an observer pid.

observe(Event, Observer, OwnerPid)

-spec observe(event(), observer(), pid()) -> ok | {error, term()}.

Register an observer with an owner pid.

observe(Event, Observer, OwnerPid, Prio)

-spec observe(event(), observer(), pid(), integer()) -> ok | {error, term()}.

Register an observer with the default notifier. Higher prio (lower nr) gets called earlier.

observe(Notifier, Event, Observer, OwnerPid, Prio)

-spec observe(notifier(), event(), observer(), pid(), integer()) -> ok | {error, term()}.

Register an observer. Higher prio (lower nr) gets called earlier.

start()

start(StartType, StartArgs)

start_notifier(Name)

-spec start_notifier(atom()) -> {ok, pid()} | {error, term()}.

stop(State)

stop_notifier(Name)

-spec stop_notifier(atom()) -> ok | {error, term()}.