Um experimento usando a metaprogramação do elixir junto com genservers
- Criar módulos que representam eventos
- Criar um genserver capaz de receber requisições e discernir o módulo e o evento que é necessário chamar
- Persistir o resultado dos eventos em um banco de dados
- Criar um vigia de eventos que engatilha outros eventos
-
Clone o projeto
-
Crie o banco de dados:
mix setup
-
Rode com iex:
iex -S mix
-
Teste emitindo um evento:
MetaEvents.EventBroker.Client.emmit_event(%{ name: "Hello", payload: %{message: "Hello, my name is: "}, emmiter: "guilherme" })
- Crie um arquivo
./lib/meta_events/modules/meu_event.ex
- Adicione
@behaviour EventBehaviour
- Crie a sua função
call/2
(para mais informações use noiex
:b EventBehaviour
)
- Crie um arquivo
lib/meta_events/modules/meu_listener.ex
- Adicione
@behaviour ListenerBehaviour
- Crie as funções
call/1
elisten?/1
(para mais informações use noiex
:b ListenerBehaviour
)