Sending Messages to Workers
Joseph Lloyd
josarlo84@REDACTED
Mon Nov 15 18:08:04 CET 2021
I am new to Erlang and using mailing lists, so please forgive my poor
etiquette, and feel free to correct me.
Background:
I am prototyping a simple application using Erlang. The application has a
manager that reads messages from a socket (UDP in this case) and then sends
the message (based on a destination byte) to a handler process. There is a
possibility of 2^n handler processes. The number is determined dynamically
at run time based on user input.
A handler process is created when the manager process receives a message to
create the handler. create/3 is part of the handler module's API and is
essentially a wrapper around handler_sup:start_child/2. When the manager
process receives a packet, it sends a message containing the packet to the
appropriate handler process. The manager process uses an ets table for
mapping destinations to handler pids.
I implemented the handlers as gen_servers and created a handler_sup that
will restart the handler processes whenever they go down.
Problem:
If a handler process goes down, the destination/pid mapping in the manager
module becomes invalid. The handler supervisor will generate a new
process, but the manager doesn't know the pid for the replacement process.
Question:
What is the proper way to design this in Erlang? Do I put the
destination/pid mapping in the handler_sup module and query that whenever
the manager wants to send the message? Or does that violate supervisors
only being supervisors paradigm?
Thanks in advance,
Joseph
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20211115/bb3220f2/attachment.htm>
More information about the erlang-questions
mailing list