Я хочу расширить gen_server
(создать gen_server_extra
) некоторыми дополнительными функциями. Требования:
- Процессы
gen_server_extra
должны вести себя как обычныеgen_server
. Например, они должны принимать вызовы черезgen_server:call
, интегрироваться с SASL, соответствовать дереву наблюдения OTC и т. Д. gen_server_extra
процессы должны иметь дополнительные функции, предоставляемыеgen_server_extra
. Это в основном означает, что некоторые сообщения будут обрабатыватьсяgen_server_extra
кодом без передачи их в модуль обратного вызова. Остальные сообщения передаются модулю обратного вызова как есть.gen_server_extra
функциональность требует своего собственного состояния, которое должно быть скрыто от модуля обратного вызова.
Как это сделать проще всего?