X3m System v0.4.7 X3m.System.Router View Source
Registers system wide services.
Each service/2
macro registers system-wide service and function with
documentation in module that uses
this module.
Service functions invoke function of the same name of specified module.
If result of that invocation is {:reply, %X3m.System.Message{}}
,
it sends message to message.reply_to
pid.
If result of invocation is :noreply
, nothing is sent to that pid.
In any case function returns :ok
.
Examples
Defining router
defmodule MyRouter do
use X3m.System.Router
@servicedoc false
service(:create_user, MessageHandler)
@servicedoc """
overridden!
"""
service(:get_user, MessageHandler)
service(:edit_user, MessageHandler)
end
Getting registered services
iex> MyRouter.registered_services()
[create_user: 1, get_user: 1, edit_user: 1]
Invoking service as a function
iex> :create_user |>
...> X3m.System.Message.new() |>
...> MyRouter.create_user()
:ok