gen_statem and simple_one_for_one supervisor

Stanislav Ledenev s.ledenev@REDACTED
Thu Nov 26 13:39:58 CET 2020


Oh, thank you very much!  'change_callback_module' action is relatively new
and I was not aware of it.

чт, 26 нояб. 2020 г. в 15:11, Hugo Mills <hugo@REDACTED>:

> On Thu, Nov 26, 2020 at 03:00:46PM +0300, Stanislav Ledenev wrote:
> > Hi,
> > In my application I have simple_one_for_one supervisor for handling
> incoming
> > external requests (HTTP). Each request has some command and its
> arguments.
> > Each command has its own workflow and that is why commands handler is
> > implemented as gen_statem. This gen_statem handles all commands and
> > I don't like that kind of a code mess inside of it.
> >
> > I have two thoughts in my mind about resolving this problem, but I don't
> > like
> > them either:
> > 1. Create multiple simple_one_for_one supervisors, one for each type of
> > command.
> >    I don't think that so many supervisors is a good idea;
> > 2. Create "general" gen_statem for supervisor and multiple handling
> modules
> >    which then be passed as arguments to supervisor's init.
> >    I don't like general over general and so on (yuck!).
> >
> > Is there any elegant way to solve this kind of a problem and keep this
> nice
> > pair of simple_one_for_one supervisor and gen_statem?
>
>    gen_statem can switch between callback modules, so you could have
> one which simply identifies which kind of command it's meant to be
> handling, and then switches to the appropriate callback module for
> that command, with the 'change_callback_module' action.
>
>    Hugo.
>
> --
> Hugo Mills             | If you're not part of the solution, you're part of
> hugo@REDACTED carfax.org.uk | the precipitate.
> http://carfax.org.uk/  |
> PGP: E2AB1DE4          |
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20201126/f5c4fd4a/attachment.htm>


More information about the erlang-questions mailing list