HomePhorge

Implemented a c-node

Description

Implemented a c-node

My first attempt was writing a threaded c-node server, but that
fails dramatically if it is connected to multiple nodes.

OS-Process separation might be the best way to go, also for scaling this
out, as the footprint of a c-node client is relatively small.

So for that reason, I wrote priv/cclient, and lib/myhtmlex/safe/cnode.ex.
The Myhtmlex.Safe.Cnode module is a gen server that allows the cclient
to be part of a supervision tree.

This is accomplished by issuing Node.monitor as soon as the cclient is
connected to our node. If cclient dies for some reason, a :nodedown
event will be trigger and brings down the GenServer.
Allowing a supervisor to restart the cclient.

There is quite some performance overhead when using the cclient, but
that was expected due to the message serialisation going on. Its not too
bad.

Details

Provenance
Lukas RiederAuthored on Aug 31 2017, 12:43 PM
Parents
R16:b760b16fff00: add build-test for hex package
Branches
Unknown
Tags
Unknown

Event Timeline