Je souhaite étendre gen_server
(créer un gen_server_extra
) avec quelques fonctionnalités supplémentaires. Les exigences sont les suivantes:Erlang: extended gen_server
- Les processus
gen_server_extra
devraient se comporter comme ungen_server
régulier « s. Par exemple, ils doivent accepter les appels viagen_server:call
, intégrer avec SASL, ajustement arbre de surveillance de gré à gré, etc. - processus
gen_server_extra
devraient avoir une fonctionnalité supplémentaire, fournie pargen_server_extra
. Cela signifie que certains des messages seront traités par le codegen_server_extra
, sans les transmettre au module de rappel. Le reste des messages est transmis au module de rappel en l'état. La fonctionnalité nécessite son propre état qui doit être caché du module de rappel. Fonctionnalité
Quelle est l'approche la plus simple pour faire cela?
Oui, après quelques réflexions, je suis arrivé à la conception similaire. Le seul problème est beaucoup de code standard. –
Les comportements dans OTP ne sont pas vraiment extensibles, ce qui est compréhensible car cela aurait un impact sur les performances et la simplicité. –