The GenServer from hell (needs some refactoring)

Refactoring the stack with the functional core, imperative shell pattern was a really pleasant experience. We have now decided to build a prototype of one our products completely in Elixir, replacing:

  • multiple C and Cpp-modules
  • node.js/express
  • python
  • cron
  • systemd
  • homebrewn OTA-updater
  • MQTT,
  • openvpn (maybe)
  • couple of bash-scripts
  • … (I’m sure I’m missing some)

Right now I don’t see what we need besides Elixir, OTP, phoenix, nerves(hub), some C for hard-realtime stuff and a couple of lines in Go to talk to the cloud.

But I’d like to also try the

Do I understand correctly that’s just sth like

def layer_0_handle(packet) do
   packet = ...   
   layer_1_handle(packet)
end

def layer_1_handle(packet) do
   packet = ...   
   layer_2_handle(packet)
end

and so on?