Packages
event_bus
0.2.0
1.7.0
1.6.2
1.6.1
1.6.0
retired
1.5.2
retired
1.5.1
retired
1.5.0
retired
1.4.4
retired
1.4.3
retired
1.4.2
retired
1.4.1
retired
1.4.0
retired
1.3.8
retired
1.3.7
retired
1.3.6
retired
1.3.5
retired
1.3.4
retired
1.3.3
retired
1.3.2
retired
1.3.1
retired
1.3.0
retired
1.2.0
retired
1.1.3
retired
1.1.2
retired
1.1.1
retired
1.1.0
retired
1.0.0
retired
1.0.0-beta4
retired
1.0.0-beta3
retired
1.0.0-beta2
retired
1.0.0-beta1
retired
0.9.0
retired
0.8.0
retired
0.7.0
retired
0.6.1
retired
0.6.0
retired
0.5.0
retired
0.4.1
retired
0.4.0
retired
0.3.1
retired
0.3.0
retired
0.2.1
retired
0.2.0
retired
0.1.0
retired
Traceable, extendable and minimalist event bus implementation for Elixir with built-in event store and event watcher based on ETS
Retired package: Deprecated
Current section
Files
Jump to
Current section
Files
lib/event_bus.ex
defmodule EventBus do
@moduledoc """
Simple event bus implementation.
"""
alias EventBus.EventManager
alias EventBus.SubscriptionManager
@doc """
Send event to all listeners.
## Examples
EventBus.notify({:webhook_received, %{"message" => "Hi all!"}})
:ok
"""
@spec notify({:atom, any()}) :: :ok
def notify({_event_type, _event_data} = event) do
EventManager.notify(subscribers(), event)
end
@doc """
Subscribe to the bus.
## Examples
EventBus.subscribe(MyEventListener)
:ok
"""
@spec subscribe(any()) :: :ok
defdelegate subscribe(listener), to: SubscriptionManager, as: :subscribe
@doc """
Unsubscribe from the bus.
## Examples
EventBus.unsubscribe(MyEventListener)
:ok
"""
@spec unsubscribe(any()) :: :ok
defdelegate unsubscribe(listener), to: SubscriptionManager, as: :unsubscribe
@doc """
List the subscribers to the bus.
## Examples
EventBus.subscribers()
[MyEventListener]
"""
@spec subscribers() :: list(any())
defdelegate subscribers, to: SubscriptionManager, as: :subscribers
end