Event

Events are values (commonly struct or map) we listen and dispatch.

Listen Events

Cizen.Dispatcher.listen(
  Pattern.new(%PushMessage{})
)

See Cizen.Pattern for details.

Dispatch by Dispatcher

Cizen.Dispatcher.dispatch(
  %PushMessage{to: "user A"}
)

Dispatch by Dispatch Effect

use Cizen.Effectful
use Cizen.Effects

handle fn ->
  dispatched_event = perform %Dispatch{
    body: %PushMessage{to: "user A"}
  }
end