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