Long gen_server init question (not about order of messages :)

Stanislav Ledenev <[email protected]>
Newsgroups gmane.comp.lang.erlang.general
Message-ID <CAOkK=A+L9STy6LVCJ2wz=ONTvyOiwNRk3PhhR-TEce_0nvytOg@mail.gmail.com>
Hi!
Need advice from an experienced community about synchronizing long
initializing gen_server with other parts of application.

Let's say we have 4 gen_servers:
* mod_api       - accept requests;
* mod_func      - real job;
* mod_x, mod_y  - users of mod_func.

mod_api accepts requests and transforms them to calls to mod_x, mod_y.
mod_func is crucial for the application but it needs a time consuming
procedure
of initialization. IRL it is some cryptography related stuff.
While mod_func is in the initialization state, mod_api must return
'not_ready' for all requests.
While mod_func initializing it is not available for any requests.

I was thinking about options of notification mechanism implementation and
see two of them:
1. Some kind of polling from mod_api to mod_func with gen_server:call with
timeout: mod_api after initialization begin send_after loop with timeout
call to mod_func;
2. gen_event based solution. Run up gen_event and wait for notification
about readiness of mod_func.

Am I missing something? Are there any better solutions for such a task?
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.