<div dir="ltr">Attila,<div><br></div><div>What libraries implement this already?  Could a supervisor do that or is that a bad paradigm?</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Nov 15, 2021 at 2:07 PM Attila Rajmund Nohl <<a href="mailto:attila.r.nohl@gmail.com">attila.r.nohl@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Joseph Lloyd <<a href="mailto:josarlo84@gmail.com" target="_blank">josarlo84@gmail.com</a>> ezt írta (időpont: 2021. nov. 15., H, 20:08):<br>
><br>
> I am new to Erlang and using mailing lists, so please forgive my poor etiquette, and feel free to correct me.<br>
><br>
> Background:<br>
> 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.<br>
><br>
> 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.<br>
><br>
> I implemented the handlers as gen_servers and created a handler_sup that will restart the handler processes whenever they go down.<br>
><br>
> Problem:<br>
> 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.<br>
><br>
> Question:<br>
> 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?<br>
<br>
One way is to have a process that monitors your workers and if it<br>
receives a DOWN signal, removes the corresponding entry from the ETS<br>
table. Of course, there are libraries that already implement this.<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature">Joseph Lloyd<br>(435) 764-0166<br><a href="mailto:josarlo84@gmail.com" target="_blank">josarlo84@gmail.com</a></div>