Module zotonic_notifier

Extension system using notifications with fold, map and priorities.

Copyright © 2017 Marc Worrell

Behaviours: application.

Authors: Marc Worrell (marc@worrell.nl).

Description

Extension system using notifications with fold, map and priorities.

Data Types

event()

event() = term()

notifier()

notifier() = atom() | pid()

observer()

observer() = pid() | {module(), atom()} | {module(), atom(), list()}

Function Index

await/1
await/2
await/3
await/4
await_exact/2
await_exact/3
await_exact/4
detach/2Unsubscribe an owner from an event.
detach/3Unsubscribe an owner from an event.
detach_all/1Detach all observers owned by the pid.
detach_all/2Detach all observers owned by the pid.
first/3Return the result of the first observer returning something else than 'undefined'.
first/4Return the result of the first observer returning something else than 'undefined'.
foldl/4
foldl/5
foldr/4
foldr/5
get_observers/1Return the list of all observers for a specific event.
get_observers/2
map/3Call all observers, return a list of all return values.
map/4
notify/3Notify observers async.
notify/4Notify observers async.
notify1/3Notify the first observer.
notify1/4Notify the first observer.
notify_sync/3Notify observers.
notify_sync/4Notify observers.
observe/2Register an observer pid.
observe/3Register an observer with an owner pid.
observe/4Register an observer with the default notifier.
observe/5Register an observer.
start/0
start/2
start_notifier/1
stop/1
stop_notifier/1

Function Details

await/1

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

await/2

await(Event::term(), Msg::atom() | tuple()) -> {ok, tuple() | atom()} | {ok, {pid(), reference()}, tuple() | atom()} | {error, timeout}

await/3

await(Event::term(), Msg::atom() | tuple(), Timeout::pos_integer()) -> {ok, tuple() | atom()} | {ok, {pid(), reference()}, tuple() | atom()} | {error, timeout}

await/4

await(Notifier::notifier(), Event::term(), Msg::atom() | tuple(), Timeout::pos_integer()) -> {ok, tuple() | atom()} | {ok, {pid(), reference()}, tuple() | atom()} | {error, timeout}

await_exact/2

await_exact(Event::event(), Msg::term()) -> {ok, term()} | {ok, {pid(), reference()}, term()} | {error, timeout}

await_exact/3

await_exact(Event::event(), Msg::term(), Timeout::pos_integer()) -> {ok, term()} | {ok, {pid(), reference()}, term()} | {error, timeout}

await_exact/4

await_exact(Notifier::notifier(), Event::event(), Msg::term(), Timeout::pos_integer()) -> {ok, term()} | {ok, {pid(), reference()}, term()} | {error, timeout}

detach/2

detach(Event::event(), OwnerPid::pid()) -> ok | {error, term()}

Unsubscribe an owner from an event

detach/3

detach(Notifier::notifier(), Event::event(), OwnerPid::pid()) -> ok | {error, term()}

Unsubscribe an owner from an event

detach_all/1

detach_all(OwnerPid::pid()) -> ok

Detach all observers owned by the pid

detach_all/2

detach_all(Notifier::notifier(), OwnerPid::pid()) -> ok

Detach all observers owned by the pid

first/3

first(Event::event(), Msg::term(), ContextArg::term()) -> term() | undefined

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

first/4

first(Notifier::notifier(), Event::event(), Msg::term(), ContextArg::term()) -> term() | undefined

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

foldl/4

foldl(Event::event(), Msg::term(), Value::term(), ContextArg::term()) -> term()

foldl/5

foldl(Notifier::notifier(), Event::event(), Msg::term(), Value::term(), ContextArg::term()) -> term()

foldr/4

foldr(Event::event(), Msg::term(), Value::term(), ContextArg::term()) -> term()

foldr/5

foldr(Notifier::notifier(), Event::event(), Msg::term(), Value::term(), ContextArg::term()) -> term()

get_observers/1

get_observers(Event::event()) -> list()

Return the list of all observers for a specific event

get_observers/2

get_observers(Notifier::notifier(), Event::event()) -> list()

map/3

map(Event::event(), Msg::term(), ContextArg::term()) -> [term()]

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

map/4

map(Notifier::notifier(), Event::event(), Msg::term(), ContextArg::term()) -> [term()]

notify/3

notify(Event::event(), Msg::term(), ContextArg::term()) -> ok | {error, term()}

Notify observers async. Start separate process for the notification.

notify/4

notify(Notifier::notifier(), Event::event(), Msg::term(), ContextArg::term()) -> ok | {error, term()}

Notify observers async. Start separate process for the notification.

notify1/3

notify1(Event::event(), Msg::term(), ContextArg::term()) -> ok | {error, term()}

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

notify1/4

notify1(Notifier::notifier(), Event::event(), Msg::term(), ContextArg::term()) -> ok | {error, term()}

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

notify_sync/3

notify_sync(Event::event(), Msg::term(), ContextArg::term()) -> ok | {error, term()}

Notify observers. Pids async, M:F sync.

notify_sync/4

notify_sync(Notifier::notifier(), Event::event(), Msg::term(), ContextArg::term()) -> ok | {error, term()}

Notify observers. Pids async, M:F sync.

observe/2

observe(Event::event(), ObserverPid::pid()) -> ok | {error, term()}

Register an observer pid.

observe/3

observe(Event::event(), Observer::observer(), OwnerPid::pid()) -> ok | {error, term()}

Register an observer with an owner pid.

observe/4

observe(Event::event(), Observer::observer(), OwnerPid::pid(), Prio::integer()) -> ok | {error, term()}

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

observe/5

observe(Notifier::notifier(), Event::event(), Observer::observer(), OwnerPid::pid(), Prio::integer()) -> ok | {error, term()}

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

start/0

start() -> any()

start/2

start(StartType, StartArgs) -> any()

start_notifier/1

start_notifier(Name::atom()) -> {ok, pid()} | {error, term()}

stop/1

stop(State) -> any()

stop_notifier/1

stop_notifier(Name::atom()) -> ok


Generated by EDoc